기록을 시작하기 전 약간의 사담 타임..
약 3.5년의 SI 프로젝트를 수행해 오면서 프로젝트를 보는 눈을 키워왔지만 '깊이'있는 지식에는 자신감이 떨어지는 나의 모습을 볼 수 있었다. 그 후 한 가지 도메인을 전문하고 싶다는 생각에 시스템 운영자의 포지션으로 자리 변화를 주었지만 항상 아래 3가지의 생각이 꼬리표처럼 나를 따라온다.
- 현재 내가 가장 문제라 드는 것은 과연 기본기는 충분한가?
- 어디서부터 무엇으로 시작을 해야 하는가?
- 하고 싶은 것, 알고 싶은 것들이 너무 많은데...
막상 프로젝트나 일이 앞에 오면 그 순간은 끝까지 해내지만 기록의 부재가 만든 도돌이표 같은 개발 인생이랄까...
이렇게 생각하고 글을 쓰면서도 사실 게으른 탓이 많이 큰 것 같다.
블로그 글도, 공부도 모든 키워드에 물음표를 접근해 보자는 것이 요즘 공부 방향이다. (일단 시작하자)
본론으로 돌아와서 그중 현재 목표가 된 회사의 채용 공고를 보다 Event-Driven Architecture를 소재로 글의 문을 열고자 한다.
'Event-Driven Architecture'를 검색해 보면 Amazon에서 올려준 설명과 글을 읽기 시작해 보면 우선 시작의 꼭지를 찾아 거슬러 올라가고자 하면 MSA(Micro Service Acticheture)와 연관된 것을 알 수 있다.
(사실 그 글은 Amazon Event Bridge를 사용해 보시겠는가? 하는 결론으로 흘러간다.)
아주 좋은 예시의 글을 읽었다. ( 역시 기술 블로그는 우아한 형제들 글이 이해도 정리도 깔끔하면서 공부 욕구를 올려준다 )
글을 읽으면서 이 주제의 발생 사유의 근본이 MSA에 있음을 되새기면서 순차적으로 작성해 본다.
MSA란?
Micro Service Architecture의 약자로 분산형 시스템을 의미한다. (<-> 시스템 구조 : Monolithic Architecture 이하 MA 표기)
단일 형태(MA)의 설계 구조가 아닌 명칭 그대로의 각각 나눠진 서비스의 형태를 의미한다.
* System Architecture 비교
두 개의 시스템 구조는 그림과 명명으로만 봐도 확연한 구조 차이가 드러난다.
시스템을 확장시키고 관리하는 데에 있어서 각 구조는 서로 다른 장단점을 지닌다. 유지 보수 시간 관리, 구축 개발의 시간 차이, 시스템의 확장성, 각 시스템의 배포 시 기능적 영향도, 복잡성 등..
위 비교와 같이 MA 시스템과 MSA 시스템은 시스템 안에서 구성되는 영향도와 규모에 따라 장단점을 고려하여
시스템의 구조와 설계는 시스템의 단위 규모 등 상황에 맞는 선택을 진행하면 된다.
여담으로 실제로 일하면서 MSA가 이곳저곳에서 도입되고 있을 때였다. 진행하였던 프로젝트 들이 대부분 B2C 시스템은 아니었기에, 함께 프로젝트하신 분들과의 소소한 일화를 이야기해 보자면'굳이 잘 굴러가는 시스템을 왜 쪼개느냐?'는 말을 하시는 분들을 당시에 꽤 자주 볼 수 있었다.( 항상 유지하려는 자와 변화를 주려는 자의 즐거운(?) 논쟁은 존재하더라~)
Event Driven Architecture란?
이벤트를 사용하여 분리된 서비스를 서로 트리거하고 통신하며 마이크로서비스로 구축된 현대적 애플리케이션에서는 일반적으로 사용되는 구조를 의미한다.
Event Driven이 MSA와 연관된 사유는 설계 구조의 정의를 통해서 생각해 보자. 앞서 MSA의 구조를 기반으로 생각해 보면 여기서 답은 빠르게 정의될 수 있다.
그것은 MSA의 설계에 따른 Loose Coupling(느슨한 결합)과 연관이 있다.
특히, 위의 그림의 구조만 보아도 확인할 수 있는 MSA 구조라 함은 각 서비스가 시스템 적으로는 독립성을 띄기 때문에 시스템 설계에 있어서 Coupling & Cohension의 고려가 필 수 적이기 때문이다.
Event Driven Arcitechture의 의미대로 'Event'를 사용하여 서로 다른 시스템을 내/외부적으로 주고받는 방식이라는 것이다.
즉, Event를 통해 시스템을 좀 더 안정적으로 Loose Coupling을 보완하여 시스템의 안정화를 구성할 수 있는 설계 구조가 될 수 있다.
서로 독립된 시스템 구조로 구현을 할 수 있도록 연결성을 높일 수 있는 설계 구조
[참고]
-Event Driven Architecture
https://aws.amazon.com/ko/event-driven-architecture/
- Event Driven Architecture 관리 및 이해
https://techblog.woowahan.com/7835/