1.1.3 컨테이너 인프라 환경에 적합한 아키텍처
그러면 컨테이너 인프라 환경에서는 어떤 아키텍처를 사용해야 좋을까요? IT 세계에서는 대부분 정해진 답이 없습니다. 주어진 상황에 적합한 기술이 있을 뿐입니다. 모놀리식 아키텍처로 구현을 시작했지만, 시스템이 성장하고 기능이 늘어나면 마이크로서비스 아키텍처로 전환할 수도 있습니다.
예전에는 기존 시스템을 확장하는 것은 시간과 비용이 많이 들어가는 복잡한 작업이자 변경된 시스템을 잘못 배포했을 때 전체 시스템 중단을 초래할 수 있는 위험한 작업이었습니다. 그러나 현재는 작은 단위로 빠르게 배포할 수 있으며 시스템 확장에 유연하게 대처할 수 있는 기반 기술이 충분히 마련돼 있습니다. 보통 중소기업에서 진행하는 소규모 프로젝트는 구현할 서비스 종류가 많지 않거나 규모가 크지 않아 모놀리식 아키텍처를 선호하는 경향이 있습니다. 하지만 소규모 프로젝트라도 마이크로서비스 아키텍처로 설계하면 기능에 집중한 안정적인 서비스를 구현할 수 있고 구현된 서비스를 재사용할 수 있으며, 해당 서비스를 다른 서비스와 연결해 구조화하기 때문에 장기적으로 볼 때 유지보수 측면에서 매우 유리합니다.
우리가 공부할 컨테이너 인프라 환경은 특히 마이크로서비스 아키텍처로 구현하기에 적합합니다. 컨테이너 인프라 환경에서는 컨테이너를 서비스 단위로 포장해 손쉽게 배포하고 확장할 수 있습니다. 컨테이너 인프라 환경에서 제공하는 컨테이너는 마이크로서비스 아키텍처의 서비스와 1:1로 완벽하게 대응하며, 이후 소개할 도구들을 이용하면 도입, 설계, 운용 비용이 감소하고 생산성이 향상됩니다.
▲ 그림 1-3 서비스와 1:1로 결합되는 컨테이너
그렇다면 컨테이너 인프라 환경을 지원하는 도구 중 현업에서 자주 사용하는 몇 가지를 간략하게 살펴보겠습니다.