본문 바로가기
  • 오늘처럼

소프트웨어 아키텍처74

Container Network Interface : CNI Container Network Interface : CNI 컨테이너는 자신만의 격리된 공간을 가지게 되며, 이 경우 특정 컨테이너는 컨테이너 안에서 내부적으로 독립된 네트워크 환경을 가지고 있는 것으로 보인다. 즉 외부의 다른 네트워크 환경을 전혀 알 수가 없게 되는 것인데, 여러 개의 컨테이너를 관리하거나 혹은 2개 이상의 모듈로 동작하는 시스템을 각각 컨테이너화 한 경우에는 컨테이너 간의 네트워킹도 필요하게 된다. 이를 위해서 컨테이너에게 가상의 네트워크 리소스를 부여하고 이를 관리해주는 것이 CNI 이다. CNI는 CNCF(Cloud Native Computing Foundation) 에서 관리되는 프로젝트로, 네트워크 인터페이스를 구성하기 위해 필요한 플러그인과 스펙 및 라이브러리로 구성되어 있.. 2021. 9. 3.
Container 기반기술 : Namespace 도커 컨테이너에 대한 소개에서 언급하였듯이, 도커 서비스는 2013년에 처음 등장하였다. 하지만 컨테이너 기술 자체는 이미 훨씬 예전부터 시스템 개발자들 사이에서 사용되었으며, 결국 도커는 리눅스 컨테이너와 관련된 기술들을 패키징하여 더 사용하기 쉽게 만든 하나의 솔루션으로 볼 수 있다. 이러한 컨테이너 서비스는 chroot, cgroup, namespace 와 같은 리눅스 기반 기술들로 구성되어 있는데 여기서는 namespace 에 대해서 조금 더 알아보기로 한다. 리눅스 namespace 는 하나의 운영체제 내부에서, 프로세스들이 각각 별개의 독립된 공간을 사용하는 것처럼 느낄수 있도록 격리된 환경을 제공하는 경량의 프로세스 가상화 기술. H/W를 가상화하는 hypervisor와 달리 동일한 OS 에.. 2021. 9. 2.
Container Runtime 컴포넌트 분석 컨테이너 런타임에 대해서 조사하다보면 OCI나 container-shim 과 같은 생소한 용어들이 보인다. 컨테이너 런타임의 과정에 대해서 조사를 하면서 추가로 Runtime 과 관련된 컴포넌트들을 정리해본다. 먼저 자주 쓰이는 용어들은 아래와 같이 별도로 정리하였다. *OCI (Open Container Initiative) : 컨테이너의 기술적 표준. 혹은 컨테이너 기술 표준을 설계하기 위한 Linux foundation project를 지칭한다. 컨테이너 기술을 구현하기 위해서 구현해야 하는 cgroup, namespace 등에 대한 표준을 정의하였으며 Runtime-spec 과 Image-spec 으로 각각 구분된다. *CRI (Container Runtime Interface) : kubelet.. 2021. 9. 1.
Docker and container runtime 1. 컨테이너 컨테이너는 프로세스가 실행되는 루트를 변경해주는 chroot, 프로세스들의 자원을 제어하는 cgroup(control group), namespace 등의 개념을 이용하여 프로세스를 격리하여 소프트웨어 레벨에서 어플리케이션의 실행 환경을 구현해주는 서비스이다. Virtual Machine 에 비하여 가볍다는 장점이 있어서 2010년 중반 이후 널리 사용되고 있으나, 완전히 새로운 개념은 아니며 과거 Linux 개발자/관리자 사이에서 이미 내부적으로 사용하고 있었던 기능을 쓰기 쉽게 패키징 하였다고 볼 수 있다. (chroot 기능 자체가 이미 1979년 Unix version 7 에서 시스템콜로 구현되었다.) 컨테이너와 도커를 다루는 여러 자료를 보면 runc, lxc, cri-o 와 같이.. 2021. 8. 30.
클라우드 컴퓨팅 : Introduction to cloud computing 클라우드 컴퓨팅에 대하여 클라우드 엔지니어로 활동하면서, 먼저 클라우드 컴퓨팅 혹은 클라우드 서비스에 대한 정의를 명확히 하고 싶었다. ‘클라우드 컴퓨팅’에 대한 정의를 다루는 여러 자료에서 NIST(미 국립표준기술 연구소: National Institute of Standards and Technology)에서 발표한 ‘클라우드 컴퓨팅의 정의’에 대한 내용을 번역하며, 알아보기로 한다. 기본적으로는 번역이지만, 내용에 대하여 의역하며 관련 자료를 추가하였으며, 의미를 강조하고 싶은 부분은 영문을 병행 표기하였다. (원문의 경우 하단의 링크를 통하여 확인할 수 있다) 클라우드 컴퓨팅 클라우드 컴퓨팅은 서비스 제공자가 공유 풀(pool)로 구성한 컴퓨터 리소스를 사용자에게 논리적으로 할당해주는 IT 서비스.. 2021. 8. 27.
kubernetes : overview Kubernetes - overview Application 배포의 흐름 전통적인 어플리케이션 구성 환경의 경우 물리 리소스인 하드웨어 위에 미들웨어로서 운영체제를 구축하고 해당 운영체제 위에서 소프트웨어를 배포하여 서비스를 제공하게 된다. 그러나 이러한 기존 방식에서는 수시로 변동되는 서비스 요청에 따라 네트워크, 스토리지 등의 하드웨어 자원을 효율적으로 사용하기가 어렵다. 이에 자원의 효율적 사용을 위하여 가상화 개념이 도입되었다. 인프라 제공자들은 이러한 가상 머신(Virtual Machine)을 사용하여 완전히 격리된 공간을 제공하였고, 이를 통하여 기존 방식의 자원사용의 비효율성을 해결할 수 있었다. 그리고 2013년 초에 도커 컨테이너 서비스가 등장하면서 컨테이너를 통한 배포가 활발해졌다. 컨.. 2021. 8. 26.