Microservice 3

# 마이크로 서비스 통신 설계

마이크로서비스에서 각 서비스들을 호출하기 위한 여러가지 통신 방법이과 고려해야 될 사항들이 있다. RPC 선택시 고려 사항 API에 대한 RPC 메커니즘을 선택하기 전에 서비스와 클라이언트 간의 상호 작용 스타일을 고려하는 것이 좋다. 상호 작용이 일대일인지 일대다인지 여부 상호 작용이 동기식인지 비동기식인지 여부 One-way notifications: 클라이언트가 서비스에 요청을 보내지만 응답을 기대하지 않는 방식 메시지 형식 1. 텍스트 형식 JSON or XML은 가장 많이 사용되는 텍스트 기반 형식이다. 👍장점 사람이 읽을 수 있다. 👎단점 메시지가 장황하다. 텍스트 구문 분석과 관련된 오버헤드가 존재한다. 2. 바이너리 형식 Thrift, Protocol Buffers(Protobuf) 및 A..

Microservice/Design 2022.05.19

# 마이크로 서비스 데이터 설계

서비스당 데이터베이스 이점 각 서비스 간 느슨한 결합으로 의존성을 낮추고 서비스 특성에 맞는 데이터베이스를 자유롭게 선택 가능하다. 문제점 및 해결방법 여러 데이터베이스를 통해 조인해야 하는 쿼리 이벤트 소싱 API 구성 CQRS(명령/조회 책임 분리) 여러 데이터베이스에 걸친 트랜잭션 사가현 패턴 1-1. 이벤트 소싱 (Event Sourcing) 이벤트 소싱이란, 이벤트를 위주로 비즈니스 로직을 구현하고, 애그리거트를 event store에 저장하는 것을 의미한다. ✅ 애그리거트: DDD에 기반한 설계에서 하나의 도메인에서 필요한 객체들을 하나의 군집으로 묶은 것 데이터를 가진 서비스가 직접 데이터를 조작하게 하지 않고, 서비스는 이벤트를 발생시키고 해당 이벤트는 event store에 저장만 한다...

Microservice/Design 2022.05.19

# 마이크로 서비스 설계 원칙

1. 비즈니스 도메인을 중심으로 모델링 도메인 기반 설계를 통해 더욱 안정된 서비스를 구축하고 다양한 사용자 인터페이스에 대해 보다 쉽게 각 서비스들을 재결합 할 수 있다. 2. 자동화 문화 많은 수의 마이크로서비스의 복잡성을 관리하려면 자동화가 필수적이다. CI/CD 빌드 파이프라인 단계에서의 SIT(System Integration Testing) & UAT(User Acceptance Testing) 테스트 프로비저닝, OS 구성, 서비스 이미지 생성 등 3. 구현 세부 정보 숨기기 서비스가 독립적으로 변경되고 진화할 수 있도록 각 서비스의 구현 세부 정보를 숨겨야 한다. 필요한 정보는 DB에 직접 접근하는 것이 아닌 각 서비스 API를 통해서 얻어야 한다. 4. 모든 것을 분권화하기 각 서비스는 ..

Microservice/Design 2022.05.19