1. The Problem of Isolation
90년대 초반인 2000년대 초에 메인프레임에서 PC 로 옮겨졌다.
회사에 서버 두어개 정도를 보유하고 있었으며 1인당 100개의 서버를 관리하는 건 불가능했다.
비싸고 큰 서버를 가지고 있었고 앱 하나로 모든 리소스를 소비하는 건 드물었다,.
그렇기에 모든 앱을 한 서버에 올릴 수 있었고 그에 따라 서버가 불안정해지고 관리하기 어려워졌다.
하지만 하나의 앱에 대해 하나를 변경해야 할 때도 있고, 또 다른 앱은 다른 것을 필요로 할 수 있었다.
동시에 각 서버에 더 많은 것을 넣고 싶었지만 격리된 것은 없었다. 모든 앱이 같은 파일 시스템에 존재하였다.
2. one app, one VM
그러면서 VM 이 등장했다.모든 응용 프로그램을 추상화할 수 있었고 같은 큰 호스트에 있는 더 작은 VM에 더 적은 응용 프로그램을 둘 수 있었다. 2010년대 초반에는 서버가 아주 많았다. 서버를 한꺼번에 관리하기가 아주 힘들었고, 한명의 관리자가 수십개의 서버를 관리해야 했다.
How Does Docker help?
관리해야 할 인프라 양을 줄이는 동시에 작업 고립을 보장해 불안정해지거나 관리가 어렵지 않게 합니다.
OS가 많은 VM들을 불필요하게 확장하는 대신에, 컨테이너들이 VM 처럼 격리를 제공한다.
고유의 IP주소와 고유의 파일시스템, 고유의 프로세스 스페이스가 있는 곳이다. VM 처럼 보이지만 모든 운영체제가 필요하지 않는다.
The Problem of Environments
다양한 OS와 Docker 가 만들어지면서 구성이 다르고 의존도, 종속석이 다 다르다. 환경이 모두 달랐다.
개발자가 Mac에서 사용하는 앱이 어떻게 Windows 에 다르게 적용해야 할지 설치되어야하는지 대한 부분도 예를 들 수 있다.
컨테이너 이미지와 컨테이너 자체가 근본적인 추상은 실행장소와 내부에서 실행되는 것 간의 계약이 되어있다.
마치 실세계의 컨테이너처럼 전 세계로 상품을 운송할 수 있다. 엄청난 양의 컨테이너가 전 세계에서 배송되는 걸 추상적으로 표현한 것이다. 이미지와 도커 컨테이너도 그렇다.
OCI 표준으로 일관된 표준 형식이다. 컨테이너를 실행하는 곳이 어디든 동일한 방식으로 실행될 것이다. 빌드된 것과 정확히 동일한 종속성으로 가능하다.
The Problem of Speed
물론 CPU 속도를 말하는 것은 아니다. CPU 속도는 시간이 지나면서 빨라지지만 이 것은 비즈니스의 속도를 이야기한다.
IT와 소프트웨어 소프트웨어 라이프사이클은 사실 기업과 조직이 자신들의 아이디어를 실행하고 고객에게 가능한 빨리
소프트웨어 아이디어를 전달 할 수 있는 능력에 관한 것이다.
Mainframe to PC : 과거에 올라가보면 메인프레임을 분산 아키텍처 PC 로 옮길 수 있었다. 변화를 배포하는 속도가 관건이었다. 하나의 컴퓨터에 DOC를 설치 할 수 있었다. 메인 프레임이 다음 유닉스 버전으로 업데이트 될 때까지 기다릴 필요가 없었다.
Baremetal to Virtual : 하드웨어에서 구현되고 데이터 센터에서 구현되는 것을 기다리는 것이 지겨워졌다. 더 빨리 진행하고 자원을 더 효울적으로 사용하고 싶어졌기 때문이다. 가상화 가상컴퓨터는 이런 이유로 인기를 끌었다.
Datacenter to Cloud : 데이터 센터에서 클라우드로 전환이 되었다. 이젠 하드웨어와 데이터 센터가 허용하는 것 그 이상으로 아이디어를 더 빨리 배포할 필요성이 생겨났다. 클라우드는 인스턴스 리소스에 접근 할 수 있게 해줬다.
Host to Container : 너무 많은 호스트, 커널, 운영체제가 있던 대규모 호스트 확장에서 이동한다. 그런 횟수를 줄이고 내부의 작업을 분리해서 같은 커컬에서 안전하게 실행할 수 있다.
Deveolp faster ,Build faster, Test faster ,Deploy faster
도커와 컨테이너는 더 빨리 개발할 기능을 준다. 앱을 더 빨리 빌드하고 더 빨리 테스트하고 더 빨리 서버에 배포한다.
단일 OS내에서의 격리가 더 낫고 시간과 OS 및 종속성 관리가 절약되며 격리 또한 가능해서 애플리케이션을 보호할 수 있다. 변화 속도를 높인다. 소프트웨어 자체뿐 아니라 해당 소프트웨어를 구현하고자 하는 비즈니스를 위해서이다.
'Docker' 카테고리의 다른 글
[쿠버네티스] Dashboard 설정 (0) | 2023.05.13 |
---|---|
[쿠버네티스] ingress (0) | 2023.05.08 |
[docker 시리즈 1] 도커 컨테이너 실행 (1) | 2023.04.25 |
[쿠버네티스] 로깅 아키텍처와 EFK 동작과정 (0) | 2023.04.21 |
도커 및 컨테이너 오케스트레이션 도구를 사용해야하는 이유 1편 (0) | 2023.04.15 |