컴퓨터 기능을 관리하는 프로젝트
| 명칭 | 설명 |
|---|---|
| API | HTTP 요청을 받아서 코멘드로 변환하고 oslo.messaging 혹은 HTTP로 다른 컴포넌트와 통신 |
| Schedular | 어떤 호스트가 어떤 인스턴스를 관리할지 결정 |
| Network | ip 포워딩/브리지/Vlan 관리 |
| Compute | 하이퍼바이저와 버추얼 머신간의 통신 관리 |
| Volume | 스토리지 관리 |
오픈스택 오브젝트 스토리지로 비정형성 데이터를 저장하기 적합
각각의 오브젝트들은 고유한 URL을 갖고 API로 제어
멀티 테넌트로 구현 가능하며 저장 공간에 제약이 없음
👉 계정마다 저장 공간을 할당 받는 것이 아닌 모든 저장 공간을 같이 사용
각각의 object(데이터)들을 특정 Account에 접근이 가능한지 불가능한지 권한 설정 가능
저장 공간을 생성 및 삭제하고 인스턴스에 연결할 수 있는 기능을 제공운영체제 이미지를 관리glance-api로 이미지를 등록, 삭제 및 관리인증관리물리 서버내의 자원을 사용할 수 있도록 관리웹 서비스단일 Host OS 위에서 여러 개의 프로세스가 고립된 공간에서 동작하는 구조
컨테이너를 위한 환경은 커널 공간과 사용자 공간으로 분리되며 사용자 공간을 컨테이너라고 칭함
커널 공간은 물리적 자원을 관리
사용자 공간은 사용자 프로세스가 실행되는 공간(컨테이너)
대표적인 기술로 리눅스 컨테이너(LXC)
운영체제에서 애플리케이션(프로세스)을 분리하여 동작
컨테이너 공간의 분류는 리눅스 커널의 cgroup과 namespace를 이용
| VM | 컨테이너 |
|---|---|
| HOST OS 위에서 Hypervisor를 통해 자원을 가상화하여 VM을 동작 | HOST OS에서 프로세스를 위한 공간을 별도로 제공 |
| HOST OS 위에 Guest OS가 동작하는 구조 | 공통 부분만을 패키징하여 컨테이너로 제공 |
| Docker Server(Daemon) | Docker Client |
|---|---|
| Host machine에서 컨테이너를 관리하고 실행하는 데몬 | Docker와 사용자 간 인터페이스 제공 |
| 사용자와 Docker Client를 통해 연결 | 사용자 명령을 받아 Docker Daemon으로 전달(소켓 통신사용) |

소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식
클라우드에서는 컨테이너 방식으로 많이 사용
| 장점 | 단점 |
|---|---|
| 분산되어 있어 장애 시 관리에 좋음 | 배포의 복잡성 (기능의 개별 구성) |
| 새로운 기능 추가 구조 변경 등에 좋음 | 각 기능 간의 인터페이스 네트워크 고려 필요 |
| 기능 단위로 되어 있어 분산 작업 가능 | 데이터 관리의 복잡성 |
| 장점 | 단점 |
|---|---|
| 비용이 효율적 | 벤더 종속성이 높음 |
| 구축이 용이 (코드 작성 업로드) | 지속적인 서비스에 용이하지 않음 |
| 리소스 효율 (자체적인 스케일 관리) | 디버깅 어려움 |
| 인프라 구축 필요없음 |