컨테이너
컨테이너의 등장 전
선배 개발자들은 애플리케이션을 실행할 때, 개발 환경 세팅에 굉장히 많은 수고를 했어야 했습니다.
이 과정에서 여러 가지 장애 요소가 많이 발생하여 어려움도 존재했습니다.
이런 불편한 점은 컨테이너와 컨테이너 오케스트레이션 시스템이 등장하며 해결되었습니다.
컨테이너와 도커의 등장
리눅스에서는 원래 다음과 같은 명령어를 통해 격리 환경을 구성할 수 있었습니다.
- cgroup: 프로세스별로 자원을 격리
- chroot: 특정 디렉터리로 권한을 제한
여기에 디스크의 파일 변경 사항을 레이어 형태로 저장하는 파일 시스템을 합해 컨테이너라는 개념이 탄생했습니다.
도커는 방금 소개한 기능들을 모아서 컨테이너를 손쉽게 사용할 수 있도록 한 것으로 주목받았습니다.
기존에 가상화나 클라우드 컴퓨팅을 설명할 때는 가상 머신(VM)을 많이 언급했으나, 컨테이너라는 기술이 등장한 이후로는 컴테이너에 많은 관심이 쏠리기 시작했습니다.
컨테이너와 가상머신
왼쪽은 가상 머신의 구조이고, 오른쪽은 컨테이너의 구조입니다.
가상 머신에는 하이퍼바이저 위에 가상 머신마다 게스트 운영체제가 있고 그 위에 앱이 위치하게 되는데, 그에 반해 컨테이너는 호스트 운영체제 위에 컨테이너 런타임이 위치하고 그 위에서 앱이 돌아갑니다.
컨테이너가 구조상 레이어가 간단하므로 가상 머신보다 성능을 높이기에 용이합니다.
컨테이너 오케스트레이션 시스템
연구실에서
연구실에서 프로젝트 관련 서버를 운영하고 있는데, 해당 서버를 개발용 데스크톱에서 직접 배포를 하는 기행을 벌여 공동 연구 기관에서 우리 측 서버에 접속하는 트래픽이 많아짐에 따라 개인용 데스크톱 환경에서는 감당할 수 없는 리소스를 요구하게 되자 여러 문제들이 속출하게 되었습니다.
문제를 인식하고 서버를 이전하는 작업을 진행하려 했지만 환경 세팅에서 여러 문제가 발생하여 이전 작업에 애를 먹은 경험은 아니고 담당하는 연구원분의 이야기 였습니다.
컨테이너는 신이다
컨테이너라는 개념은 완전히 새로운 것은 아니지만 도커의 등장으로 컨테이너를 사용하기 편해지면서 애플리케이션 개발 과정 전체에 혁신을 가져왔습니다.
컨테이너를 이용하면 개발 환경과 운영 환경의 차이 때문에 일어나는 많은 장애를 막을 수 있습니다.
개발 환경에서 실행했던 컨테이너를 컨테이너 런타임만 있다면 실제 서버 어디에서든지 실행할 수 있기 때문입니다.
하지만 실제 상용 서비스를 컨테이너만으로 운영하기에는 부족한 부분이 있습니다. 컨테이너 오케스트레이션 시스템은 컨테이너의 부족한 부분을 채워주는 역할입니다.
컨테이너 오케스트레이션 시스템
실제 상용 서비스가 한 대의 서버만으로 구성되는 일은 거의 없다고 볼 수 있습니다.
실제 상황에서 발생할 수 있는 장애에 대비해 여러 대의 서버를 구성하게 됩니다.
도커는 굉장히 편리하지만 도커 컨테이너만으로 서비스를 구성한다면 여러 대의 서버에 컨테이너를 배포하는 과정을 수동으로 제어해야 합니다.
이는 대규모의 서버에서 하기에는 굉장히 힘든 작업이 될 것입니다. 하지만 컨테이너 오케스트레이션 시스템을 이용한다면 해당 테스크를 모두 자동화할 수 있으므로 시스템 운영이 굉장히 수월해집니다.
쿠버네티스 특징
선언적 API
쿠버네티스의 가장 큰 설계 원칙은 API가 선언적이라는 것입니다.
컨테이너가 어떤 상태이길 원하는지만 쿠버네티스에 설정하면 지속해서 컨테이너의 상태를 확인합니다.
설정한 상태에서 벗어나게 되면 쿠버네티스가 설정에 맞게 맞춘다는 개념입니다.
워크로드 분리
쿠버네티스는 운영체제처럼 분산된 프로세스의 관리를 추상화하는 레이어가 되므로 시스템 운영에 관한 고민을 많이 덜어주게 됩니다.
어디서나 실행가능
쿠버네티스가 지금처럼 인기를 얻게 된 주요 원인입니다.
개인 컴퓨터, 여러 대의 서버, 퍼블릭 클라우드, 웹 등 어디서나 실행이 가능합니다.
커뮤니티
인기 있는 소프트웨어의 특징으로 활성화된 커뮤니티가 있습니다.
쿠버네티스는 인기 있는 소프트웨어로 이용자가 많고 커뮤니티가 활성화되어 있어 관련 정보를 얻기에 굉장히 수월합니다.
'Study > DevOps' 카테고리의 다른 글
4. 쿠버네티스 아키텍처 (0) | 2023.03.09 |
---|---|
3. 쿠버네티스로 컨테이너 실행하기 (0) | 2023.03.02 |