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