Programming/Server

[Youtube] 네이버 클라우드 플랫폼은 어디에 컨테이너를 쓸까? 1/3

bisi 2020. 4. 16. 18:27

네이버 클라우드 플랫폼은 어디에 컨테이너를 쓸까?

유투브 출처 : 네이버 클라우드 플랫폼은 어디에 컨테이너를 쓸까?

 

 

Contents

1. Container Technology 0:00 ~ 22:40
2. NAVER CLOUD PLATFROM 22:40 ~ 27:59
3. NAVER CLOUD PLATFROM + Container Technology 28:00 ~ 39:45

 


 

1. Container Technology

 

1) 정의

  • Operating System의 가상화 
  • 프로그램 뷰에서 보면 하나의 컴퓨터처럼 실행하게 한다. 하지만 실제로는 커널에서 user-space를 분리하여 존재함 

 

2) Vistualization vs Containerization

  • 가장 결정적인 차이는 커널을 쉐어할 것이냐, 아님 커널의 guest os가 따로따로 있을 것이냐. 
  • 커널은 하나지만, user-space상에서는 별개의 다른 컴퓨터, os인것 처럼 동작하게 하느냐
  • container는 containerization되어 있는 application이다. 

 

3) Brief History of Container Technolony

 

 

  • 컨테이너 오래전부터 있었던 개념. 가상화하고 나눠쓰고 싶은 니즈가 있었음 
  • unix changeroot : 파일시스템을 root를 바꿔서 새로운 root를 만든것 처럼 보이게하는 기능 제공. (그럼 여기서부터 새로운 OS처럼 보임)
  • FreeBSD : 커널 내에서 네트워크를 분리해서 사용가능.
  • Solaris  : 정말 컨테이너라고 불리면서 하나의 가상 환경을 만들어주는데 까지 가게됨. 이후 이런것들이 리눅스에도 옮겨졌다.
  • Process Container : 지금의 컨테이너의 시작, 구글 리눅스 코드에 프로세스 컨테이너라는 기술을 넣고, 커널에 반영 -> 이것이 컨테이너 기술의 핵심, 이후 Cgroup이라는 코드네임으로 바뀜.
  • LXC : 커널에 들어가는 기술들을 사용할 수 있게 매니지먼트 툴을 만든 첫번째 리눅스 컨테이너(2008년)
  • Cloud Foundary : 컨테이너 기술들을 받아들였는데, 지금과는 다르게 클라이언트 서버에 데몬이 떠있고, 거기에 api를 호출하여 컨테이너가 실행되는 모듈을 가지고 있었음.
  • LMCTFY : 그러다가 구글이 LMCTFY 라고 하는 오픈 소스 프로젝트를 공개. 이것은 Let me Conatin for you > 너를 위해 다 컨테인에 담아줄께 라는 뜻 
  • libcontainer :커널에 들어있는 코드, 기술들을 쉽게 불러와서 사용할 수 있도록 라이브러리로 만들었다. 도커와 함께 만들다가 지금은 Container Foundation에 도네이션을 한 상태

 

 

  • docker : 2013년에 등장, 이때부터 열풍이 불었다. 컨테이너가 구글은 컨테이너로 gmail 등 모든것을 컨테이너로 실행합니다. 라고 기사를 내고, 많이 주목을 받았다.
  • core os라는 회사에서 새로운 관리툴인 rocker을 내고 있었다.  
  • 그러다가 4년전쯤에 구글이 또 kubernetes를 오픈소스로 공개
  • 내부에서 만들어 쓰고 있던 도구들이 실은 컨테이너를 사용할 때 실은 이런 방식으로 쓰고 있었다는 것을 공개함
  • container라는 기술은 리눅스 커널에 들어가있음 그것들이 잘 실행되고, 어플리케이션이나 서비스 에서 되려면 관리해주고 배치해주는 툴이 필요하다
  • 그런것들을 구글이 만들어 쓰다가 오픈소스로 공개함 지금은 kubernetes이 cncf에 들어가있다.
  • 2016 linux아닌 윈도에서 개발이 시작됨.
  • 컨테이너 기술들은 이쯤에서 개발이 됬고, 지금 시대는 클라우드에서 어떻게 할 것인가에 대한 진행이 되고 있음. 그래서 지금은 다양한 상품들이 kubernetes를 기반으로 발표되고 있다.

 

4) Cgroup : Linux Kernel Control Group

  • 컨네이너 기술의 핵심: Linux Kernel Control Group 

 

  • Cgroup이라고 불리는 리눅스의 한 모듈 혹은 기능 version1과 version2가 있음. 
  • version2는 3.xx, 4.xxx 커널에 쓰이고 있음. 
  • 왜 이런것들이 시작됬나? 프로세스라는 모아놓고 따로 분류하고 관리하고 싶은 생각. 
  • 쉽게 말해서 교수가 있고 실습생이 있고 관리가 있으면 서로 영향을 받지 않고 컴퓨터를 사용할 수 있도록.
  • 그래서 컨테이너가 들어간것

 

5) 리눅스의 컨테이너는 Namespace와 Control Group의 집합이다. 

  • Namespace : 리눅스는 parents, child로 구성, 최상위는 pid1. root가 아닌데 새로운 pid가 있는 것 처럼 바꿔주기 시작하는 것
  • Control Group : 컴퓨터 커널이 관리하고 있는 다양한 자원(cpu, memory등)들을 그룹핑을하여 한꺼번에 제약을 주거나 관리를 할수 있게끔 하는 것. 
  • linux cotainers : Namespace 안에 Control Group들을 합한 것.

 

6) 컨테이너를 왜 사용하는 것인가?

1. 컨테이너는 나의 runtime environment를 한번에 묶고 있기 때문에 다른 환경구성으로 바꾸기가 쉽다. 

개발이나 시스템이 엔지니어링의 걱정 > 새로운 환경 셋팅 > 어디에 가서든 실행가능(but.. 커널버전이 다르면 안되지만..)

 

2. 가상화에 비교하여 컨테이너는 금방 실행된다. 가상화는 guest os라고 하는 os전체가 같이 하나의 가상화되기 때문에 os가 부팅되는 시간이 걸리지만 컨테이너는 단지 프로세스가 새로 뜨는 것이다. 원리는 프로세스가 뜨고 커널이 이것을 구별만해주는 것 뿐임. 프로세스가 뜨고 죽는 시간과 동일 

 

3. 마이크로 서비스의 구현할때 적합한 도구이다.

모듈들을 컨테이너들로 만들면, 변경시 컨테이너만 변경하면 되니까, 변경점이 적다. 하지만 monolotic 어플리케이션 구조에서는 하나변경하면 전체 다 빌드해야함. 

 

 

  • Consistency : 개발환경과 실제로 구현하는 환경이 동일하다는 전제
  • Losse coupling : 커널버전이 동일하다는 전제
  • Workload migration : 클라우드에 workload에 분산. 클라우드 환경이 같다는 전제 
  • Agility : develop life 바뀜. 그러나 microsoft 구조가 만능은 아니다. 에러 생길때 멘붕.

 

7) Container 장단점

 

8) Conainer의 장단점

장점 단점

표준화 누구나 할 수 있다 .

유연하다 

대량은 비용이 줄어든다

빨리 배달 가능하다.

창고에 잔뜩 쌓아놀수 있다.

보안이 좋다. 

 

매일 적재할 수 있는 부두가 있어야한다.(관리 필요)

컨테이너가 실행될 수 있는 투자가 필요함.

컨테이너가 실행되는 플랫폼에 대한 공수가 필요함

쌓아놓으면 위치를 바꾸기 힘들다. 

컨테이너에서 뭐가 없어지면, 한번에 알수가 없다. 

해커가 들어오면 컨테이너를 가져가면 추적 불가능

 

 

9) Container and Cloud 

  • 이러한 단점을 극복하기위해 X-as-a-Service로 제공. 
  • 이런점을 반영한 것이 컨테이너 클라우드화 함.
  • 고려할 점 6가지 
    • Container-as-a-service 
    • Platform-as-a-service 
    • Function-as-a-service
    • On-premise Develoyment
    • Private Cloud Deployment
    • Public Cloud Deployment

 

 

또다른 측면으로 컨테이너와 클라우드 관계를 보자.

클라우드 입장에서는 다양한 tenant들, 다양한 어플리케이션들을 수행할 때, 자원을 공유하고 효율적으로 제공하는 것이 필요

 

  • 전통적인 방식으로(Classic Deployment)는 특정 서버에 특정 어플리케이션이 실행되는 방식. 이렇게 하다보면 computing 자원이 효율적으로 할당되지 않음.
  • 이것을 containerize 화 하고 컨테이너들이 아무대서나 실행할 수 있다면 어떤 서버에서든 실행 가능. 이런 점은 클라우드 입장에서도 다양한 고객들이 자신의 컨테이너 어플리케이션을 클라우드 위에서 자원을 공유하면서도 커다란 컴퓨팅 풀위에서도 실행 가능.

 

10) Search Trend in NAVER

  • Cloud Foundary에 대한 검색 흐름을 보자. 
  • 국내에서는 docker에대한 키워드를 많음.
  • 구글에서도 docker,  kubernetes 에대한 키워드를 많음.
  • 어떤 컨테이너 많이 사용 ? docker,  kubernetes
  • 컨테이너를 주로 어디에다가 실행? virtual machine, public cloud service, private cloud service
  • 컨테이너를 관련해서 어떤 용도로 사용? 새롭게 만드는 cloud native application, light weight stateless applications. (statable application는 조심스러워함)

 

 

 


관련 글 모아보기 

[기타/Youtube] - [Youtube] 네이버 클라우드 플랫폼은 어디에 컨테이너를 쓸까? 1/3

[기타/Youtube] - [Youtube] 네이버 클라우드 플랫폼은 어디에 컨테이너를 쓸까? 2/3

[기타/Youtube] - [Youtube] 네이버 클라우드 플랫폼은 어디에 컨테이너를 쓸까? 3/3