DevOps 썸네일형 리스트형 [Redis] RDB 저장 에러 (MISCONF Redis is configured to save RDB snapshots) - 컴도리돌이 레디스를 세션 캐시로 사용하던 중 로그인도 안되고, 새로운 키 등록도 되지 않는 이상한 문제가 발생했습니다. 🙃로그를 확인해 보니 다음과 같은 에러가 떴네요.MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk.Commands that may modify the data set are disabled. Please check Redis logs for details about the error 레디스가 RDB 스냅샷을 저장하도록 설정되어 있지만, 디스크에 데이터를 저장할 수 없는 상황이라는 의미였어요. 즉, 데이터 저장이 불가능하니 키 등록과 세션 캐시 저장이 막힌 것이에요.🤔 레디.. 더보기 [GitHub] GitHub Actions로 Spring Boot 애플리케이션을 AWS EC2에 배포하기 - 컴도리돌이 이번 글에서는 GitHub Actions를 사용하여 Spring Boot 애플리케이션을 AWS EC2에 배포하는 과정을 자동화한 경험을 공유하고자 합니다. main 브랜치에 push가 발생하면 자동으로 실행되는 워크플로우는 어떻게 구성되어 있을까요? 전체 과정은 코드 체크아웃, Java 환경 설정, 환경 변수 복원, AWS 인증 및 보안 설정, Gradle 빌드, JAR 파일 전송, 그리고 EC2에서 애플리케이션 실행으로 이루어져 있습니다. GitHub Actions가 실행되면 가장 먼저 수행되는 작업은 무엇일까요? 바로 저장소의 코드를 가져오는 것입니다. 이를 위해 actions/checkout@v3를 사용하여 최신 버전의 코드를 runner 환경으로 다운로드합니다.steps: - name: Chec.. 더보기 [Logstash] Logstash를 활용한 PostgreSQL 데이터 Elasticsearch에 Bulk Insert 작업 설정 - 컴도리돌이 운영 환경에서 PostgreSQL 데이터를 Elasticsearch로 전송하는 과정에서 Bulk Insert 작업이 어떻게 이루어지는지 궁금할 때가 있습니다. 데이터는 정상적으로 조회되지만 정작 인스턴스 내부에서는 명확한 실행 스크립트나 배치 파일이 보이지 않더라고요.🤔이러한 경우, 데이터가 어떤 방식으로 처리되는지 파악하는 것이 중요하기 때문에 이번 기회에 로그스태시에서 기존 DB에 있는 데이터를 Elasticsearch에 대량 추가하는 방법을 알아보려고 합니다. 우선, /etc/logstach/conf.d/ 디렉터리를 확인하는 것이 가장 먼저 해야 할 일입니다. 로그스태시는 데이터를 수집하고 변환한 후 Elasticsearch로 전달하는 역할을 합니다. 이 디렉터리 내 .conf 파일을 살펴보면,.. 더보기 [Mybatis] WHERE 1= 1 사용 대신 trim으로 해결하기 - 컴도리돌이 MyBatis에서 동적 SQL을 작성할 때 흔히 WHERE 1=1 패턴을 사용하는 경우가 많아요. 여러 조건을 동적으로 추가해야 할 때 처음부터 WHERE 절을 넣어두고, 뒤에 AND 또는 OR 조건을 추가하는 방식이죠. 하지만 이 방식은 SQL 가독성을 해치고, 불필요한 연산이 발생할 가능성이 있어요. 이를 해결하기 위해 MyBatis에서는 태그를 제공하며, 이를 활용하면 불필요한 AND 또는 OR을 자동으로 제거하면서도 깔끔한 SQL을 생성할 수 있어요.1. WHERE 절에서 trim 활용하기기본적으로 태그는 prefix, suffix, prefixOverrides, suffixOverrides 속성을 사용하여 특정 키워드를 동적으로 추가하거나 제거하는 기능을 제공해요. 예를 들어, 아래 코드처럼.. 더보기 [Elasticsearch] Elasticsearch를 활용한 특정 행정구역 내 데이터 집계하기 (feat. java) - 컴도리돌이 [PostgreSQL] PostGIS 설치 및 사용 - 컴도리돌이주어진 좌표가 어떤 행정구역에 포함되는지 알아야 하는 상황이 생겼습니다. 여러 방법이 있지만 그중에서 PostgreSQL에 있는 확장 라이브러리인 PostGIS가 속도 및 정확성에 성능이 매우 뛰어난다comdolidol-i.tistory.com [PostgreSQL] PostGIS 성능 비교: GEOMETRY vs TEXT 저장 방식, 얼마나 차이 날까? - 컴도리돌이회사에서 PostGIS 도입을 고민하면서, 어떤 이슈가 발생할지 모르기 때문에 행정구역 경계 값을 TEXT로 처리하여 JSON 형태로 변환 후 Elasticsearch의 geo-bounding box query로 조회하는 방안을 계획했습니다comdolidol-i.tistory... 더보기 [Docker] Docker로 Kafka 구성하기 - 컴도리돌이 이전 포스팅에서 Kafka에 대한 이론을 짧게 다뤘습니다. 기존에 설치된 Kafka를 사용해서 Spring boot에서도 연결했지만, 이번에는 도커에서 카프카를 설정하는 방법에 대해 공부하려고 합니다. Kafka 이론에 대해 적은 포스팅은 아래에 첨부해 놨습니다. [Kafka] Apache Kafka에 대해서 알아보기 - 컴도리돌이아파치 카프카는 마이크로서비스와 같은 현대적인 아키텍처에서 매우 유용하게 활용되는 오픈소스 메시지 스트리밍 플랫폼입니다. 현재 여러 IT 서비스와 플랫폼에서 표준처럼 사용되고 있지comdolidol-i.tistory.com Kafka는 메시지 브로커로, 대규모의 데이터를 처리하는 데 최적화되어 있으며, Zookeeper가 이를 지원합니다. Zookeeper는 Kafka의 클러스.. 더보기 [Redis] Redis 클러스터, 스프링 부트에서 설정하기- 컴도리돌이 Redis 클러스터는 데이터를 여러 노드에 분산 저장하여 확장성과 가용성을 높입니다. 이를 위해 Redis는 키를 해시 슬롯으로 매핑하고, 총 16.384개의 해시 슬롯을 노드들에 분배하죠. 클라이언트는 키의 해시 값에 따라 해당 슬롯을 처리하는 노드를 찾아가는데, 클러스터 재구성이나 노드 장애 시 MOVED 오류가 발생할 수 있어요. 이 경우, 클라이언트는 Redis로부터 새로운 노드 정보를 받고 재요청을 처리하게 됩니다. Redis 클러스터 설정은 이전 포스팅에서 확인할 수 있습니다. 😆 Spring Boot 환경에서 Redis 클러스터를 구성하려면 먼저 application.yml에 클러스터 노드 정보를 설정해야 해요. spring: redis: cluster: nodes: .. 더보기 [Docker] Docker로 Redis 클러스터 구성하기 - 컴도리돌이 Redis 클러스터를 로컬에서 실행하기 위해 Docker를 설치하는 것이 첫 단계예요. Dcoker가 설치되어 있지 않다면 Docker 공식 사이트를 방문하여 설치한 뒤, 실행 가능한 상태인지 확인합니다. 설치가 완료되면 Redis 이미지를 내려받아야 해요. Redis의 최신 버전을 사용하려면 다음 명령어를 실행해야 합니다.docker pull redis:latest 먼저 Redis 클러스터를 구성하기 위한 기본 디렉터리 구조를 설정해야 해요.이를 위해 “redist-cluster”라는 각 노드의 클러스터 디렉터리를 만들고, 그 안에 서로 독립적으로 작동하는 node1, node2, node3이라는 디렉터리를 생성합니다.mkdir redis-clustercd redis-clustermkdir node1 .. 더보기 이전 1 2 3 4 5 다음