물리서버, 가상화, 컨테이너 | 서버 기술의 진화 및 역사
물리서버에서 가상화, 컨테이너 기술로의 진화 과정을 설명합니다.
서버 최신 기술의 발전을 알아보세요.
물리서버에서 가상화, 컨테이너 기술로의 진화와 역사
컨테이너 기술이 등장하기 전까지 IT역사를 되돌아 보겠습니다.
가상화 기술이 출현하기 전에는 하나의 물리적 서버에서 다양한 애플리케이션을 올려 사용하는 시대였습니다.
물리적 서버에 직접 OS를 설치하고 서비스(애플리케이션)을 실행하는 것입니다. 물리적 서버는 물리적인 물건이기 때문에, 배치 장소의 확보가 필요합니다.
가상화는 CPU와 메모리 등의 하드웨어 자원을 하이퍼바이저라는 소프트웨어로 추상화한 것입니다.
이 가상화의 구조를 일반적으로 하이퍼바이저형 가상화라고 하며, 가상화에 의해 만들어진 서버를 가상 머신이라고 합니다.
컨테이너는 컨테이너 엔진이라는 프로세스를 통해 호스트 OS의 ‘커널’을 공유함으로써 CPU나 메모리 등의 자원을 격리하고 가상적인 공간을 만들어냅니다.
컨테이너를 통해 하나의 Host OS에서 가상으로 여러개의 OS로 운영할 수 있습니다.
물리서버 시대
물리서버에서도 IT 시스템을 모두 구성할 수도 있지만, 최근에는 하드웨어 성능이 높아지면서 하나의 물리적 서버에 여러 개의 가상머신(Virtual Machine)을 운영하는 ‘서버 가상화’라는 기술을 폭넓게 이용하고 있습니다.
‘서버 가상화’는 하드웨어를 소프트웨어로 에뮬레이트하여 하나의 물리적 서버에서 여러 서버를 가상으로 실행하는 기술입니다.
가상 머신을 활용하여 서로다른 애플리케이션이나 라이브러리를 분리하여 운영하는 것이 가능합니다.
WAS 관리자와 운영자는 요청한 코드가 다른 애플리케이션이나 OS의 모듈과 충돌하지 않는지 등을 확인한 후 운영 환경에 릴리즈 합니다.
하나의 서버에 여러 개의 애플리케이션이 동작하기 때문에, 애플리케이션 배포 과정이나 모듈의 충돌로 인해 시스템 장애가 발생하는 경우가 많습니다.
또한 특정한 애플리케이션의 과부하로 인하여 서버의 CPU 및 메모리 고갈이 발생하면 그로 인하여 다른 애플리케이션의 성능까지도 문제가 발생합니다.
여러개의 애플리케이션을 운영하면서도 충돌이나 간섭이 발생하지 않도록 독립적인 서버 환경을 구축하는 방법으로 가상화가 각광받게 되었습니다.
가상머신 (Virtual Machine) 시대
가상화 기술이 출현하기 전에는 하나의 물리적 서버에서 다양한 애플리케이션을 올려 사용하는 시대였습니다.
물리적 서버에 직접 OS를 설치하고 서비스(애플리케이션)을 실행하는 것입니다. 물리적 서버는 물리적인 물건이기 떄문에 놓여질 장소가 필요합니다.
주로 기업 전용의 데이터센터나 사무실 내에 서버 전용 공간을 사용하였습니다.
물리서버 시대에 개발자는 애플리케이션 배포를 WAS 관리자 또는 운영자에게 요청하여 운영환경에 릴리즈하였습니다.
컨테이너(Container) 시대
물리 서버나 가상머신이나 모두 그것을 제어하는 OS를 실행하고 있습니다. 가상 머신으로 여러 서버를 하나의 물리적 서버에서 실행시키더라도 가상머신마다 OS를 실행해야 합니다.
OS는 범용적으로 사용할 수 있도록 만들어져있는 반면, 많은 기능이 포함되어 그만큼 자원이 필요합니다. 따라서 이 OS 부분도 공유할 수 있다면 물리적 서버 한대당 애플리케이션 집약도를 더 높일 수 있습니다.
애플리케이션을 실행하기 위해 필요한 자원(즉, 응용 프로그램 자체와 라이브러리, 미들웨어 등)을 하나의 패키지로 묶어 OS별로 분리하여 여러 애플리케이션을 실행하는 기술이 현재 주목받고 있습니다.
이 기술을 컨테이너라고 합니다.
IT에서의 컨테이너는 물류 분야의 컨테이너처럼 표준화하여 어디로든 배송하여 동작할 수 있다는 것이 가장 큰 특징입니다.
그러나 컨테이너는 하나의 컨테이너당 하나의 프로세스가 기본이라서 마이크로서비스에 유리한 인프라스트럭처이지만 복잡하게 되는 것이 문제입니다.
컨테이너를 활용하면 비즈니스 요구 사항에 맞추어 릴리즈를 빠르게하고 자동으로 확장할 수 있는 인프라스트럭처를 구축할 수 있습니다.
정리하며….
이번에는 IT 인프라스트럭처로 물리적 서버, 가상머신, 그리고 컨테이너로 진화를 단계별로 살펴보았습니다.
시대별로 인프라스트럭처의 진화 단계라고는 하지만, IT시스템을 하나의 패턴으로만 구성해야 하는 것은 아닙니다. 이들을 조합하여 사용하는 경우가 대부분입니다.
예를 들어, 리소스를 많이 사용하는 데이터베이스 서버는 물리서버로 구성하고, 웹서버와 애플리케이션 서버는 컨테이너로 구성합니다.
운영 관리에 사용하는 모니터링 서버등은 가상 서버로 구성하는 시스템 구성도 가능합니다.
다음에는 ‘서버 가상화’와 ‘컨테이너’를 비교하면서 컨테이너의 내용물에 대한해 설명합니다.
References & Related Links
- 서버 가상화 기술의 진화: VM과 컨테이너 – https://www.sharedit.co.kr/posts/5611
- 클라우드 가상화 기술의 변화: 소프트웨어 정책 연구소 – https://spri.kr/download/22084
컨테이너 장점
가상머신은 하드웨어 스택을 가상화합니다. 컨테이너는 이와 달리 OS를 가상화하여 여러개의 컨테이너를 OS 커널에서 직접 실행합니다. 컨테이너는 기존의 가상화 기술보다 훨씬 가볍게 동작하며, OS 커널을 공유하고, 시작 시간이나 종료 시간이 빠르고, 메모리를 훨씬 적게 차지합니다.
컨테이너 기술 소개
IT 분야에서 “컨테이너”도 일종의 박스의 의미이며, 물류분야에서 처럼 Portability(이동성)을 실현하기 위해 만들어진 기술입니다.
이동성은 IT 시스템(플랫폼 또는 인프라) 상에서 다른 IT 시스템으로 이동을 쉽게 허용하는 성질을 의미하는 것입니다.
컨테이너를 들으면 무엇이 떠오르나요?
항구나 공항 등에서 보는 직 물류 업계에서 사용되는 컨테이너가 떠오르실 것입니다.
컨테이너는 내용물을 하나씩 이동하는 것이 아니라 박스에 수하물을 담아 통째로 이동하기 때문에 편리한 물류 수단입니다.
가상화와 컨테이너의 비교
가상화는 개발측면이나 운영측면에서 자원 효율적으로 사용하고 관리하는 기술로서 널리 확산되었습니다. 다양한 OS 환경과 어플리케이션을 하나의 파일로 관리할 수 있는 “가상 머신 (VM)”은 손쉽게 이동할 수 있는 이식성을 제공해 주었습니다.
컨테이너는 하이퍼바이저와 Guest OS 없이 애플리케이션 운영환경을 제공하는 기술로서 앞서의 가상화 기술의 고질적인 문제점들을 해결하고 있습니다.
Docker 그리고 컨테이너 기술의 역사
컨테이너 기술의 시작과 현재까지 발전해온 역사를 살펴봅니다.
1972년 IBM VM / 370 (OS) 최초 가상화 기능 구현 , 1979 년 UNIX V7 에 chroot 시스템 콜 도입, 1999년 Virtuozzo 출시 컨테이너 가상화의 새로운 방향을 제시하였습니다.
디지털 트랜스포메이션과 컨테이너
DX를 실현하기 위해서 민첩한 개발 방법은 큰서비스 하나로 개발하는 것이 아니라 개별 기능별로 분할된 마이크로 서비스라는 단위로 개발하는 것이기 때문에 컨테이너가 가장 적합한 기술이라고 할 수 있습니다.
Azul의 x86 용 Zing Elastic Java Runtime – 비교할 수 없는 극강의 자바 런타임
/in JBoss, OPENMARU/by 오픈마루 마케팅0Azul 시스템은 대용량의 스케일업형 하드웨어에서 자바 애플리케이션을 운영할 수 있는 기술을 기반으로 하고 있다.
Azul이 제공하는 기술의 두 가지 핵심 구성요소는 리얼 타임에 특화된 자바 가비지 컬렉션과 오버 헤드가 거의 없는 진단/모니터링 도구 이다.