카테고리 없음

[스터디] micro service, docker container, container 서비스 관련

yunzema 2019. 9. 25. 16:44
반응형

docker 의 장점, 사용 이유

 

* Docker는 주로 하나의 애플리케이션 환경이 여러 대의 노드상에서 구동되어야 하는 확장성이 필요한 환경에서 매우 강력한 장점을 발휘할 수 있습니다. 클라우드 환경이 성숙됨에 따라 IT는 개발, 배포, 운영의 순환 구조의 애자일 개발 방법론이 더 빠른 속도를 요구하게 됐고, 이에 따라서 필연적으로 Docker는 더 주목받을 수 밖에 없게 되었습니다.

 

1. 개발자 관점에서 바라본 Docker의 장점
– 하나의 컨테이너는 물리 환경과 가상화 환경에서 모두 호환이 가능하므로 이식성이 매우 우수하다.
– 리눅스의 경우 다양한 배포판이 존재하는데, 개발과 운영환경의 서로 다른 리눅스 상에서도 애플리케이션 수정이 필요 없다.
– 컨테이너간은 완전 격리된 구조로 각 애플리케이션이 독립적으로 실행할 수 있어 버전 충돌이 없다.
– 개발 환경을 꾸미는데 매우 저렴한 비용과 단시간에 가능하므로 개발자가 인프라를 구성하는데 시간을 소모할 필요가 없다.

2. 관리자 관점에서 바라본 Docker의 장점
– 가상화처럼 격리된 가상서버에 별도의 OS를 구동하지 않기 때문에 오버헤드 없이 매우 경량이며, 성능이 우수하다.
– 일반적으로 CPU, 네트워크, 메모리와 디스크 I/O의 성능이 bare metal 대비 98% 이상 나온다.
– Docker 컨테이너는 Host OS관점에서 하나의 파일로 관리가 되므로 다른 플랫폼으로의 마이그레이션과 백업 등의 관리가 매우 편리하다.
– 컨테이너를 이미지화하여 빠른 배포와 서비스 생성이 가능하며, 관리 툴과 연계하여 애플리케이션의 라이프싸이클의 자동화가 가능하다.
– 클라우드와 연계 시 무한의 확장성을 지닌 플랫폼 아키텍처 구성이 가능하다.

 

이처럼 Docker 컨테이너로 개발되는 애플리케이션은 인프라 정보까지 포함한 하나의 이미지이기 때문에, 개발자나 IT운영자가 무한에 가까운 환경 변수에
크게 신경을 쓰지 않아도 되며, 개발 환경의 설정을 실제 운영 환경에서 그대로 사용할 수 있기 때문에 애플리케이션의 개발-운영 프로세스가 단순해집니다.
개발자가 애플리케이션을 Docker 플랫폼을 활용해 개발하면 설정부터 애플리케이션 배포까지 자동화할 수 있고, 이를 기반으로 Docker는 분산된 애플리케이션을
빠르게 개발하고 구동하는데 있어 주목받는 기술로 급부상할 수 있었습니다. 애플리케이션의 라이프싸이클을 관리하고 필요시 확장하는 측면에서는 하이퍼바이저에
기반한 기존 가상화 기술보다 확실히 효과적이라고 볼 수 있습니다.

 

http://www.mantech.co.kr/docker_container/

 

[IT트렌드] 급부상 하는 Docker Container | manTech

컨테이너는 물류의 일대 혁명을 가져왔습니다. 컨테이너는 1950년대 발명이 되었지만 본격적으로 물류에 적용되기 시작한 것은 1960년대 입니다. 컨테이너가 활용되기 이전에는 표준으로 규격화 되지 않은 화물을 실어 나르는데 있어 공간 활용 및 안전한 배송에 많은 문제점들이 발생되었습니다. 하지만 컨테이너가 활용되면서 부터 이러한 문제점들은 사라졌고, 지금은 컨테이너 없이 장거리 화물을 대량으로 배송하는 것 자체를 상상할 수 없습니다. 이러한 물류 산업의 컨

www.mantech.co.kr

*

http://www.mantech.co.kr/micro-service/

 

[IT트렌드] 마이크로 서비스 (Micro Service) | manTech

그림3은 각 서비스 별로 미리 VM Image를 생성한 후 필요할 때 마다 서비스를 VM 으로 배포하는 방식입니다. 이 방식은 각 서비스 별로 간섭이 없기 때문에 장애 상황에 좀 더 유연하게 대처할 수 있습니다. 하지만 Process방식보다는 부팅 시간이 길고 VM 구성에 인한 오버헤드가 존재한다는 점이 단점입니다. 그리고 VM 자원을 최대로 사용할 수 없을 수 있는 점도 단점이라고 할 수 있습니다.

www.mantech.co.kr

 

*컨테이너 배포 관리는 흔히 컨테이너 오케스트레이션 (Container Orchestration) 이라고 불립니다.
컨테이너 오케스트레이션의 목적은 여러 컨테이너의 배포 프로세스를 최적화 하는데 있으며, 이것은 컨테이너와 호스트의 수가 증가함에 따라 점점 더 가치가 있게 됩니다. 이러한 유형의 자동화를 오케스트레이션이라고 합니다.
오케스트레이션은 단지, 컨테이너를 자동 배포하는 기능만 있는 것이 아니라 다음과 같은 다양한 기능을 포함 할 수 있습니다.

• 컨테이너 자동 배치 및 복제
• 컨테이너 그룹에 대한 로드 밸런싱
• 컨테이너 장애 복구
• 클러스터 외부에 서비스 노출
• 컨테이너 추가 또는 제거로 확장 및 축소
• 컨테이너 서비스간의 인터페이스를 통한 연결 및 네트워크 포트 노출 제어

http://www.mantech.co.kr/container_orchestration/

 

[IT트렌드] 컨테이너 오케스트레이션 (Container Orchestration) | manTech

위에서 살펴본 3가지 오케이스레이션 도구는 설정방법과 동작방식이 상당히 다릅니다. Docker Swarm은 Docker 호스트 클러스터를 조정하기 가장 쉬운 방법을 제공하고 있고, Kubernetes는 컨테이너 서비스 배포 및 관리에 많은 이점을 가지고 있습니다. Apache Mesos는 대규모 클러스터링을 지원하고 특히 Hadoop, Kafka 및 Spark 와 같은 다른 서비스와 함께 응용 프로그램을 배치해야 하는 환경에 특히 적합합니다. 위에서 언급

www.mantech.co.kr

https://kubernetes.io/ko/docs/concepts/

 

개념

 

kubernetes.io

 

https://www.44bits.io/ko/post/container-orchestration-101-with-docker-and-aws-elastic-container-service

 

아마존 엘라스틱 컨테이너 서비스(ECS)와 도커(Docker)로 시작하는 컨테이너 오케스트레이션

컨테이너는 격리된 환경에서 애플리케이션을 실행할 수 있도록 도와줍니다. 컨테이너를 프로덕션 환경에서 사용하기 위해서는 적절한 스케줄링과 관리를 위한 도구가 필요합니다. 이 글에서는 AWS에서 제공하는 매니지드 컨테이너 오케스트레이션 서비스인 ECS를 소개합니다.

www.44bits.io