마이크로서비스와 배포

마이크로서비스 아키텍처는 모놀리식 아키텍처보다 관리해야 하는 프로세스가 많고 마이크로서비스별로 개발팀이 다를 수 있기 때문에 모놀리식 아키텍처보다 상대적으로 배포와 운영이 어렵습니다.

모놀리식과 마이크로서비스 아키텍처의 산출물 비교

모놀리식과 마이크로서비스 아키텍처의 산출물 비교

마이크로서비스의 배포와 운영에 필요한 배포 자동화, 데브옵스, 가상화 기술을 알아보겠습니다. 배포와 운영은 주제가 방대해 모두 다루기에는 무리가 있어 내용만 간략하게 알아보겠습니다.

배포 자동화

마이크로서비스를 독립적으로 배포하는 것은 마이크로서비스 아키텍처의 중요한 목표입니다. 수십, 수백 개의 마이크로서비스를 독립적으로 배포하려면 적절한 배포 전략과 그에 맞는 배포 자동화 툴을 선택해야 합니다. 우선 배포 전략부터 알아보겠습니다.

배포에는 다양한 전략이 있습니다. 대표적으로 롤백(rollback), 블루-그린 배포(blue-green deployment), 지속적인 배포(continuous deployment)가 있습니다.

이러한 배포 전략을 자동화할 수 있는 다양한 툴이 있는데, 대표적인 툴에 Jenkins(https://jenkins.io), Puppet(https://puppet.com), Chef(https://www.chef.io), SaltStack (https://saltstack.com) 등이 있습니다.

조직에 적합한 배포 전략과 툴을 활용해 자동화된 배포 프로세스를 구축하는 것이 중요합니다.

가상화

마이크로서비스는 짧고 빠른 개발 주기를 목표로 합니다. 그런데 새로운 마이크로서비스가 생길 때마다 새로운 하드웨어를 구축하는 것은 매우 비효율적입니다. 이러한 마이크로서비스를 운영할 때 대표적으로 활용하는 것이 바로 도커(Docker) 같은 경량화된 가상화 기술입니다.

도커는 경량화된 가상화를 제공합니다. 기존 가상화 방식은 주로 운영체제를 가상화했는데, 호스트 운영체제 위에 게스트 운영체제 전체를 가상화하는 방식이라 동작이 무겁고 느립니다. 반면 도커는 프로세스를 격리하는 방식으로 불필요한 게스트 운영체제를 개선해 컨테이너 여러 개가 독립적으로 실행하게 합니다.

기존 가상화와 도커의 차이

기존 가상화와 도커의 차이

도커의 실행 방식은 마이크로서비스를 서비스하기 적합한 환경을 제공합니다. 또 도커 컨테이너는 기본적으로 모든 유형의 리눅스 소프트웨어를 실행하기 때문에 우리가 만든 Node.js 마이크로서비스를 서비스하는 데 이상적인 환경을 제공합니다. 실제로 많은 기업에서 도커 기반의 마이크로서비스 아키텍처를 운영하고 있습니다.