
1주차 과제 정리
가상머신, 베어메탈, 컨테이너 생성을 도와주는 클라우드 인프라 구축 도구
주로 프라이빗 클라우드를 구축하는 데에 사용되는 오픈소스 소프트웨어이다. 처음 회사를 시작할 때는 퍼블릭 클라우드를 이용하는 것이 훨씬 좋지만, 퍼블릭 클라우드가 비용이 저렴한 편이 아니기 때문에 규모가 커질 수록 마진이 맞지 않는 경우가 많다. 그래서 대기업의 경우 오픈스택 등을 이용하여 직접 프라이빗 클라우드를 구축하는 편.

클라우드 인프라란?
물리적으로 제공되던 IT 자원들을 가상화하여 API로 제어할 수 있도록 제공해주는 인프라 환경을 의미한다.
클라우드 인프라는 사용자가 소유하는 것이 아니라, 테넌트라는 개념 안에 속해있다고 한다. 테넌트를 나타내는 방식은 클라우드 제공사마다 다르다.
핵심 컴포넌트

블록 스토리지 vs 객체 스토리지

컴포넌트는 API 서비스와 Agent 서비스로 구분된다. 클라우드 인프라에 대한 요청은 API로 이루어지는데, 이 API를 처리하는 것이 API 서비스이다. 그리고 동일 컴포넌트 내에서 실제 인프라를 생성하는 작업을 진행해 주는 것이 Agent 서비스이다. API 서비스와 Agent 서비스 간에는 RPC Call로 통신한다. Agent는 대기하고 있다가 본인에게 RPC Call이 온 경우, 적절하게 이를 처리한다. nova 컴포넌트 뿐만 아니라 다른 컴포넌트 역시 동일한 방식으로 처리하게 된다.
인스턴스 생성을 하는 요청을 했을 때 nova api 서버가 해당 API 요청을 처리하게 된다. 실제 인스턴스를 생성하는 동작은 동일한 nova 컴포넌트의 Agent 서비스가 처리하고, 인스턴스를 생성하기 위해 필요한 Image, 스토리지 등은 다른 컴포넌트의 api 서버를 호출함으로써 처리하게 된다.
오픈스택은 자원의 상태만 관리해줄 뿐이지, 실제로 가상머신을 생성하는 작업은 KVM 같은 별도의 드라이버나 플러그인을 이용한다. nova agent는 KVM을 관리해주는 libvirt를 이용해 가상머신이 생성될 수 있도록 처리한다. (그래서 실제 가상머신 생성 작업은 KVM이 수행하는 것이다)
오픈스택은 API를 비동기 방식으로 처리한다.
인스턴스 생성 API를 실행하더라도 즉시 인스턴스가 생성되지 않는다. 오픈스택이 libvirt에 요청을 보낸 뒤 계속 상태 확인을 하고, 인스턴스 생성이 확인된 후에야 다음 요청을 처리하게 된다.
