클라우드 전문정보

제목 [2부] 국제표준문서에서 컨테이너의 기능적 요구 사항
등록일 2023-11-27 조회수 154

상명대학교 / 서광규 교수

 



 

 

2. 클라우드 컴퓨팅의 컨테이너

컨테이너는 클라우드 컴퓨팅이 지원하는 가상화된 리소스를 사용하는 일종의 OS 수준 가상화이다. 또한, 클라우드 컴퓨팅에는 다수의 가상호스트가 제공되며, 각 가상호스트에는 다수의 컨테이너가 배치되어 운영된다.

클라우드 컴퓨팅에는 컨테이너 프로비저닝 방법이 두 가지 있다. 첫 번째는 그림 5 a)와 같이 VM의 게스트 OS에 있는 컨테이너이고, 다른 하나는 그림 5 b)과 같이 호스트 OS에 있는 컨테이너이다.

 


[그림5. 클라우드 컴퓨팅의 컨테이너 실행 기능]

 

그림 6은 컨테이너와 클라우드 컴퓨팅의 관계를 보여준다. 클라우드 컴퓨팅은 컨테이너를 위한 인프라를 제공한다. 컨테이너는 클라우드 컴퓨팅에서 VM 유무에 관계없이 호스트 OS에서 작동된다.

 


[그림6. 클라우드 컴퓨팅과 컨테이너의 관계]

 

클라우드 컴퓨팅 참조 아키텍처 측면에서

CSP(클라우드 서비스 공급자)는 컨테이너를 통해 IaaS, PaaS, SaaS 등을 제공한다. 또한 컨테이너는 클라우드 서비스를 사용하여 애플리케이션을 지원한다. 컨테이너 내의 애플리케이션은 VM의 클라우드 서비스와의 호환성을 고려하여 설계된다.

클라우드 서비스 파트너(CSN)는 컨테이너 관리 및 클라우드 서비스를 이용하여 컨테이너의 애플리케이션을 개발하고, CSP는 CSN 개발의 편의를 위해 클라우드 서비스를 사용할 수 있는 인터페이스를 제공한다.

클라우드 서비스 고객(CSC)은 컨테이너뿐만 아니라 컨테이너의 애플리케이션과 함께 클라우드 서비스를 사용한다.

 



 

3. 클라우드 컴퓨팅에서 컨테이너를 지원하기 위한 기능적 요구 사항

3-1.컨테이너의 기능적 요구사항

3-1-1. 컨테이너 엔진의 기능적 요구사항

 

1) 컨테이너 엔진은 커널에서 애플리케이션을 실행해야 한다.

※ 참고 1 – 컨테이너 엔진은 커널 프로세서를 사용하여 컨테이너 파일의 실행 명령으로 애플리케이션을 실행한다.

2) 컨테이너 엔진은 호스트 네트워크와 분리된 네트워크 인터페이스를 제공해야 한다.

※ 참고 2 – 컨테이너 엔진은 애플리케이션에 따라 네트워크 네임스페이스를 설정한다.

※ 참고 3 - 네트워크 네임스페이스는 컨테이너가 사용하는 네트워크와 가상 네트워크 인터페이스를 사용하는 호스트가 사용하는 네트워크와 애플리케이션 및 사용자 간 통신을 위한 라우팅을 분리하는 것을 의미한다.

※ 참고 4 - 네트워크 네임스페이스는 호스트 네트워크와 매핑된 포트 또는 새로운 인터넷 프로토콜 주소를 애플리케이션에 할당한다.

※ 참고 5 – 네트워크 인터페이스에는 여러 노드와 여러 클러스터의 여러 컨테이너에 대한 인터페이스가 포함된다.

3) 컨테이너 엔진은 애플리케이션을 위한 컨테이너 파일 시스템을 제공해야 한다.

※ 참고 6 - 컨테이너 파일 시스템은 빠른 입출력(I/O)을 위해 고성능 저장 장치에서 실행된다.

※ 참고 7 – 고성능 저장 장치에는 주 메모리, RAM(Random Access Memory), NVMe(Non-Volatile Memory Express) 및 이들의 결합된 저장 장치가 포함된다.

※ 참고 8 – 결합된 저장소에는 블록 저장 장치와 결합된 RAM 디스크, 네트워크 인터페이스에 연결된 NVMe 또는 SSD, 클라우드 저장소를 포함한 다른 저장소와 연합된 저장소가 포함된다.

4) 컨테이너 엔진은 컨테이너 파일 시스템의 고가용성을 제공하는 것이 좋다.

※ 참고 9 – 고가용성을 위해 이미지 계층의 컨테이너 이미지는 공유 저장소를 통해 다른 호스트와 공유된다.

※ 참고 10 – 공유 저장소는 고가용성을 위해 모든 이미지 계층의 컨테이너 이미지를 백업하고 동기화한다.

5) 컨테이너 엔진은 애플리케이션이 사용할 컨테이너 파일 시스템 내 컨테이너 이미지의 위치 정보를 제공하는 것이 좋다.

※ 참고 11 - 위치 정보는 병합된 레이어에 존재하며 다른 레이어에 있는 디렉터리의 마운트 정보를 제공한다.

6) 컨테이너 엔진이 스토리지 볼륨을 할당하는 것이 필요하다.

※ 참고 12 – 저장소 볼륨은 바인딩 호스트 파일 시스템, 마운트 호스트 저장소 장치, 호스트 디렉터리 및 원격으로 연결된 저장소에 제공된다.

※ 참고 13 - 컨테이너 엔진은 적시에 또는 지속적으로 애플리케이션에 스토리지 볼륨을 할당한다.

7) 컨테이너 엔진은 스토리지 볼륨 사용량에 대한 모니터링을 제공해야 한다.

8) 컨테이너 엔진은 읽기/쓰기 명령을 수신하기 위해 스토리지 볼륨에 대한 표준 I/O 인터페이스를 제공해야 한다.

9) 컨테이너 엔진은 애플리케이션 간에 격리된 커널을 제공해야 한다.

※ 참고 14 – 애플리케이션은 컨테이너 엔진에 의해 설정되는 사용자 네임스페이스, 파일 시스템, 프로세스 식별자(ID), 메모리 및 CPU 제한에 의해 격리된다. 할당된 네임스페이스는 각 애플리케이션이 커널의 리소스를 격리할 수 있는 독립적인 공간을 제공한다.

10) 컨테이너 엔진은 컨테이너 레지스트리에 푸시할 컨테이너 이미지를 빌드해야 한다.

※ 참고 15 – 컨테이너 엔진은 컨테이너 이미지를 기반으로 실행 중인 애플리케이션을 다시 빌드하고 재사용을 위해 컨테이너 레지스트리로 가져온다.

11) 컨테이너 엔진은 컨테이너 레지스트리에서 애플리케이션을 실행하기 위해 컨테이너 이미지를 가져와야 한다.

12) 컨테이너 엔진은 쉬운 운송을 위해 패키징된 컨테이너 이미지를 제공해야 한다.

13) 컨테이너 엔진은 컨테이너 이미지에 이미지 객체를 제공해야 한다.

※ 참고 16 - 이미지 객체에는 컨테이너 파일 시스템의 라이브러리, 파일 시스템 및 바이너리가 포함된다.

14) 컨테이너 엔진은 컨테이너 이미지에 이미지 매니페스트를 제공해야 한다.

15) 컨테이너 엔진은 컨테이너 파일로부터 애플리케이션 실행 절차를 제공해야 한다.

16) 컨테이너 엔진은 컨테이너 파일을 재사용하여 새 컨테이너 이미지를 생성하는 것이 좋다.

※ 참고 17 – 컨테이너 엔진은 컨테이너 이미지에서 이미 생성된 컨테이너 파일을 재사용하고 부분 컨테이너 파일에서 새 컨테이너 파일을 다시 생성한다.

※ 참고 18 – 부분 컨테이너 파일은 재사용할 컨테이너 정보, 애플리케이션 이름, OS 및 버전을 포함하는 컨테이너 파일의 일부이다.

※ 참고 19 - 컨테이너 엔진은 부분 컨테이너 파일과 컨테이너 이미지의 버전을 확인하고, 컨테이너 이미지를 생성하고, 재생성된 컨테이너 파일을 레지스트리에 푸시하여 다른 애플리케이션을 재사용한다.

17) 컨테이너 엔진은 컨테이너 레지스트리에서 컨테이너 이미지의 위치를 검색해야 한다.

※ 참고 20 - 컨테이너 이미지에 할당된 이미지 ID는 검색을 위한 해시된 숫자이다.

18) 컨테이너 엔진은 스토리지 용량을 절약하기 위해 컨테이너 파일 시스템에서 중복된 컨테이너 이미지를 제거해야 한다.

19) 컨테이너 엔진은 컨테이너 이미지에 대한 로컬 레지스트리를 제공하는 것이 좋다.

※ 참고 21 – 로컬 레지스트리에는 컨테이너 파일 시스템의 이미지 계층이 포함된다.

 



 

3-1-2. 컨테이너 관리 시스템의 기능적 요구사항

1) CMS는 단일 컨테이너에 대한 관리를 제공해야 한다.

※ 참고 1 - 단일 컨테이너의 관리에는 컨테이너 수명주기, 네트워크, 실행 애플리케이션, 컨테이너 엔진 구성, 버전 관리, 보안, 로그 및 호스트 관리가 포함된다.

2) CMS는 단일 컨테이너에 대한 컨테이너 엔진에 대한 액세스를 인증해야 한다.

3) CMS는 단일 컨테이너의 컨테이너 엔진에 대한 원격 액세스를 제공해야 한다.

4) CMS는 여러 컨테이너에 대한 관리 기능을 제공해야 한다.

※ 참고 2 – 다중 컨테이너 관리에는 다중 호스트 OS의 컨테이너 관리, 컨테이너를 분산 시스템으로 확장 및 컨테이너 클러스터링이 포함된다.

5) CMS는 여러 컨테이너에 대한 공유 리소스를 제공하는 것이 좋다.

※ 참고 3 – 공유 자원에는 네트워크와 저장 장치가 포함된다.

6) CMS는 가용성에 대한 응용 프로그램의 상태를 모니터링하는 것이 좋다.

※ 참고 4 - 애플리케이션의 상태에는 그것이 작동 중인지 여부가 포함된다.

7) CMS는 할당된 자원 한도를 초과하지 않도록 애플리케이션의 자원 활용도를 모니터링해야 한다.

※ 참고 5 – 애플리케이션 자원에는 CPU, 메모리 및 저장소가 포함된다.

8) 컨테이너의 가용성을 보장하려면 CMS의 부하 균형이 필요하다.

※ 참고 6 – 로드 밸런싱의 대상에는 CPU, 메모리, 스토리지, 네트워크 및 그래픽 처리 장치 또는 텐서 처리 장치와 같은 가속기가 포함된다.

9) CMS는 실행 시 해당 위치를 찾기 위해 애플리케이션을 검색하는 것이 좋다.

10) CMS는 확장 정책에 따라 컨테이너의 크기를 조정하는 것이 좋다.

※ 참고 7 – 확장 정책에는 리소스 부하 분산과 같은 사용자 정책을 기반으로 컨테이너 수의 확장 또는 축소가 포함된다.

11) CMS는 사용자 요청에 따라 컨테이너에 대한 리소스를 재할당하는 것이 좋다.

12) CMS는 작업 부하에 따라 리소스 활용도를 최적화하는 것이 좋다.

13) CMS는 여러 호스트에 걸쳐 컨테이너를 클러스터링하는 것이 좋다.

14) CMS는 컨테이너 레지스트리 간에 컨테이너 이미지를 동기화하는 것이 좋다.

 



 

3-2. 컨테이너를 지원하기 위한 클라우드 컴퓨팅의 기능적 요구 사항

1) CSP는 호스트의 커널에 맞춰 컨테이너 엔진을 제공해야 한다.

※ 참고 1 – 컨테이너 엔진은 호스트 OS의 커널에 의존한다.

2) 클라우드 서비스 개발을 위해서는 CSP가 CSN에 CMS를 제공하는 것이 좋다.

3) CSP는 컨테이너로 구현되는 클라우드 서비스를 제공하는 것이 좋다.

4) CSP는 베어메탈 머신뿐만 아니라 VM의 게스트 OS에도 컨테이너를 제공하는 것이 좋다.

※ 참고 2 – VM의 게스트 OS에 있는 컨테이너는 기존 클라우드 인프라를 변경하지 않고 사용된다.

5) CSP는 CSN용 VM 및 컨테이너에서 실행되는 애플리케이션의 성능을 평가하는 것이 좋다.

6) 다수의 CMS를 사용하기 위해서는 CSP가 네트워크를 관리하는 것이 좋다.

7) CSP는 컨테이너와 VM의 애플리케이션 간 호환성을 제공하는 것이 좋다.

8) CSP는 컨테이너가 실행되는 호스트에 대한 정보를 제공하는 것이 좋다.

※ 참고 3 – 호스트 정보에는 OS, 베어메탈 머신 및 VM이 포함된다.

9) CSP는 컨테이너 이미지를 업로드하기 위해 여러 컨테이너 레지스트리를 제공해야 한다.

10) CSP는 컨테이너 레지스트리에 대한 정보를 CMS 및 CSN에 제공하는 것이 좋다.

※ 참고 4 - 컨테이너 레지스트리에 대한 정보에는 위치, 액세스 메커니즘 및 권한 규칙이 포함된다.

11) CSP가 컨테이너에 대한 보안 액세스를 제공하는 것이 좋다.

※ 참고 5 – 보안 액세스에는 게이트웨이 정보와 방화벽 구성이 포함된다.

 

 


참 고 문 헌


  1. ITU-T Y.3535 (2022) Cloud computing – Functional requirements for a container
  2. ITU-T Y.3532 (2023) Cloud computing - Functional requirements of Platform as a Service for cloud native applications
  3. ITU-T X.1601 (2015) Security framework for cloud computing


저작권 정책

K-ICT 클라우드혁신센터의 저작물인 『국제표준문서에서 컨테이너의 기능적 요구 사항』은 K-ICT 클라우드혁신센터에서 상명대학교 서광규 교수에게 집필 자문을 받아 발행한 전문정보 브리프로, K-ICT 클라우드혁신센터의 저작권정책에 따라 이용할 수 있습니다. 다만 사진, 이미지, 인용자료 등 제3자에게 저작권이 있는 경우 원저작권자가 정한 바에 따릅니다.