목차

마이크로서비스 아키텍처의 등장


마이크로서비스는 한 서비스에서 기능별로 물리적인 서버의 위치를 다르게 하여 서비스를 구성하기 위한 기능들을 여러 서버로 쪼개서 운영하는 아키텍처이다. 마이크로서비스는 특히 소스, 서버 등의 구성 요소를 모놀리식보다 가볍게 구성할 수 있다는 장점이 있다. 또한 기능별로 서버가 분산되어 있기 때문에 장애가 생기면 발생 부분을 쉽게 찾을 수 있고, 물리적인 서버의 위치가 기능별로 가누어져 있다. 그래서 많이 쓰는 기능의 경우 서비스의 규모가 커짐에 따라 해당 기능에 대한 리소스만 늘려주면 되며 자원을 좀 더 효율적으로 사용할 수 있다.

마이크로서비스의 한계


아키텍처를 구성하는데 많은 시간이 소요되며, 서비스 간의 호출 또한 많아지면서 전체적으로 아키텍처의 복잡도가 높아지는 상황이 발생한다.

도커의 장점


하나의 큰 서버를 가상화 기술을 통해 잘게 쪼개서 마이크로서빗의 해당 기능들을 격리된 가상화 공간에 배치하면 서버는 한 대만 유지, 보수하지만 여러 대의 서버를 사용하는 효과를 얻을 수 있다. 이런 가상화 방식을 전가상화라고 한다. 전가상화는 하이퍼바이저를 통해 나누어진 게스트 운영체제와 통신할 수 있다. 하지만 하이퍼바이저는 무겁다는 단점이 있다. 이후 하이퍼바이저를 거치는 서능 저하를 막기 위해 컨테이너 방식의 가상화가 각광 받기 시작했고, 컨테이너 방식의 솔수션으로 구현한 것이 바로 도커이다.

도커 도입시 이점


도커는 이렇게 여러 마이크로 서비스를 한 대의 물리적인 서버에 운영할 수 있도록 만들어 준다. 심지어 언어의 제한도 없다. 모든 언어의 애플리케이션을 한 대의 물리적인 서버에서 운영할 수 있다. 이를 가능하도록 해 주는 것이 바로 커널 기술인 Cgroup, Namespace이다.

Control Group의 약자로, 시스템의 CPU 시간, 시스템 메모리, 네트워크 대역폭과 같은 자원을 제한하고 격리할 수 있는 커널 기능이다.