익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
코레오그래피 패턴
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
코레오그래피 패턴(영어: Choreography Pattern)은 마이크로서비스 아키텍처에서 각 서비스가 이벤트 기반으로 독립적으로 작동하며 전체 흐름을 자율적으로 구성하는 설계 패턴이다. ==정의== 코레오그래피 패턴은 여러 서비스가 비동기 이벤트 기반으로 상호작용하면서 워크플로우의 흐름을 중앙에서 제어하지 않고, 각 서비스가 자신의 책임을 수행하고 다음 서비스를 트리거하는 방식으로 설계되는 구조이다. 다시 말해, 주문-재고-배송 등의 단계가 있을 때 각 단계의 서비스가 해당 이벤트를 받고 처리한 뒤 다음 이벤트를 발행하여 흐름을 이어가는 형태다. ==주요 구성 요소 및 작동 방식== *서비스(Service): 각 기능 단위로 독립적으로 존재하며, 자신의 로직을 수행한다. *이벤트(Event): 서비스 간에 흐름을 연결하는 메시지이며 보통 메시지 브로커나 이벤트 버스를 통해 전달된다. *구독(Subscribe) / 발행(Publish): 서비스는 자신이 관심 있는 이벤트를 구독하고, 처리 완료나 상태 변화 시 다음 이벤트를 발행한다. *흐름(Workflow): 중앙 오케스트레이터가 흐름을 제어하지 않고, 각 서비스가 자신의 조건과 이벤트에 따라 다음 단계로 흐름을 이어간다. ==장점== *서비스 간 느슨한 결합(loose coupling)이 가능하다. 중앙관리자가 없으므로 서비스 추가/삭제가 비교적 자유롭다. *비동기 통신이 기본이므로 시스템 확장성이 높고, 다양한 흐름을 유연히 처리할 수 있다. *중앙 오케스트레이터로 인한 단일 실패점(Single Point of Failure)이 제거되거나 감소한다. ==단점 및 고려사항== *전체 시스템 흐름을 추적하기 어렵다(traceability, observability). 어느 서비스가 어떤 이벤트를 발생시켰는지 파악하기가 복잡해질 수 있다. *서비스 수가 많아지면 테스트, 통합, 디버깅 복잡도가 급격히 증가한다. *이벤트 기반 설계이므로 메시지 중복, 순서 보장, 실패 보상(보상 트랜잭션이나 롤백) 등의 문제에 주의해야 한다. ==적용 가능한 상황 및 예시== ===적용에 적합한 경우=== *여러 독립 서비스가 있으며, 각 서비스가 자신의 역할을 수행하고 결과를 이벤트로 알려 다음 단계로 이어지는 워크플로우가 존재할 때. *흐름이 비교적 단순하고, 중앙관리자 없이 분산형 방식으로 확장하고자 할 때. ===예시=== 온라인 쇼핑몰 시스템에서: #주문 서비스가 “주문 생성됨” 이벤트를 발행한다. #재고 서비스가 해당 이벤트를 구독하고 재고를 확인한 뒤 “재고 확보됨” 이벤트 또는 “재고 부족” 이벤트를 발행한다. #배송 서비스가 “재고 확보됨” 이벤트를 받아 배송 프로세스를 시작한다. 이와 같이 각 서비스가 흐름을 직접 관리하고 이벤트 기반으로 이어가는 방식이 코레오그래피 패턴이다. ==오케스트레이션 패턴과의 비교== {| class="wikitable" !항목!!코레오그래피 패턴!!오케스트레이션 패턴 |- |흐름 제어 위치||분산된 각 서비스 내부||중앙 오케스트레이터 존재 |- |결합도||낮음 (느슨한 결합)||상대적으로 높음 (중앙 제어) |- |확장성||높음||서비스 추가/변경 시 중앙 로직 변화 가능성 있음 |- |흐름 추적성||어려움||중앙에서 관리하므로 상대적으로 용이 |} ==주의 사항 및 설계 팁== *이벤트 설계 시 이벤트 명칭, 의미, 상태 변화 등을 명확히 해야 한다. *메시지 브로커(예: Kafka, RabbitMQ 등)를 활용해 이벤트 유실이나 순서 문제 등에 대비해야 한다. *로그나 추적(Tracing) 시스템을 구축해 분산 흐름에서 어디서 문제가 생기는지 파악할 수 있어야 한다. *서비스가 실패했을 때의 보상 트랜잭션(compensation transaction) 설계도 검토해야 한다. *흐름이 너무 복잡하거나 서비스 간 의존 관계가 많아질 경우 오케스트레이션 패턴이 더 적합할 수도 있다. ==결론== 코레오그래피 패턴은 복잡한 중앙관리 없이 마이크로서비스끼리 자율적으로 이벤트 기반 흐름을 만들어가는 방식으로, 느슨한 결합과 확장성 측면에서 유리하다. 다만 전체 흐름의 가시성, 디버깅, 서비스 복잡성 증가 등의 단점이 있으므로 설계 초기부터 흐름 설계, 이벤트 명세, 모니터링/로깅 등을 꼼꼼히 준비하는 것이 중요하다. ==같이 보기== *[[마이크로서비스 아키텍처]] *[[오케스트레이션 패턴]] *[[이벤트 기반 아키텍처]] *[[SAGA 패턴]] *[[분산 시스템 설계]] ==참고 문헌== *Microsoft. Choreography pattern. Azure Architecture Center. *AWS. Saga Choreography pattern. AWS Prescriptive Guidance. ==각주== [[분류:소프트웨어 공학]]
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록