마이크로서비스란
- 작고 독립적인 시스템
- loosely cupled (느슨한 결합)
- 빠른 배포
- 폴리글랏 프로그래밍 (여러개의 언어를 사용해 MSA개발)
- IT에서 가장 주목받고 있는 아키텍처 또한 컨테이너 기반의 플랫폼(Kubernetes)과 서로 같이 발전하고 있음
여기서 잠시 폴리글랏이란?
여러개의 언어를 사용하는 것을 말한다. 원래 사용은 실 세계 언어에 대해 적용하는 단어지만 미국에서는 이미 오래전부터 이 용어가 사용 되었다고 한다.
그래서 Event Driven 이란 무엇일까?
Event Driven이란 용어는 IT에서 갑자기 나온 키워드는 아닙니다. 2018년 유망한 기술 트랜드 중 하나로 뽑히기도 했습니다. 이것으로 보아 아직까지도 영향력이 대단한 것 같습니다.
Event Driven은 Programming, Architecture 등과 연결되어 다양한 정의로 표현됩니다.
1) 컴퓨터 회로를 구동 시키기 위해 발생하는일 (마우스 클릭, 키보드 타이핑, 모바일 터치)
2) 특정 행동이 자동으로/순서에 따라 발생하는 것이 아닌 어떤 일에 대한 반응으로 동작하는 디자인패턴?
3) IOT 기기 등의 센서로부터 유입되는 데이터 스트리밍 기반의 동작
4) 시스템 내 외부의 발생한 주목할 만한 상태의 변화에 기반한 동작
5) 기타 등등?
Event Driven 은 종종 분산 처리 시스템과 연결되어 언급됩니다. 분산 처리 시스템에 Event Driven을 엮어 느슨한 결합을 지원하고 유연성, 탄력성, 확장성 있는 시스템을 구현할 수 있습니다.
Event Driven MicroService 란 무엇일까?
EDM은 MSA가 적용된 시스템에서 이벤트 발생 시 이벤트 로그를 보관하고 이를 기반으로 동작하며, 비동기 통신을 통해 시스템 내 통합을 수행하는 아키텍처 이다.
- 이벤트
- IT 영역에서 이벤트는 다양한 정의 갖지만, 이곳에서 언급하는 이벤트는 상태의 변경 즉, 데이터의 변경, 생성, 삭제(CUD)를 통해 발생하는 서비스의 의미 있는 변화를 말한다.
- 이벤트를 로그에 보관
- 현재의 데이터는 상태 변경의 누적이라는 생각에서 시작한다. 이 때 상태 변경은 이벤트를 뜻하고 이를 누적하는 행위는 이벤트 로그를 보관하는 것 입니다. EDM 에서 생성된 이벤트는 반드시 보관 되어야 합니다. 보관된 이벤트는 데이터의 현재 상태를 구성하는 근간이 됩니다.
또한, 보관된 이벤트를 바탕으로 장애 발생 또는 특정 요구 사항에 따라 지정된 시점으로 복원을 수행한다. 이벤트 로그를 보관하는 장소를 이벤트 스토어라 한다. - 비동기 통신
- amqp, mqtt, jms 등 메시지 프로토콜을 통한 메시지 큐 발식이 자주 사용 됩니다.
서비스에서 데이터의 (CUD)를 통해 아벤트가 발생하면 발행 시스템은 메시지 향태로 이벤트를 빌헹히고, 해당 이벤트에 관심이 있는 서비스에서 고득을 수행합니다. 매시지 큐를 활용함으로 request/dlq 등의 기운을 횔영 - 시스탬 통합
- 이상적으로 구현돈 MSA는 서비스간 데이터 참조를 위해 내부 통신이 필여 없지만, 현실적으로 서비스간 내부 통신이 없는 시스템을 구현하기란 불가능에
다양한 사유로 여러 서비스 간의 전혀 없는 시스템을 구현기란
조금더 자세한 정보를 원하시면 아래의 링크를 참고하세요 :)
https://medium.com/dtevangelist/event-driven-microservice-%EB%9E%80-54b4eaf7cc4a
'IT좋은지식' 카테고리의 다른 글
로컬 개발 환경으로 웹서비스로 공유하기 (0) | 2022.12.16 |
---|---|
WebP 란? (0) | 2022.06.12 |
REST API (0) | 2022.02.16 |
생성자 보단 정적 팩토리 메서드! (왜 정적 생성자를 통해 객체를 생성하는것이 안티패턴인가?) (0) | 2021.06.23 |
HTTP 접근제어 (CORS)란? (0) | 2020.01.30 |