오케스트레이터 패턴

jihunnit·2023년 8월 29일
0

TIL

목록 보기
10/19

오케스트레이터 패턴은 MSA에서 자주 사용하는 패턴이다.

일반적인 모놀리식 아키텍쳐가 가지는, 낮은 확장성 문제를 해결하기 위해 오케스트레이터 패턴이 사용된다.

각각의 Microservice가 특정 도메인 혹은 비즈니스 로직을 담당한다.
(이름이 마이크로서비스지만 특별히 서비스의 규모는 관련이 없음)

이런 각자 담당하는 게 있는 Microservice들이 stateless하게 통신하며 비즈니스를 수행할 수 있게 도와주는
일종의 관리자 역할을 하는게 실행 오케스트레이터이다.

오케스트레이터 서비스는 직접 비즈니스 로직을 수행하지는 않지만, 여러 Microservice들을 관리하며 flow 상태를 유지 관리함

스캐터 - 개더 패턴과 비슷하다고 볼 수 있겠지만, 큰 차이점은
기본적으로 스캐터 - 개더처럼 병렬 수행이 아닌 단계적 수행
(물론 특정 단계가 병렬적으로 수행 될 수도 있음)

오케스트레이터를 두고 MSA를 구축할 시 장점

  • 개발이 빨라진다.(각 도메인마다 따로 배포 등..)
  • 코드 비용이 적게 든다.
  • 확장성이 증가한다.

오케스트레이터를 활용한 MSA의 단점 및 문제점

  • 오케스트레이터가 터지거나 연결이 끊기면 다른 오케스트레이터 인스턴스로 요청이 옮겨가야 함.
    근데 얘는 지금까지 비즈니스 로직이 수행된 context 모름
    -> 그러므로, 오케스트레이터 인스턴스 간 수행된 context를 저장할 DB가 필요함

  • 오케스트레이터에 비즈니스 로직을 넣을 수도 있으나, 이런 식으로 프로그램을 설계하면 모놀리식과 큰 차이가 없어짐. 그러므로 오케스트레이터의 영역을 신경써야 함

profile
인간은 노력하는 한 방황한다

0개의 댓글