나만의 가상화 컨테이너 만들기 #3 설계

Eric·2022년 1월 23일
0
post-thumbnail

📕 개요

이번 시간에는 가상화 컨테이너 도구의 설계를 진행해보겠습니다.

🔧 설계

설계는 크게 목표 기능과 스택으로 나누어 진행해보려 합니다.

목표 기능

  • 컨테이너 매니저(RESTAPI 서버)
    • 컨테이너의 생성/삭제/중단/재시작
    • RESTAPI를 통한 관리
  • 컨테이너 가상화
    • 프로세스/파일시스템/네트워크 등등 격리기능 제공
    • 유니온 파일시스템(Docker 방식)
    • 시스템 리소스 할당(CPU, 메모리)

스택

저희는 컨테이너 가상화를 구현하기 위해 Linux에서 제공하는 시스템 라이브러리를 사용할 예정입니다. 그런데, 이 시스템 라이브러리C 계열 언어에서만 사용이 가능한 것을 알게 되었습니다. 그래서 C++을 통해 JNI 라이브러리를 만든 후, Kotlin에서 임포트해 사용하는 것으로 결정했습니다.

  • 컨테이너 매니저(RESTAPI 서버)
    • Spring Boot(Kotlin)
    • MariaDB(Spring Data JPA)
  • 컨테이너 가상화
    • Linux 커널에서 제공하는 기능들(cgroup, namespace)
    • C++ 언어로 JNI(Java Native Interface) 라이브러리 구현

👏 마무리하며

다음 시간부터는 컨테이너 가상화를 직접 구현해보기 위해서, cgroup을 비롯한 기능들을 사용해보려 합니다. 아마 각 게시글들은 다음과 같은 목차로 진행이 될 거 같습니다 :

  1. 기술에 대한 설명
  2. 구현 예제를 C++ 애플리케이션으로 직접 작성
  3. 실제 JNI 라이브러리 코드 작성

그럼 빠른 시일 안에 다시 찾아뵙도록 하겠습니다.
감사합니다.

profile
Backend Engineer | 코드로 우리의 세상을 어떻게 바꿀 수 있는지 고민합니다

0개의 댓글