Microservices, Monoliths and Self-Contained Systems (2) Microservices

by NeO posted Dec 13, 2017
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

Microservices

상대적으로 마이크로서비스는 많은 장점을 가져다 주는 반면 단점이 적은 편입니다. 마이크로서비스는 커다란 어플리케이션의 일부분이라고 할 수 있으며 독립적인 어플리케이션이라고 할 수 있겠습니다. 예를 들어 웹 상에 스토어를 운영하는 경우 재고 확인, 신용카드 비용 청구, 배송 추적은 모두 하나의 컨셉을 완성하기 위한 책임을 가진 개별적인 마이크로서비스일 수 있습니다. 자체적으로 데이터베이스를 갖고 다른 시스템과 API 통신하기 위한 API를 갖추어 체계를 잡습니다. 함께 동작하면 사용자에게 지속적인 경험을 제공할 수 있으면서도 막 뒤에서는 개별적으로 동작합니다.


장점

유지보수가 쉽고 이해가 빠릅니다.

각 어플리케이션에는 하나의 주된 목적이 있습니다. 하나의 목적이 분명하기 때문에 어플리케이션의 동작에 대한 추론이 매우 단순 명료합니다. 개발자가 쉽게 프로젝트 안팎을 살펴봄으로써 데이터 단절이 매우 작아집니다. 더 좋은 것은 개발이 신속해지고 테스트 스위트가 포괄적이면서도 신속해지며, 적절한 도구만 있으면 다운타임없이 다른 어플리케이션에 영향을 주지 않고 디플로이할 수 있다는 장점이 있다는 것입니다. 마이크로서비스는 코드의 향연이라고 할 수 있습니다.

분리를 통한 다운타임 최소화

한 어플리케이션이 다운되어도 다른 어플리케이션에 영향을 미치지 않습니다. 즉 주문 시스템이 다운된다고 하더라도 여러분의 고객은 기존의 주문 상태를 확인하거나 별도의 방법을 사용하지 않고서도 스토어의 상태를 확인할 수 있습니다. 또한 확장이 필요한 경우에도 사용하지 않을 부분은 제외하고 필요한 시스템에 대해서만 비용을 지불할 수 있게 됩니다.


단점

인프라 자동화를 필요로 합니다.

마이크로서비스는 운영상의 복잡성을 가지고 있습니다. 하나의 커다란 어플리케이션이 아니라 수 십개 때로는 수 백개의 어플리케이션을 실행하고 있는 형태입니다. 이것들은 하나의 서버에서 관리할 수 있는 형태가 아니므로 수동으로 배포할 수 있는 형태 또한 아닙니다. 이 복잡성을 커버하기 위한 매치 및 개발 프로세스가 필요합니다. 그렇지 않으면 엔지니어가 좌절하게 됩니다.

크로스커팅 문제

단일 방식의 합리적인 방법을 통한 데이터를 획득이 어려울 수 있습니다. 일반적으로 한 곳에서 다른 곳으로 많은 양을 메시징하는 경우 (가령 유저 객체를 모든 곳에 옮겨야 한다고 합시다) 이러한 메시지를 전달하는 새로운 마이크로서비스를 필요로 할 수 있습니다. 모든 데이터가 한 곳에 있는 모노리스에 대비해 어려움이 있을 수 있습니다.


Takeaway

몇몇 단점이 있음에도 불구하고 일반적으로 마이크로서비스는 구조적으로 모노리스보다 더 낫다고 평가되고 있습니다. 개선 과 관리가 쉽고 운영조직의 어려움을 DevOps팀에서 관리할 수 있게 됩니다. 그러나 이 두가지 방식의 중간지점 어딘가의 형태를 찾고 계시다면 아마도 self-contained service를 찾고 계신 것 같습니다.

Who's NeO

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

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

http://www.solulink.co.kr