마이크로서비스 아키텍처 ( microservice )
요즘 각광받고 있는 이 기술은 2011~2012년 쯤 이름이 정해진 것으로
이미 오래전 부터 나온 기술이다.
클라우드와 가상화 기술이 발전하면서,
이미 앱 개발 쪽에서는 이 기술이 표준화 될 정도로 많이들 사용하는 것 같다.
게임개발 쪽에서는 대기업에서 일부 채용하여 개발 중이거나, 출시된 게임도 있지만,
중소기업이나, 스타트업에서는 아직 모놀리식 개발방식을 고수하고 있는 것으로 보인다.
( 주변 개발자들 이야기 참고 )
마이크로 서비스 아키텍처는
각기 다른 프로그래밍 언어로 구현할 수 있으며,
작은 단위의 마이크로 서비스 들이 RESTful 또는 메시징 방식으로
통신한다.
마이크로 서비스 개발 방식에 대해서 설명할 때 빠질 수 없는 것이
모놀리식 개발 방식이다.
모놀리식은 쉽게 말해서 마이크로서비스가 나오기 전부터 개발해오던 방식으로
마이크로서비스의 반대 개념이다.
하나의 어플리케이션에 여러 컴포넌트가 구성된다면
이들이 매우 강하게 결합되는 구조로 한덩어리를 이루게 된다.
반면에 마이크로 서비스는 서비스단위로 작은 어플리케이션 조각으로
나누어 느슨하게 결합 된 모임으로 서로 물리적으로 분리되거나, 가상화된 환경에서
프로세스로 구분되어 네트워크를 통해 통신한다.
이러한 구조는 어플리케이션이 많아지기 때문에 관리이슈가 함께 발생하게 되는데
도커를 이용한 가상화 기술과, 컨테이너 관리 시스템인 쿠버네티스 등의 힘을 빌려
다수의 컨테이너를 쉽게 관리하고, 자동화된 배포 시스템과, 관리 시스템은 필수가 되었다.
마이크로 서비스가 모놀리식 보다 확장성 부분에서는 훨씬 뛰어나지만,
모든 면에서 좋다고는 말할 수 없다.
예를 들어 마이크로 서비스의 경우 기능을 담당하는 서버 프로세스가 분리 됨으로
통신에 의한 레이턴시만 두고 보자면 모놀리식 서비스는 통신 자체가 필요없으므로
더 효율적으로 빠른 처리가 가능하다.
자신이 개발중인 프로젝트의 특성을 잘 이해하고,
최신 기술이라고 해서 맹신하는 것 보다
적재적소에 기술을 잘 응용하는 것이 옳바르다고 생각 된다.