Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Apollo의 배포 환경

배포 환경(Environment)은 같은 인프라에 배치된 소프트웨어와 인프라 대상을 묶는 Apollo의 관리 단위입니다. 예를 들어 하나의 Kubernetes 클러스터에서 여러 마이크로서비스로 구성된 소프트웨어 플랫폼을 운영한다면, 그 대상들을 하나의 배포 환경으로 관리할 수 있습니다. 이 예가 모든 환경을 반드시 클러스터 하나와 일대일로 구성해야 한다는 뜻은 아닙니다.

환경 안의 개별 소프트웨어 또는 인프라 대상은 배포 개체(Entity)라고 합니다. 각 배포 개체는 하나의 배포 환경에 속합니다.

허브와 스포크의 관계

허브(Hub)는 다른 배포 환경을 관리하는 환경입니다. 허브의 관리를 받는 환경은 그 허브의 스포크(Spoke)라고 합니다.

허브는 여러 스포크의 상태와 설정을 바탕으로 변경 계획을 조정합니다. 스포크에서는 에이전트가 현재 상태를 보고하고 허브가 발행한 변경 계획을 실행합니다.

구성관리 관계
허브다른 환경을 관리한다.
스포크특정 허브의 관리를 받는다.
자체 관리 허브자신의 환경도 관리한다.
다른 허브가 관리하는 허브상위 허브의 스포크이면서 다른 환경을 관리하는 허브가 될 수 있다.

허브는 보통 자신을 관리하지만 반드시 그래야 하는 것은 아닙니다. 다른 허브가 그 환경을 관리할 수 있으므로 허브와 스포크 관계를 계층적으로 구성할 수 있습니다. 허브와 스포크는 환경이 맡는 관리 역할을 나타냅니다.

연결되지 않은 기간의 환경

환경이 항상 허브의 활성 관리를 받아야 하는 것은 아닙니다. 허브가 환경을 활성 관리하지 못하는 기간에는 비연결 상태(disconnected)가 될 수 있습니다.

예를 들어 차량 안에서 실행되는 환경이 정차 중에는 허브에 연결되어 업그레이드를 받고, 이동 중에는 일정 기간 연결되지 않는 구성을 생각할 수 있습니다. 비연결 상태라는 말은 환경 안의 소프트웨어가 모두 중단되었다는 뜻과 구분해야 합니다. 여기서는 허브와의 관리 연결 상태를 설명합니다.

연결이 끊기는 환경을 관리할 때는 중앙 화면의 상태가 언제 보고된 것인지와 현재 환경에 새 계획을 전달할 수 있는지를 함께 고려해야 합니다.

배포 환경 설정

배포 환경 설정(Environment settings)은 허브가 해당 환경을 어떻게 관리할지 정하는 정보입니다. 허브에는 스포크별 설정이 저장됩니다.

여기에는 다음과 같은 내용이 포함됩니다.

  • 환경 안에 존재해야 하는 배포 개체의 목록.
  • 각 대상이 구독하는 릴리스 채널.
  • 환경이나 개별 대상에 적용되는 유지보수 시간대.
  • 그 밖의 환경 및 배포 개체별 관리 설정.

설정은 현재 관측한 상태와 다릅니다. 어떤 제품과 채널을 사용하도록 설정했더라도, 제약 조건이나 실행 결과 때문에 실제 실행 중인 버전이 아직 달라지지 않았을 수 있습니다. 실제 상태는 에이전트가 보고하는 정보를 통해 확인합니다.

배포 환경 구성값

배포 환경 구성값(Environment Config)은 환경의 최상위에서 공유할 수 있는 추가 구성값입니다. 환경 전체에 적용할 임의의 구성을 저장하고, 해당 환경에 있는 개별 배포 개체의 구성에서 참조할 수 있습니다.

배포 환경 설정과 구성값은 구분해서 사용합니다.

구분목적
배포 환경 설정대상 목록, 채널 구독과 시간 제약 등 관리 방식을 결정
배포 환경 구성값개별 대상들이 참조할 수 있는 환경 공통 구성값을 보관

가상의 두 환경이 같은 제품을 사용하지만 연결할 서비스 주소는 다르다고 가정하겠습니다. 각 환경의 공통 주소 값을 환경 구성값으로 관리하면 개별 배포 개체의 구성에서 그 값을 참조할 수 있습니다.

Foundry의 플랫폼 인스턴스와 구분하기

Foundry의 플랫폼 인스턴스(Enrollment)는 사용자가 데이터, 온톨로지와 애플리케이션을 사용하는 플랫폼 단위를 가리킵니다. Apollo의 배포 환경은 소프트웨어와 인프라 대상을 관리하는 단위입니다.

두 개념 모두 실행되는 환경과 관련되지만 같은 리소스는 아닙니다. Foundry에서 프로젝트를 만들거나 업무 리소스의 권한을 설정하는 일과, Apollo에서 소프트웨어의 버전이나 유지보수 시간대를 관리하는 일은 서로 다른 관리 작업입니다.