[CS] EDA 설계 (Event Driven Architecture)
2022. 4. 16. 17:33ㆍCS기초 (Computer Science)
반응형
1. Event Drive 주요 요소
1. Event
- 관찰 하기로 약속된 주요 사건
2. Producer
- 이벤트 감지와 생성
3. Consumer
- 이벤트를 소비하여 로직 처리
4. Event Bus
- Producer에서 Consumer로 이벤트 전달
2. Event Driven 제약 사항
- 이벤트는 발생한 사건에 대해 약속된 형식 사용
- 불변 (과거의 메시지를 변경할 수 없음)
- 발생한 사건에 대한 결과 상태 전달
- 생성자는 이벤트 처리 상태에 관여하지 않음
- 소비자는 이벤트 생성자에 관심 갖지 않음
3. EDA (Event Driven Architecture 구조와 동작 방식)
4. Event Driven Architecture 설계 시 고려 사항
- Loosely coupling
- Removing dependencies
- Non-blocking transcation
- Asynchronized callback
- Fallback / Retry
- Event logging
5. Event Driven Architecture 패턴
- Single Producer - Single Consumer (가장 단순한 개념이고, 일반적인 동기 서버 개념)
- Single Producer - Multi Consumer (가장 흔한 경우로 쓰인다)
- 이벤트 처리 비용이 이벤트 생성 비용보다 높을 경우
- 참고(https://ko.wikipedia.org/wiki/%EC%83%9D%EC%82%B0%EC%9E%90-%EC%86%8C%EB%B9%84%EC%9E%90_%EB%AC%B8%EC%A0%9C) - Dead letter Queue (실패한 레코드를 보관하는 별도의 큐)
- 설정한 Retry limitation 동안 이벤트가 처리 되지 않을 경우 main message queue에서 제거 하고 사후 분석을 위해 DLQ (Dead Letter Queue)로 이동
- 참고(https://devidea.tistory.com/111) - Time to Live
- 처리 되지 않은 이벤트의 생명 주기를 제한하여 만료 되면 이벤트 폐기 - Asynchronouse request-response
- Polling - Event Splitting
- 한 Event에 대해 여러 로직의 처리가 필요한 경우
출처: 빗썸 테크아카데미 (코드스테이츠 백엔드 심화과정)
반응형
'CS기초 (Computer Science)' 카테고리의 다른 글
[CS] 세션과 쿠키 (0) | 2022.04.18 |
---|---|
[CS] Reactive Programing 문법 및 개념 (0) | 2022.04.17 |
[CS] Event Driven Microservice (0) | 2022.04.12 |
[CS] 카프카란? (0) | 2022.04.11 |
[CS] 서버리스 (0) | 2021.11.30 |