'docker'에 해당되는 글 2건

  1. 2018.10.23 Container의 정의 및 장점에 대하여
  2. 2017.05.26 Docker와 Kubernetes를 말하다
Cloud2018.10.23 13:55

Docker Container 및 Kubernetes, 그리고 DevOps tool chain을 활용한 Digital Transformation 니즈가 많아지고 있습니다. 많은 분들과 이야기를 해보면 Container라는 단어를 많이 사용하시는데, 정확한 개념에 대해 헷갈려 하시는 경우가 있어서 설명해보고자 합니다. 또한, 활용시 장점도 같이 적어보겠습니다.

 

Container란? 애플리케이션이 실행되기 위해 필요한 코드와 실행에 필요한 환경을 함께 묶은 패키지, On-premise 또는 다른 Cloud 환경으로 빠르고 안정적으로 이관 가능함. 운영체제, Host 서버의 영향을 받지 않도록 패키지형태로 추상화되어 있음.

 

장점

 

1. Consistency (일관성)

Container는 운영되는 환경과 애플리케이션을 분리한다. 즉, Container화한 애플리케이션을 어떤 환경이든, Public Cloud, Private Cloud, 또는 On-premise 환경에 관계없이 빠르고 효과적으로 배포가능하다는 의미이다. Container에는 해당 애플리케이션이 동작하느넫 꼭 필요한 Runtime이나 라이브러리를 포함시킬 수 있기 때문에 개발자가 어떤 운영 환경이든 무관하게 활용 가능하다.

 

2. Productivity (생산성)

Container의 기본 특징이 가볍고, 여러 요소간의 연관성을 분리해놨기 때문에 IT 운영자가 환경 설정을 해야하는 고민을 덜어준다. 개발자가 애플리케이션 로직과 실행에 필요한 환경을 함께 개발해야 하기 때문에 IT 운영자가 고민하던 애플리케이션 버전 및 Configuration 값 설정등의 관리부담이 줄어든다. 테스팅 등에 소요되는 시간을 획기적으로 줄여준다. (DevOps 도입)

 

3. Portability, Agility, Flexibility (이식성, 민첩성, 유연성)

어떤 일이 잘 동작하는 경우 반복하는 것이 바람직하다. 전통적 개발 방법론에서는 해당 호스트 서버에 설정하는 것에서부터 IT 운영자가 운영중인 애플리케이션을 새로운 플랫폼이나 운영체제로 이관하는 것이 굉장히 어려웠다. Container는 Platform 독립적으로 이식성을 제공한다. 또한, 애플리케이션이 실행되기 위해 필요한 코드와 실행에 필요한 환경을 함께 묶은 패키지 방식이기 때문에 다른 운영체제 또는 Platform으로 쉽게 이동 가능하기 때문에 민첩성, 유연성, 그리고 생산성의 장점을 확보 가능하다.

 

4. Security (보안)

Container는 상호간에 교류가 없기 때문에 하나의 Container가 hacking을 당해도 다른 Container들은 문제없이 작동한다.

Posted by 나이스가이
Cloud2017.05.26 13:52

모든 기술은 진화한다.


물리적인 서버, 가상화, 그리고 Infra Cloud (IaaS), 그리고 PaaS (Platform as a Service)로 진화하더니 이제는 Container로 ... 


오늘은 Container에 대한 이야기를 좀 해보려고 한다. 

가장 대표적인 회사가 Docker라고 생각할 것이고, Docker는 CaaS (Container as a Service)를 제공하는 회사이다. 


Container는 VM (Virtual Machine)과 달리, 운영체제를 전부 포함하고 있지 않고 소프트웨어가 동작하는데 꼭 필요한 코드, 런타임, 시스템도구, 시스템 라이브러리와 설정값을 갖고 있다. 리눅스와 윈도우 기반 앱으로 동작하고, 어떤 환경에 배포되더라도 항상 동일한 동작을 한다. Container는 주변 환경과 소프트웨어를 격리시켜주므로 개발, 스테이징 환경 등의 차이에 무관하게 동작한다. VM 대비로 훨씬 적은 자원/공간을 점유하고, 일반적으로 수십 메가바이트 규모이며 대부분 즉시 (초단위로) 구동된다. 


VM (Virtual Machine)은 물리적 하드웨어를 추상화한것으로 봐야하는데, 하이퍼바이저를 통해 하나의 하드웨어에 여러개의 VM을 구동하는 방식이다. 각 VM은 운영체제를 다 설치해야하고 여러개의 애플리케이션과 라이브러리 등을 설치해야 하기 때문에 수십 기가바이트 규모로, 부팅에 오랜 시간이 소요된다. 


일단 container를 사용하고자 마음 먹으면, container를 스케쥴링하고 관리하는 솔루션이 필요하게 된다. 바로 이 역할을 하는 것이 Orchestration 도구인데, 가장 일반적으로 많이 알려진 것이 Kubernetes와 Docker Swarm이다. 그 중에서 완성도가 높고 확장성이 있는 솔루션이 바로 Kubernetes이고, 오픈소스라는 것이 특징이다. (구글이 만들었다.)


개중에는 Docker와 Kubernetes를 비교하는 경우가 있는데, Docker는 orchestration만 제공하는 것이 아닌 훨씬 많은 것을 제공하므로 Docker Swarm과 대응하는 솔루션임을 꼭 기억하자. Docker Swarm은 아직은 좀 더 성숙할 시간이 필요하다고 생각한다. 


Kubernetes에 대해서는 조금씩 자세히 알아보도록 하겠다.





Posted by 나이스가이