Apollo의 배포 환경
배포 환경(Environment)은 같은 인프라에 배치된 소프트웨어와 인프라 대상을 묶는 Apollo의 관리 단위입니다. 예를 들어 하나의 Kubernetes 클러스터에서 여러 마이크로서비스로 구성된 소프트웨어 플랫폼을 운영한다면, 그 대상들을 하나의 배포 환경으로 관리할 수 있습니다. 이 예가 모든 환경을 반드시 클러스터 하나와 일대일로 구성해야 한다는 뜻은 아닙니다.
환경 안의 개별 소프트웨어 또는 인프라 대상은 배포 개체(Entity)라고 합니다. 각 배포 개체는 하나의 배포 환경에 속합니다.
허브와 스포크의 관계
허브(Hub)는 다른 배포 환경을 관리하는 환경입니다. 허브의 관리를 받는 환경은 그 허브의 스포크(Spoke)라고 합니다.
허브는 여러 스포크의 상태와 설정을 바탕으로 변경 계획을 조정합니다. 스포크에서는 에이전트가 현재 상태를 보고하고 허브가 발행한 변경 계획을 실행합니다.
| 구성 | 관리 관계 |
|---|---|
| 허브 | 다른 환경을 관리한다. |
| 스포크 | 특정 허브의 관리를 받는다. |
| 자체 관리 허브 | 자신의 환경도 관리한다. |
| 다른 허브가 관리하는 허브 | 상위 허브의 스포크이면서 다른 환경을 관리하는 허브가 될 수 있다. |
허브는 보통 자신을 관리하지만 반드시 그래야 하는 것은 아닙니다. 다른 허브가 그 환경을 관리할 수 있으므로 허브와 스포크 관계를 계층적으로 구성할 수 있습니다. 허브와 스포크는 환경이 맡는 관리 역할을 나타냅니다.
연결되지 않은 기간의 환경
환경이 항상 허브의 활성 관리를 받아야 하는 것은 아닙니다. 허브가 환경을 활성 관리하지 못하는 기간에는 비연결 상태(disconnected)가 될 수 있습니다.
예를 들어 차량 안에서 실행되는 환경이 정차 중에는 허브에 연결되어 업그레이드를 받고, 이동 중에는 일정 기간 연결되지 않는 구성을 생각할 수 있습니다. 비연결 상태라는 말은 환경 안의 소프트웨어가 모두 중단되었다는 뜻과 구분해야 합니다. 여기서는 허브와의 관리 연결 상태를 설명합니다.
연결이 끊기는 환경을 관리할 때는 중앙 화면의 상태가 언제 보고된 것인지와 현재 환경에 새 계획을 전달할 수 있는지를 함께 고려해야 합니다.
배포 환경 설정
배포 환경 설정(Environment settings)은 허브가 해당 환경을 어떻게 관리할지 정하는 정보입니다. 허브에는 스포크별 설정이 저장됩니다.
여기에는 다음과 같은 내용이 포함됩니다.
- 환경 안에 존재해야 하는 배포 개체의 목록.
- 각 대상이 구독하는 릴리스 채널.
- 환경이나 개별 대상에 적용되는 유지보수 시간대.
- 그 밖의 환경 및 배포 개체별 관리 설정.
설정은 현재 관측한 상태와 다릅니다. 어떤 제품과 채널을 사용하도록 설정했더라도, 제약 조건이나 실행 결과 때문에 실제 실행 중인 버전이 아직 달라지지 않았을 수 있습니다. 실제 상태는 에이전트가 보고하는 정보를 통해 확인합니다.
배포 환경 구성값
배포 환경 구성값(Environment Config)은 환경의 최상위에서 공유할 수 있는 추가 구성값입니다. 환경 전체에 적용할 임의의 구성을 저장하고, 해당 환경에 있는 개별 배포 개체의 구성에서 참조할 수 있습니다.
배포 환경 설정과 구성값은 구분해서 사용합니다.
| 구분 | 목적 |
|---|---|
| 배포 환경 설정 | 대상 목록, 채널 구독과 시간 제약 등 관리 방식을 결정 |
| 배포 환경 구성값 | 개별 대상들이 참조할 수 있는 환경 공통 구성값을 보관 |
가상의 두 환경이 같은 제품을 사용하지만 연결할 서비스 주소는 다르다고 가정하겠습니다. 각 환경의 공통 주소 값을 환경 구성값으로 관리하면 개별 배포 개체의 구성에서 그 값을 참조할 수 있습니다.
Foundry의 플랫폼 인스턴스와 구분하기
Foundry의 플랫폼 인스턴스(Enrollment)는 사용자가 데이터, 온톨로지와 애플리케이션을 사용하는 플랫폼 단위를 가리킵니다. Apollo의 배포 환경은 소프트웨어와 인프라 대상을 관리하는 단위입니다.
두 개념 모두 실행되는 환경과 관련되지만 같은 리소스는 아닙니다. Foundry에서 프로젝트를 만들거나 업무 리소스의 권한을 설정하는 일과, Apollo에서 소프트웨어의 버전이나 유지보수 시간대를 관리하는 일은 서로 다른 관리 작업입니다.