2021-04-13 Container 기초개념
기존 방식은 HostOS 위에 GuestOS를 생성하고 그 위에서 돌기 때문에 너무 무거움. 반면 Container를 사용하면
단일 Host OS에서 여러개의 process가 각각 독립된 공간으로 인식하고 돌기 때문에 가볍고 빠르다.
격리 기술 -> namespace 와 Cgroup
namespace - 사용되는 다양한 변수 등의 name들을 분리해서 각 group이 독자적으로 사용하게 함. (A group B group 이 서로 분리되게 하여 같은 이름(process 1, process 2...)을 사용하더라도 논리적으로 분리돼서 괜찮음.)
cgroup - process group의 cpu, memory 등의 system resource를 격리.
process가 사용하는 시스템 자원용량 제한
Container - 돌고자 하는 program이 필요한 library, setting 해야 하는 configuration 등을 한꺼번에 표준화된 방법으로 packaging 화 해둔 것.
Standard Packaging
표준화된 방법으로 prgram에 필요한 lib, config 등을 패키징화 해둠.
Isolation and Efficiency
시스템 자원 사용량 격리. Container간 namespace 격리.
Portable
이식성 우수. 관계없이 돌아갈 수 있음.
Separation of Concerns
걱정할 거리. 가 없음.(Infra관리에 대한 걱정이 없음)
Self-Service
모든 bin/lib들이 packaging화 되어 있어서 부수적으로 다른 것 없이 돌아갈 수 있음.
API-Driven
MSA들의 연결--Restful API를 이용
Elastic
즉 Agile 하다. 복제, 축소, 교체 등이 유연하다.