티스토리 뷰
Event Driven Architecture 정의
- 사건을 기반으로 한 아키텍처 설계
- 분산 아키텍처 환경에서 상호 간 결합도를 낮추기 위해서 비동기 방식으로 메세지를 전달하는 아키텍처 패턴
- 키보드와 마우스의 조작이 발생하면, 이벤트(데이터 CUD)가 발생할 때 마다 새로운 관계를 맺기 위해 또 다른 사용자 또는 또 다른 시스템에 변경을 발생시키는 것
- MSA가 적용된 시스템에서 이벤트 발생 시 해당 이벤트 로그를 보관하고 이를 기반으로 동작하며, 비동기 통신을 통해 시스템 내 통합을 수행하는 아키텍처
* 분산 아키텍처 :
* 이벤트 보관 : 현재의 데이터는 상태 변경의 누적으로 보관된 이벤트를 바탕으로 장애 발생 또는 특정 요구사항에 따라 지정된 시점으로 복원을 수행한다.
* 비동기 통신 : 메세징 프로토콜을 통한 메세지 큐 방식이 자주 사용된다. 이벤트가 발해되면 발행 서비스는 메세지의 형태로 이벤트를 발행하고 해당 이벤트에 관심이 있는 서비스에서 구독을 수행한다.
Event Driven Architecture 예시
예를 들면, 인원 제한이 있는 봉사 활동 신청 시스템에서 A 사용자가 마지막 인원으로 봉사 신청을 완료하면, 시스템은 해당 봉사 활동을 봉사 활동 모집 종료로 변경한다. 이때 이미 동일 화면을 띄어둔 B 사용자가 해당 봉사 활동을 신청을 눌렀을 때, 봉사 신청 가능에서 봉사 모집 종료 상태로 변경되었다는 메시지를 출력함으로써 무결성을 유지한다.
시스템은 무결성을 유지하기 위해서 입력에 따른 봉사 활동 신청을 하기 전 봉사 활동 신청 가능 상태가 맞는지 검증하는 과정을 추가하고, 봉사 모집 인원이 다 찼을 경우 모집 종료 상태로 변경하여 이후 사용자의 중복 신청을 막도록 한다.
'ETC' 카테고리의 다른 글
MSA란? (0) | 2023.05.10 |
---|---|
[k8s] Kubernetes in Google Cloud(1) - Introduction to Docker (0) | 2023.05.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 트랜잭션
- Spring Boot
- aws
- network
- fetchcount()
- EC2
- 영속 상태
- LeetCode
- 프로그래머스
- DevOps
- entitylisteners
- CodeDeploy
- Hibernate
- 네트워크
- CI/CD
- Spring
- 정렬
- springboot
- Route53
- appliationeventlistener
- githubactions
- 영속성 컨텍스트
- 지연 대기열
- 자바
- CI와 CD의 차이
- persistencecontext
- acm
- java
- IAM
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함