Docker 사용 이유
Docker란 무엇인가?
-
도커는 오픈소스 프로젝트이자 리눅스 컨테이너에 초점을 맞춘 신생업체의 이름이다. 여기서 컨테이너(Container)란 여러 개의 애플리케이션을 단일 호스트에서 구동하기 위한 개념이다. 컴퓨팅 가상화와 유사하지만, 컴퓨팅 가상화가 여러 개의 운영체제를 생성하기 위해 서버를 가상화하는 것과는 달리 컨테이너는 본질적으로 운영체제를 가상화해 단일 호스트에서 다중 워크로드를 구동할 수 있는 좀 더 가벼운 대안을 제시한다.
-
docker는 go언어로 만들어졌다. go언어 배우기는 비교적 간단한 편이니 다음에 go언어를 이용하여 프로젝트를 진행해봐야겠다.
컨테이너는 무엇인가?
-
컨테이너, 구체적으로는 리눅스 컨테이너는 완전히 새로운 개념은 아니다. 오라클이나 HP, IBM 등의 대형 업체들은 10여 년 전부터 컨테이너를 사용해 왔다. 그렇지만 최근 몇 년 동안 오픈소스 프로젝트 도커가 그 대안으로, 또는 가상화의 보완책으로 인기를 얻은 것이다.
-
컨테이너가 제공하는 이점 중 하나는 이식성이다. 컨테이너는 가상머신이나 베어메탈 서버 상에서 구동할 수 있다. 자체 인프라에서도 구동할 수 있고, 클라우드 상에서 구동할 수도 있다. 이는 소프트웨어 개발과 관련된 초기에 컨테이너가 가장 많이 사용되는 영역 중 하나가 될 것이다. 프로그래머들은 애플리케이션을 작성해 이를 컨테이너에 담고, 애플리케이션 자체는 컨테이너에 담겨진 상태로 다양한 환경으로 옮겨질 수 있다.
-
유명 블로거 스콧 로위는 “다른 한편으로 컨테이너는 격리 효과는 적지만 호스트의 커널과 운영체제 인스턴스의 특정 부분을 공유하기 때문에 과부하가 적다”라고 설명했다. 컨테이너는 단일 운영체제를 사용하는 환경에서는 매력적인 선택이지만, 여러 운영체제를 구동해야 할 필요가 있는 환경에서는 가상머신과 하이퍼바이저가 유용한 방안이다. 가상머신이 필요 없어지는 것은 아니지만, 특정 애플리케이션을 구동하는 데 있어서는 컨테이너가 가상화보다 더 나은 방법이 될 수 있다.
간단한 사용 이유
어느 환경이나 동일하게 작용하기 때문이다.
복잡한 사용 이유
도커는 시스템 자원을 좀 더 효율적으로 이용할 수 있다.
- 컨테이너에 담긴 앱은 가상 머신보다 훨씬 더 적은 메모리를 사용한다.
- 컨테이너형 가상화 기술은 운영체제 대부분을 호스트 운영체제와 공유하기 때문에 실행에 걸리는 시간이 수초 가까이 짧아진다.
도커는 소프트웨어 업데이트를 쉽게 할 수있다
- 도커는 신기능을 쉽게 추가 할 수 있고 롤백도 신속하게 할 수 있다.
- 도커는 서버를 코드로 관리하기 때문에 수정, 폐기, 구축이 용이하다.
도커는 애플리케이션 이동을 가능하게 한다.
- 도커 컨테이너는 애플리케이션이 실행해야 하는 모든 것을 캡슐화하기 때문에 애플리케이션이 환경들 사이에서 손쉽게 이동할 수 있다. 도커 런타임이 설치된 호스트라면, 그것이 개발자의 노트북이든, 개별 퍼블릭 클라우드든, 도커 컨테이너를 실행할 수 있다.
도커는 마이크로서비스 아키텍처에서 빛을 발한다
- 경량이고, 이동성 있고, 자족형인 도커 컨테이너는 미래 지향적 사고 경로를 따라 소프트웨어를 구축하는 것을 더 쉽게 해준다. 따라서 내일의 문제를 어제의 개발 방식으로 해결하려고 시도할 필요가 없다.
- 마이크로서비스 > 마이크로 서비스는 대형 소프트웨어 프로젝트의 기능들을 작고 독립적이며 느슨하게 결합 된 모듈로 분해하여 서비스를 제공하는 아키텍처 입니다.
변화하지 않는 실행 환경으로 멱등성(Idempotency)확보
- 애플리케이션은 운영체제, CPU, 메모리 ,언어 런타임, 라이브러리 다양한 요소에 의존성을 가질 수 있다. 이러한 환경의 차이를 가능한 배제하는것이 docker이다
코드를 통한 실행 환경 구축 및 애플리케이션 구성
실행 환경과 애플리케이션의 일체화로 이식성 향상
시스템을 구성하는 애플리케이션 및 미들웨어의 관리 용이성
몇가지 걱정
전부 쓸데없는 걱정
도커의 신뢰성에 대한 의문
- 몇넌동안 도커는 전 세계 운영 환경에 도입됐으며 주류에 편입되고 신뢰성도 인정받았다.
성능 면에서의 우려
- 도입 이전과 비교했을때 성능저하를 보인적도 없으며 높은 수준의 SLA을 달성하고 있다.
현실적으로 운영이 가능한지에 대한 우려
- GKE, ECS등 컨테이너 운영 관리서비스가 갖춰져 있다.
도커는 만능일까?
- 데이터 스토어처럼 도커를 운영하기 어려운 분야도 존재한다.