DLQ(Dead Letter Queue)는 DLT(Dead Letter Topic)로도 불리며 소프트웨어 시스템에서 오류로 인해 Message Queue에서 처리할 수 없는 메시지를 임시로 저장하는 Queue 또는 Topic을 뜻합니다. DLQ는 왜 사용할까?Consumer가 메시지를 전달받아 외부 API를 호출한 뒤 결과를 저장한다고 가정해보겠습니다.이때 외부 API 제공사의 일시적인 장애나 네트워크 문제로 인해 메시지 처리 중 예외가 발생할 수 있습니다. 이러한 경우에는 일반적으로 Retry를 통해 문제를 해결할 수 있습니다.하지만 Retry를 모두 소진했는데도 처리하지 못한 메시지는 결국 별도의 처리가 필요하며, 이때 DLQ를 활용할 수 있습니다.DLQ를 사용하면 실패한 메시지를 별도로 보관하여 정..
전체 글
AWS Step Functions 란AWS Step Functions는 AWS Lambda 및 다양한 AWS 서비스를 연계해 분산 애플리케이션과 프로세스를 자동화할 수 있는 서버리스 오케스트레이션 서비스입니다. 워크플로를 상태 머신(State Machine) 기반의 이벤트 흐름으로 구성하며, 각 단계(State)를 통해 작업을 순차적으로 실행·관리할 수 있으며, 마이크로서비스 오케스트레이션, 데이터 파이프라인, 머신러닝 워크플로 구축 등에 활용됩니다.State에서 task를 수행하고, 결과를 다른 task로 전달할 수 있습니다.State Machine == Workflow 시각적 워크플로를 사용하여 워크플로를 빌드하고 편집할 수도 있으며, ASL이라고도 하는 Amazon States Language를 사..
AWS에는 SNS(Simple Notification Service)라는 서비스와 SQS(Simple Queue Service) 서비스가 존재합니다.메시지를 전달하거나 처리하는데 사용이 되는점에서 혼동할 수 있어 하나씩 살펴보겠습니다. 저희가 카프카나 rabbitmq를 통해서 메시지 처리를 하는것처럼 발행/구독(Pub/Sub)패턴, 메시지 큐(Queue) 패턴으로 사용될 수 있습니다.물론 rabbitMq에서 Exchange를 통해 발행/구독(Pub/Sub)패턴으로 처리할 수 있습니다. AWS SNS(Simple Notification Service)AWS SNS는 발행자(Publisher)에서 구독자(Subscriber)로 애플리케이션과 애플리케이션(A2A) 혹은 사용자간(A2P) 통신 모두를 위한 완전..
엘라스틱서치란?아파치의 루씬 라이브러리를 기반으로 만든 분산 검색 엔진으로 JSON 기반의 문서를 저장, 색인(index), 검색하기에 분산 NoSQL 스토리지의 성격도 가지고 있습니다.단순한 텍스트 매칭 검색이 아닌 전문 검색(full-text search)이 가능하며 다양한 종류의 검색 쿼리를 지원하며 역색인(Inverted Index)을 사용하여 검색속도도 매우 빠릅니다.다양한 애널라이저를 조합하여 여러 비즈니스 요구사항에 맞는 색인을 구성할 수 있고 형태소 분석도 가능합니다.분산 처리를 고려하여 설계되어 데이터를 여러 노드에 분산 저장하며 검색이나 집계 작업 등을 수행할 때도 분산처리를 지원합니다. 용어 이해하기우선 저희가 가장 잘 이해하고 있는 RDB와 비교하면 아키텍처가 아래 이미지와 같다고 ..
서비스가 성장하고 트래픽이 증가하면 RDB에서 Slow Query가 점진적으로 늘어날 수 있습니다. 그 원인 중 하나는 Lock 경합 증가입니다.예를 들어, SELECT ... FOR UPDATE 구문 사용 시 트랜잭션 범위가 길어지면 레코드 락이 유지되는 시간이 길어져 동시성이 저하될 수 있습니다.또한 UPDATE 쿼리 실행 시 적절한 인덱스가 존재하지 않으면, 인덱스를 통한 범위 검색이 아닌 Full Table Scan이 발생할 수 있습니다. 이 경우 InnoDB는 조건에 해당하는 레코드를 찾는 과정에서 불필요하게 많은 레코드를 탐색하게 되고, 결과적으로 광범위한 레코드 락이 발생하여 다른 트랜잭션의 대기를 유발할 수 있습니다. 운영 환경에서는 일반적으로 DDL 수행을 지양하지만, 장애 상황이나 긴급..