본문으로 건너뛰기
🐨코알라 오딧세이
🐨
이다운
코알라 오딧세이

새 글 알림 받기

© 2026 이다운

글 목록
수업/지식관리시스템

[5주차] Container Based Service

박사과정 빅데이터서비스모델링 수업 5주차 — 컨테이너 기반 서비스 격리 원리, 가상화 비교, Kubernetes 개요

[5주차] Container Based Service

대학원 수업 / 빅데이터서비스모델링

이번 주 수업 주제는 컨테이너 기반 서비스(Container Based Service) 입니다.


서비스 간 자원 격리의 필요성

마이크로서비스는 배포 주기가 짧기 때문에 배포로 인한 문제가 발생할 수 있습니다. 서비스 간 공간 격리가 이루어질 경우 배포 리스크를 안정적으로 격리할 수 있습니다.

격리 방법은 크게 세 가지로 나뉩니다.

1) 물리 서버 격리: 가장 완벽한 격리지만 불필요한 자원 낭비와 관리 비용이 증가합니다.

2) 가상 서버(VM) 격리: 가상 서버 하나에 마이크로 서비스 하나를 구동합니다. 각 서비스가 개별 커널을 가지기 때문에 Linux 기반의 마이크로서비스 10개를 구동하려면 10개의 Linux 커널이 필요합니다. 가상화 오버헤드로 인해 Host 메모리 자원 낭비 문제가 발생합니다.

3) 컨테이너 격리: 컨테이너는 Host OS의 커널을 공유하면서 그 외 자원(GNU 라이브러리 등)은 서비스별로 격리합니다. 오버헤드가 적지만, 커널은 공유하면서 개별 격리된 라이브러리를 사용하기 때문에 호환성 충돌이 발생할 가능성이 있습니다.


가상화 vs 컨테이너화 비교

항목 가상화 (Virtualization) 컨테이너화 (Containerization)
커널 개별 인스턴스에 독립 호스트 커널 공유
구현 방식 Virtual Machine 위에 OS 설치 Namespace 분리에 의한 자원 격리 (Linux 기준)
오버헤드 상대적으로 많음 상대적으로 적음
호환성 Host Native OS와 거의 동일 커널과 라이브러리 간 호환성 문제 발생 가능

Linux 커널과 Linux OS의 차이

컨테이너를 이해하려면 Linux 커널과 Linux OS의 차이를 알아야 합니다.

Linux 커널은 운영체제의 핵심 부품으로, 하드웨어 자원(메모리, CPU, 디바이스 등)을 관리하고 프로그램이 하드웨어와 소통할 수 있게 합니다.

Linux OS는 커널뿐만 아니라 GNU C Library(glibc) 같은 시스템 라이브러리와 다양한 사용자 공간 도구들로 구성됩니다.

예를 들어, C언어의 malloc() 함수는 직접 커널 시스템 콜을 호출하는 것이 아니라 glibc를 통해 간접적으로 호출됩니다. 이 라이브러리와 커널 간의 통신 방식에 차이가 있다면 호환성 문제가 발생할 수 있습니다.

Android 사례: Android도 Linux 커널을 사용하지만, GNU 라이브러리 대신 Android 전용 라이브러리(Bionic)를 사용합니다. 그래서 Android와 Ubuntu는 같은 커널 위에서 동작할 수 있지만, OS 라이브러리와 사용자 공간의 구현이 달라 "Android is not Linux" 라는 표현이 나온 것입니다.

즉, Linux 커널을 사용하는 것과 완전한 Linux OS를 사용하는 것은 다릅니다.


이기종 OS에서의 컨테이너화

Windows, macOS처럼 Linux가 아닌 OS에서는 Linux 전용 라이브러리(GNU 라이브러리 등)를 직접 실행할 수 없습니다. 따라서 Linux 컨테이너를 사용하려면 가상화 기술을 통해 먼저 Linux 환경을 구성해야 합니다.

  • Windows: 과거 VirtualBox → Hyper-V → 현재 WSL(Windows Subsystem for Linux) 방식으로 발전
  • macOS: LinuxKit 같은 경량 하이퍼바이저를 통해 Linux 환경 구성

핵심 차이는 다음과 같습니다. 가상머신은 10개의 서비스를 위해 10개의 독립된 OS 인스턴스를 실행합니다. 반면 컨테이너는 하나의 VM 내에서 여러 컨테이너가 커널을 공유하며 동작하므로, 10개의 컨테이너가 하나의 VM 위에서 훨씬 가볍게 운영됩니다.

이기종 OS에서 컨테이너화를 위해 가상화 기술이 필요하더라도, 모든 서비스 인스턴스를 개별 가상머신으로 구동할 필요는 없다는 점이 컨테이너의 큰 장점입니다.


Kubernetes

컨테이너가 많아지면 이를 관리하는 도구가 필요해집니다. Kubernetes(쿠버네티스) 는 컨테이너화된 애플리케이션을 효율적으로 관리하기 위한 오픈소스 플랫폼입니다.

주요 특징은 다음과 같습니다.

  • 자동화된 관리: 애플리케이션의 배포, 확장, 업데이트, 복구를 자동으로 수행합니다.
  • 컨테이너 오케스트레이션: 여러 서버에 분산된 컨테이너들을 하나의 클러스터로 묶어 중앙 집중적으로 관리합니다.
  • 유연성과 확장성: 수천 개의 컨테이너도 쉽게 관리할 수 있어, 클라우드와 온프레미스 환경 모두에서 안정적인 운영을 지원합니다.

관련 글

댓글

0 / 1000