ETC33 [Transactional Outbox] CDC 기반의 transaction log tailing 구현 [Transactional Outbox] 개요 에서는 Transactional Outbox pattern에 대한 이론적인 부분을 살펴보았다.이번 포스팅에서는 실제로 CDC를 사용하여 transaction log tailing 방식을 구현하는 예제에 대해 살펴보도록 하겠다. (전체 코드는 여기에서 확인할 수 있다) 개요다음과 같은 아키텍처의 Transactional Outbox pattern을 구현한다. 동일한 transaction 내에서 서비스 데이터 업데이트와 도메인 이벤트 데이터 저장을 한다.CDC를 통해 DB에 도메인 이벤트 데이터가 추가되었음을 감지하고, '데이터 추가됨 이벤트'를 Kafka topic으로 발행한다.2 에서의 '데이터 추가됨 이벤트' message를 가져온 다음, 이를 도메인 이벤.. 2024. 11. 25. [Transactional Outbox] 개요 꼭 MSA가 아니더라도 개발팀의 규모에 따라 API 서버가 도메인/서비스 별로 분리되어 개발되는 경우가 있다.이때 하나의 서비스에서 이벤트 발생 시 다른 서비스에서도 특정 처리가 필요한 상황이 발생하곤 한다. 예를 들어 '게시판 기반 커뮤니티' 앱에서 '회원 서비스'와 '게시판 서비스'가 분리되어 있는 경우,회원 탈퇴 시 해당 회원의 게시물을 삭제/숨김 처리해야하는 경우가 있다.단순한 개발을 위해 직접적으로 '회원 서비스'가 '게시판 서비스'로 직접 호출을 할 수 있다. 이때 만약 어떤 이유로 인해 '회원 서비스'에서 '게시판 서비스'로 호출을 실패하거나 '게시판 서비스' 호출을 성공하였으나 그 이후 작업에서 오류가 발생하는 경우가 발생할 수도 있다.('게시판 서비스'에서만 데이터가 처리되었고 '회원 서.. 2024. 11. 25. 대기열 시스템 커머스 서비스에서는 이벤트로 인해 짧은 시간에 급격하게 올라가는 트래픽에 대응하기 위해서 대기열 시스템을 적극적으로 활용하고 있다. 대기열 시스템의 실제 구현은 서비스의 요구사항, 트래픽 수준 등에 따라 천차만별이다.이번 포스팅에서는 가상의 요구사항을 제시하고 이를 만족하는 대기열 시스템을 구현해보도록 하겠다. (Fastify 기반의 대기열 시스템 API 예제는 여기에서 확인할 수 있다) 요구 사항이벤트 상품 주문 페이지의 트래픽을 조절할 수 있는 대기열 시스템을 구현한다. 이 시스템의 기능적 요구 사항은 아래와 같다.대기열 시스템은 대기와 입장만 관리하고 입장 이후는 관리하지 않는다.대기열 시스템은 이벤트 상품 주문 페이지에 5초 당 10명의 사용자를 입장시킨다.사용자가 대기할 필요가 없는 경우 바로.. 2024. 11. 12. CodeGPT로 IntelliJ에서 Ollama LLM 사용하기 LLM은 업무의 방식을 바꿔놓은지 오래 되었다.내가 하고 있는 작업에 대해 의견을 물어보면서 업무의 도우미 역할도 해주고, 새로운 기술을 배울 때에도 구글 검색보다도 더 편리하고 빠르게 예제를 보여준다.또한 LLM을 통해 코딩 업무를 직접적으로 도움 받을 수 있는 서비스 또한 여럿 나왔는데, 대표적으로 Github의 Copilot과 Jetbrains의 AI Assistant가 있다. 하지만 보안 상의 이유로 외부 LLM을 사용하기 힘든 경우가 있을 수 있는데, 이때 local LLM을 사용하여 LLM의 도움을 받을 수 있다. 이번 포스팅에서는 IntelliJ의 CodeGPT plugin을 사용하여 Ollama 환경에서 설치한 local LLM을 통해 copilot 기능을 활용하는 방법에 대해 알아보도록 .. 2024. 9. 11. Dijkstra 알고리즘 문제 유형 Dijkstra 알고리즘은 최단 경로를 찾기 위한 알고리즘으로써, 특정 노드에서 다른 노드로의 최단 경로를 찾는 문제에서 사용된다.(모든 노드에서 다른 노드로의 최단 경로를 찾기 위해서는 Floyd Warshall 알고리즘을 사용해야한다) 이번 포스팅에서는 Dijkstra 알고리즘을 활용하는 문제의 유형에 대해 알아보도록 하겠다.(참고: Dijkstra 알고리즘 자체에 대해서는 다루지 않는다)모든 노드로의 최소 경로 찾기Network Delay TimeDijkstra 알고리즘 문제 중 가장 기본적인 유형으로, 이 문제를 풀기 위해서는 시작 노드에서 모든 노드로의 최단 경로를 알아야 한다. 추가적으로 이 문제에서는 모든 노드가 연결되지 않은 경우에 대해서도 다루고 있다.이는 각 노드로의 최소 거리를 확인하.. 2024. 5. 30. 엔지니어링 팀을 위한 Slack 테크 뉴스 피드 셋업 업무를 하면서 가끔 좋은 개발 아티클을 발견하면 엔지니어링 팀 메신저에 아티클을 공유하곤 한다. 그 아티클이 현재 회사에서 관심이 가는 기술이나 인사이트를 주는 글이라면 관련된 주제에 대해 논의의 장이 열리곤 한다. 이러한 공유는 분명 팀 내 커뮤니케이션 활성 및 좋은 개발자 경험, DX(Developer Experience)에도 도움이 된다고 생각한다. 하지만 매번 새로운 아티클이 올라왔는지 확인하고 공유하는 일은 꽤나 번거롭기도 하고 블로그 목록을 관리하는 것도 쉽지 않다. 이번 포스팅에서는 Slack 메신저에서 테크 뉴스 피드를 셋업하는 방법에 대해 알아보도록 하겠다. 이를 통해서 다양한 블로그나 사이트의 새로운 아티클을 Slack으로 받아볼 수 있다. GeekNews Slack bot GeekN.. 2024. 3. 4. 이전 1 2 3 4 ··· 6 다음