더북(TheBook)

이러한 구도가 중요한 이유는 격리(isolation)와 밀집(density)이라는 얼핏 보면 모순돼 보이는 조건을 동시에 만족할 수 있기 때문이다. 밀집이란 컴퓨터에 CPU와 메모리가 허용하는 한 되도록 많은 수의 애플리케이션을 실행하는 것을 의미한다. 그러나 서로 다른 여러 애플리케이션을 동시에 실행하는 데는 제약이 따른다. 자바나 닷넷 등 필요로 하는 런타임의 버전이 서로 다를 수도 있고, 서로 호환되지 않는 버전의 라이브러리를 사용하는가 하면, 어느 한 애플리케이션이 과다한 리소스를 필요로 해 다른 애플리케이션의 리소스가 부족해질 수도 있다. 이런 면을 고려하면 애플리케이션은 서로 독립된 환경에서 실행돼야 한다. 하지만 그럴 경우 한 컴퓨터에서 여러 애플리케이션을 실행할 수 없게 되고, 다시 말해 밀집을 달성할 수 없다.

이 모순된 조건을 동시 달성하려던 첫 번째 시도는 가상 머신을 사용하는 것이었다. 가상 머신은 애플리케이션이 실행될 독립적 환경이 생긴다는 점에서는 컨테이너와 큰 차이가 없다. 다만 가상 머신은 컨테이너와 달리 호스트 컴퓨터의 운영체제를 공유하지 않고 별도의 운영체제를 필요로 한다. 호스트 컴퓨터와 컨테이너의 관계를 나타낸 그림 2-3을 호스트 컴퓨터와 가상 머신의 관계를 나타낸 그림 2-4와 비교해 보자.

▲ 그림 2-4 같은 컴퓨터에서 동작하지만 각자 별도의 운영체제를 갖는 가상 머신

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.