MSA

개요Event Driven Architecture는 MSA에서 Producer가 여러 Consumer 서비스를 직접 호출해야 했던 구조에서 Event Broker 하나에만 이벤트를 전송하면 되는 구조로 개선했다는 것이 가장 큰 특징이다. 이로 인해 서비스가 느슨하게 결합(Loosely Coupled)되고, 결합도가 낮아진다. 다음 문단부터 정리할 EDA의 장단점은 이러한 EDA의 특징 때문에 생기는 것이라고 이해할 수 있다.장점확장성시스템에 부하가 증가할 때 Producer와 Consumer를 scale out(수평적 확장) 할 수 있다.Producer가 Counsumer를 직접 호출하지 않기 때문에 시스템을 크게 재설계하지 않아도 된다유연성새로운 이벤트나 처리 로직을 추가할 때 기존 컴포넌트에 미치는 ..
· MSA
개요이번 글의 주제는 Kafka, Pulsar와 같은 Event Streaming 플랫폼, 그리고 이를 소비하는 Flink에서 메세지를 주고받을 때 Serialization, Deserailization을 하는 이유를 알아보는 것입니다. Flink 예제 코드를 보면서 동작 과정을 분석할 때 정확히 알아야 겠다는 생각이 들어서 조사해 보았습니다.PulsarSource source = PulsarSource.builder() .setServiceUrl("pulsar://host.docker.internal:6650") .setTopics("order-topic") // Deserialization - 왜 할까? ..
· MSA
정의Saga Pattern은 분산 환경(MSA)에서 트랜잭션을 처리하는 데 사용되는 아키텍처 패턴이다.분산 트랜잭션을 서비스 간 트랜잭션으로 모방한다같은 서비스에서 하나의 DB에 동작하는 ACID 트랜잭션을 모방그러나 Isolation(독립성)은 달성할 수 없다각 서비스에서 트랜잭션을 실행하여 하나의 트랜잭션처럼 보이게 한다실패 시 보상 트랜잭션(Compensationg Transaction)을 수행하여 일관성을 유지한다.구현 방식Orchestration중앙 집중 관리중앙 서비스가 다른 서비스를 적절한 순서로 호출실패 시 중앙 서비스가 이미 호출한 서비스를 어떻게 보상할 지 알고 있다서비스 호출 후 응답을 기다린다응답을 기다리지 않는 비동기 통신으로 최적화 가능다른 서비스에 명령 전달ex) e커머스 주문..
정의시스템 컴포넌트 간의 통신을 위해 이벤트를 생성하고 감지하는 아키텍처이벤트: 무언가 발생한 것시스템의 상태 변화Event Notification으로 전달명령과 관련된 데이터를 포함할 수도 있고, 단지 무언가 발생했다는 알림일수도 있다불변(immutable) 이다⇒ Event Sourcing의 원천이 된다명령(Command): 다른 시스템에게 응답을 요청하는 것Event Sourcing데이터 변경 이벤트를 저장하고 시스템의 상태를 재구축하는 방식데이터 변경 히스토리 추적데이터 일관성 보장구성 요소Producer: 이벤트 생성Broker: 이벤트를 적절한 Consumer로 라우팅Consumer: 이벤트를 수신하고 처리이벤트 기반 아키텍처나 메세지 기반 아키텍처에서는 Publisher-Subscriber ..
· MSA
정의서비스 간 통신을 처리하는 소프트웨어 계층컨테이너화된 마이크로서비스로 구성서비스 간 연결을 관리하기 위해 모니터링, 로깅, 추적, 트래픽 제어 등 기능 제공마이크로서비스 수가 증가하여 서비스 성능 모니터링하기 어려워지는 문제 해결도입 이유애플리케이션 성능은 서비스 간 통신 속도와 탄력성에 따라 좌우된다. 그러나 MSA에서는 분산된 마이크로서비스를 모니터링하기 어렵다.서비스 레벨에서 모니터링많은 서비스가 연동하여 작동하는 방식을 이해하기 어려움ex) 다운스트림 및 업스트림 종속성서비스와 워크로드가 통신하는 방식을 더 잘 관찰서비스 레벨에서 제어서비스가 서로 통신하고 수행하는 작업을 제어서비스의 동작, 정책, 상호 작용에 대한 세밀한 제어 및 관리 기능ex) 규제를 준수하기 위한 보안 정책 적용이점분산 ..
· MSA
SOA (Service Oriented Architecture)정의개별 서비스에 초점을 맞춘 아키텍처 스타일Monolithic Design과 반대되는 개념서비스를 재사용하거나, 독립적인 여러 서비스를 결합하여 복잡한 태스크 수행ex) 사용자 인증 서비스를 생성해서 모든 애플리케이션에서 재사용특징데이터(DB) 공유ESB (Enterprise Service Bus)여러 서비스가 있는 시스템과 통신할 때 사용할 수 있는 소프트웨어기술과 관계 없이 서비스와 서비스 소비자 간의 통신을 설정데이터 모델 변환, 연결성/메시징 처리, 라우팅, 통신 프로토콜 변환요청을 각 서비스에 맞는 프로토콜로 변환각 서비스로의 연결을 한 포인트로 중앙 집증SOA vs MSASOA는 데이터 공유, MSA는 데이터 복제, 세분화SOA는..