마이크로서비스 아키텍쳐 소개(1)

구민구민·2023년 2월 8일
0

DevOps

목록 보기
2/2

마이크로서비스란

단일 어플리케이션을 작은 규모의 서비스 조합으로 나눠 개발하는 방식이다. 각 서비스는 자체 프로세스로 실행되며, 가벼운 메커니즘으로 통신한다. 비즈니스 기능을 중심으로 구축되며 완전 자동화된 배포기계를 통해 독립적으로 배포할 수 있다.
(마틴 파울러, 2014 기사 발췌)

마이크로 서비스는 제한된 범위의 독립적으로 배포 가능한 구성 요소이며메시지 기반 통신으로 상호 운용성을 지원한다. 마이크로서비스 아키텍쳐는 높은 수준으로 자동화된 엔지니어링 스타일이며 기능별 마이크로서비스로 구성된 진화할 수 있는 소프트웨어 시스템이다.
( Microservice Architecture - O'Reily2016 )

작고 독립적인 구성요소들(Components), 서비스(Application)들로 이루어진 소프트웨어 구축 방식.
위에서 알 수 있듯, 마이크로서비스를 표현하는 키워드들은 애플리케이션을 더 작은 서비스로 분리하고, 비즈니스 기능 중심의 조직 구성, 거버넌스(관리 권한)의 분산(탈중앙화), 인프라 자동화를 통한 빠른 개발과 배포, 지속적인 설계 개선과 최적화 등이 있다. 따라서 마이크로서비스는 서비스의 기술적인 기능이나 구조가 아니라, 비즈니스와 조직의 구조와 문화에 깊게 관련되어 있다.

마이크로서비스는 기존의 소프트웨어 구축방식이었던 모놀리틱 Monolithic구조와 자주 비교하여 설명한다.

모놀리틱 Monolithic 구조는 거대한 서버에 여러 서비스들이 올라가 있는 기존의 형태를 의미한다.
S사의 A와 B 서비스가 존재할 때, A의 트래픽이 증가하여, B 서비스에 비해 매우 클 경우, 모놀리틱 구조에서는 전체 서버의 규모를 확장하는 방식으로 대응해야 할 것이다.

큰 규모의 서비스를 운영하는 조직에서, 각각의 독립적인 서비스들의 확장을 용이하게 한다. S사의 A와 B 서비스가 존재할 때, A의 트래픽이 급증하여, B 서비스에 비해 매우 클 경우, 서버의 대수를 늘리는(Scale-Out)이 용이하다. 또한 A 서비스의 새로운 기능을 추가하여 서비스를 확장하는 경우(Scale-Up) 또한 용이하다. 뿐만 아니라 SPOF(Single-Point-Of-Failure)로부터 안전하다. 하나의 서비스가 장애를 일으켜 죽는 경우에도 기존의 모놀리틱 구조에 비해 다른 서비스들로에게 영향을 미치지 않는다.

기능적인 측면 뿐만 아니라 마이크로서비스 아키텍쳐는 비즈니스를 행하는 조직에서도 영향을 미친다.
Conway's Law "소프트웨어 아키텍쳐는 그 조직의 구조를 따른다." 는 말에서 알 수 있듯, 기존의 모놀리틱 구조에서는 새로운 서비스의 확장은 전체 서버의 운영권을 쥐고 있는 상부의 승인 절차를 거치며 지연되거나, 서비스 개발 부서 간의 관계에 따라 서비스들 간의 관계가 tight-coupling 되거나 decoupling되는 등의 현상이 일어난다.
반면 마이크로서비스 아키텍쳐(이하 MSA)에서는 각 부서(서비스 개발 조직 단위)에 서비스 개발 및 확장에 있어 해당 조직에 자율성을 부여한다. 이로 인해 개발 속도가 더 빨라져, 서비스의 운영 가속 및 발전으로 이어질 수 있다.

하지만 MSA에서 여러 요소와 서비스들이 독립함에 따라 그 비용 또한 발생한다. 여러 독립적인 요소들이 함께 작동하며, 유기적으로 통신할 수 있어야 하며, 이로 인해 유지보수와 전체 시스템의 모니터링, 테스트의 어려움 등이 보다 복잡해진다.

출처

  • Microservices Up & Running (O'Reily)

0개의 댓글

관련 채용 정보