목록IT Paradigm/MSA (5)
잡동사니
메시지 큐 기반 분산 시스템에서 설계하기 (feat. 멱등성Idempotency)안녕하세요. yeTi입니다.현대의 클라우드 네이티브 환경에서는 시스템 간의 통신이 더욱 복잡해지고 있습니다. 특히 마이크로서비스 아키텍처의 도입으로 인해 서비스 간 메시지 교환이 폭발적으로 증가하고 있으며, 이에 따라 메시지 큐를 활용한 비동기 통신의 중요성이 커지고 있습니다.하지만 분산 환경에서의 비동기 통신은 여러 가지 도전 과제를 안고 있습니다. 네트워크 지연, 시스템 장애, 메시지 중복 전송 등 다양한 문제가 발생할 수 있으며, 이러한 상황에서도 시스템의 일관성과 신뢰성을 보장해야 합니다.이러한 문제를 해결하기 위한 핵심 개념 중 하나가 바로 멱등성(Idempotency)입니다. 오늘은 메시지 큐를 활용한 비동기 통신..
안녕하세요. yeTi입니다. 오늘은 MSA 의 거장, Chris Richardson 이 운영하는 Microservice Architecture 에서 제공하는 패턴 중 하나인 Self-contained service 패턴의 번역본을 생성하고자 합니다. ** 본 컨텐츠의 원본은 Chris Richardson 의 저작물인점을 참고해주세요. ** Context 온라인 음식 배달 애플리케이션인 FTGO 애플리케이션을 예로 들어보겠습니다. 애플리케이션의 클라이언트는 HTTP POST /orders 요청을 통해 주문을 생성하고 600ms 이내의 응답을 기대합니다. FTGO 애플리케이션은 마이크로서비스 아키텍처를 사용하기 때문에 주문 생성을 구현하는 책임이 여러 서비스에 흩어져 있습니다. POST 요청은 먼저 주문 서..
안녕하세요. yeTi입니다. 오늘은 1년간 MSA 적용기 에 이어서 MSA 를 하는 이유에 대한 생각을 공유해보고자 합니다. MSA의 시작 저는 2018년 AI플랫폼 이라는 것을 만들기 위한 연구소에 입사를 하게 됐고 이 때부터 제안서에 써져있는 MSA 라는 개념을 적용하기 위해 시작했습니다. MSA 는 어떻게 하는거지? 다짜고짜 MSA 를 하려니 뭐하나 명확한것이 없었습니다. 왜 MSA를 해야되는지부터 단위 서비스의 규모는 어느 정도 여야하는지, 나누는 기준은 무엇인지, 팀의 규모는 어느 정도여야 하는지, 우리 팀의 규모는 3명인데 개발은 어떻게 해야하는지, ... 스스로 정확히 정의를 하지 못하니 대외적으로 명확한 확신에 의한 설명이 불가능 했습니다. MSA 왜 해요? 개발활동의 목적은 저비용(돈, ..
안녕하세요. yeTi입니다. 업무환경에서 1년간 MSA에 대해 고민하고 적용해본 후기를 공유하고자 합니다. MSA란 MSA(Microservice Architecture)란, 개념 이해하기에 언급했듯이 MSA에 대해 다음과 같이 정의했습니다. 클라우드 인프라를 사용할 것 도메인별로 데이터를 나눌것 Devops를 적용할 것 서비스간 통신은 간결하게 할 것 실패를 위한 설계를 할 것 모니터링을 할 것 적용기 저를 포함한 3명의 팀원이서 위의 것을 모두 고려하기에는 한계가 있다고 판단하여 선별적으로 적용했습니다. Bare-metal에 Kubernetes를 활용하여 컨테이너화 관리편의상 DB인스턴스를 나눠서 관리하지 않는 대신 쿼리상 조인을 지양 간단한 Devops 적용 RestAPI와 Kafka를 활용하여 서..
안녕하세요. yeTi입니다. 오늘은 K-MOOC의 강좌인 Microservice 설계 및 구현을 듣고 내용을 정리한 것을 공유하고자 합니다. 강좌를 보고난 후 MSA를 하기 위한 설계적 방향성을 가질 수 있는 계기가 되었고, 어떠한 수준이 되어야 우리는 MSA를 하고 있다고 할 수 있는지도 이해할 수 있는 계기가 되어 개인적으로 유익한 시간이었습니다. Microservice 개념과 특성 Biz민첩성과 아키텍처 요건 시스템이 비즈니스에 유연하게 대응하기 위해서는 새로운 서비스의 추가 및 변경이 용의해야하고 이벤트에 따른 트래픽의 증감에도 유연하게 대응해야 합니다. 이에 대응하기 위해서 하드웨어 수준에서는 클라우드 서비스를 활용하여 scale-up이나 scale-out을 유연하게 할 수 있는 기반을 마련하고..