Microservices, Monoliths and Self-Contained Systems (3) Self-contained system과 결론

by NeO posted Dec 13, 2017
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

Self-Contained System

Self contained system은 모노리스와 마이크로서비스 중간쯤에 있는 블록형 아키텍처입니다. 여러 개의 마이크로서비스를 하나의 엔티티로 나타내면서도 모노리스보다는 작은 규모를 가지는 형태입니다. 만일 매우 연관성이 높아 타이트한 커플링이 필요한 마이크로서비스가 있다면 그것을 Self contained system으로 합니다. Self contained system는 매우 새롭습니다. 그렇지만 마이크로서비스와 모노리스와의 차이는 정도의 차이일 뿐 형태의 까지는 아닙니다.


장점

두 형태의 장점을 모두 가집니다.

크로스커팅이 매우 쉽게 제어되면서도 마이크로서비스와 같은 쉬운 코딩과 배포를 만끽할 수 있습니다. 앱에서 필요한 모든 데이터를 내부적으로 가지고 있기 때문에 복잡한 메시징과 표준 데이터 형태에 대해 고민하지 않아도 됩니다. 참 쉽죠?


단점

아키텍처 정의가 어렵습니다.

마이크로서비스와 Self contained system의 경계는 모호하지만 분명히 존재합니다. 고심 끝에 여러분은 Self contained system이 많은 서비스에 적합하다고 판단할 것입니다. 그렇지만 서비스를 분리해내는 작업이 매우 어렵다는 것을 알게 될 것입니다. Self contained system에서 어떤 기능을 내부로 두고 외부로 둘지를 사전에 판단하기 위한 자원이 부족할 수 있기 때문입니다.


Takeaway

Self contained system이 매우 새롭고, 현존하는 지침이 충분하지 않은 이유로 결과적으로 개발팀은 마이크로서비스를 택하는 것이 옳은 선택이 될 것입니다. 적어도 현재로서는 말입니다. 다시말하면 self contained system은 마이크로서비스를 지향하는 사람들에게 적합합니다. 모노리스를 쪼개 self contained system을 만들어내는 것은 전체 조직이 마이크로서비스를 채택하게 되는 중요한 첫 걸음입니다.

 

결론

Self contained system이 새롭고 핫하기는 하지만 마이크로서비스는 대중적이고 쿨합니다. 어플리케이션에 적합한 아키텍처가 무엇인지 단언하는 것은 불가능합니다. 아직까지 인터넷상에서 많이 사용되는 아키텍처는 모노리스이며 현재까지 대단히 성공적이라고 할 수 있습니다. 여기에는 단순성과 신뢰성을 주는 무언가가 있습니다. 서로 다른 소프트웨어 아키텍처의 장단점을 비교해봄으로써 조직에 맞는 소프트웨어 아키텍처를 선택해볼 수 있습니다. 어느 쪽을 택하든 그것의 장단점을 포용하고 배워나가면 이를 향상시켜 나갈 수 있을 것입니다.

Who's NeO

ALM, SW 모델링, SW 정적분석, Devops 특히 CI/CD, APM을 통한 Shiftleft에 관심이 많습니다. 

차세대 APM Cisco AppDynamics와 모바일 앱 모니터링 VMware Apteligent를 소개합니다.

http://www.solulink.co.kr