MSA 소프트웨어 아키텍처를 설계하면서 생긴 "데이터 쿼리"의 어려움을 해결하기 위한 패턴으로 모놀리식 아키텍처에서는 한개의 DB에서 Table간 Join을 통해 처리가 가능했지만 MSA에서는 각 서비스 별로 다른 DB를 사용하기에 Query로 Join을 사용하기에 어려움이 있다. 따라서 이를 해결하기 위해 API Aggregation, CQRS 2가지의 패턴을 사용한다.
여러 서비스로부터 정보를 모아서 하나의 응답으로 제공해주는 패턴입니다.
Command(Write, Update, Delete) 작업과, Query(Read) 작업의 Endpoint를 분리하고 Command에서 발생된 데이터의 변경을 이벤트 발행을 통해 원하는 포맷대로 Query를 위한 전용 데이터 구조를 만들어 이곳에서 복잡한 Query를 담당
장점
단점
MSA 소프트웨어 아키텍처를 설계하면서 생긴 로깅, 모니터링의 어려움(가시성의 부재)을 해결하기 위한 패턴
가시성이란?
각각의 마이크로서비스가 자체적으로 운영 상태, 성능, 로그, 모니터링 등에 대한 정보를 외부로 노출하고 관리할 수 있는 능력을 가리킵니다. 이는 각각의 마이크로서비스가 독립적으로 운영될 수 있고, 문제가 발생했을 때 빠르게 대응할 수 있도록 해줍니다. 이를 위해 로깅, 분산 추적, 모니터링 등의 기술이 활용되며, 이를 통해 전체 시스템의 건강 상태를 파악하고 문제를 해결할 수 있게 됩니다.
MSA 소프트웨어 아키텍처를 설계하면서, 분리/분해로 인해 떨어진 신뢰성을 해결하기 위한 패턴
장애 복구, 자가 치유, 무정지 배포 등을 구현하기 위한 패턴들이 이에 속합니다.
서비스 간의 통신에서 발생할 수 있는 장애를 처리하는 패턴으로, 장애가 발생한 서비스에 대한 요청을 중단시키고, 일정 시간 이후에 다시 시도하여 전체 시스템에 더 큰 영향을 막습니다.
예를 들어, A -> B -> C처럼 통신을 하고 있을때 C에서 문제가 발생하여 B에 응답을 500 상태를 주었을 경우, 서킷 브레이커를 사용하지 않는다면 또다른 A1이 B를 요청할때 오류가 발생함 따라서, C에서 B로 500상태 응답을 주었을때 서킷 브레이커를 통해 B에서는 C와의 연결상태를 막고 A1에게는 200상태와 함께 C와의 오류가 발생했다는 메세지를 전송해줌
네트워크 통신 등에서 발생할 수 있는 일시적인 장애에 대응하기 위해 요청을 다시 시도하는 패턴으로, 일시적인 문제가 해결될 수 있도록 여러 번의 재시도를 통해 안정성을 높입니다.