Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Apollo 용어집

Apollo에서 제품은 배포할 소프트웨어를, 제품 릴리스는 특정 버전을, 배포 개체는 환경에 설치한 인스턴스를 뜻합니다. 허브가 관리 설정과 보고된 상태를 비교하여 변경 계획을 만들고, 스포크의 에이전트가 제약을 충족한 계획을 실행합니다.

환경과 실행 구성

배포 환경(Environment)

배포 환경은 같은 인프라에 배치된 배포 개체들의 관리 단위입니다. 예를 들어 Kubernetes 클러스터 하나에서 실행하는 여러 마이크로서비스를 한 환경으로 관리할 수 있습니다. 환경 리소스에는 관리 설정, 연결 정보와 보고된 상태가 있습니다.

허브(Hub)

허브는 하나 이상의 스포크 환경을 관리하는 환경입니다. 관리 설정과 제품 카탈로그를 저장하고, 보고된 상태를 평가하여 변경 계획을 발행합니다. 허브가 자신을 관리하거나 다른 허브의 관리를 받을 수도 있습니다.

스포크 환경(Spoke Environment)

스포크 환경은 허브의 관리를 받는 배포 환경입니다. 허브가 변경을 결정하면 스포크의 에이전트가 실행하고 상태를 보고합니다.

스포크 제어 플레인(Spoke Control Plane)

스포크 제어 플레인은 스포크 환경에서 실행하는 Apollo 서비스 집합입니다. 허브와의 인증 및 통신, 실행 상태 수집, 계획 실행 같은 기능을 제공합니다.

Apollo 에이전트(Apollo Agent)

Apollo 에이전트는 스포크에서 허브가 발행한 계획을 실행하고 계획 진행 상태와 개체 상태를 보고하는 프로그램입니다. 여기서 에이전트는 AI 에이전트나 Foundry 데이터 연결 에이전트와 다른 개념입니다.

배포 개체(Entity)

배포 개체는 특정 환경에 존재하는 제품의 개별 인스턴스입니다. 같은 제품을 여러 환경에 설치하거나 한 환경에서 여러 이름으로 설치하면 개체를 구분하여 관리합니다. Helm 차트와 자산(Asset) 등의 제품을 설치할 수 있습니다.

보고된 상태(Reported State)

보고된 상태는 에이전트가 담당 개체에서 관측하여 스포크 제어 플레인에 보고하는 정보입니다. 실제 버전이나 실행 상태를 나타내며 운영자가 선언한 목표 설정과 구분합니다. 계획 계산은 이 상태와 관리 설정의 차이를 사용합니다.

관리되는 배포 개체(Managed Entity)

관리되는 배포 개체는 보고된 상태가 있고 환경 설정에도 선언된 대상입니다. Apollo는 이 개체에 변경 계획을 발행합니다.

관리되지 않는 배포 개체(Unmanaged Entity)

관리되지 않는 배포 개체는 상태는 보고되지만 환경 설정에 관리 대상으로 선언되지 않은 대상입니다. 화면에 나타나더라도 Apollo는 해당 개체의 계획을 발행하지 않습니다. 관리 해제는 실제 소프트웨어의 설치 제거와 다릅니다.

설정과 변경 실행

배포 환경 설정(Environment settings)

배포 환경 설정은 환경에 어떤 개체를 설치하고 관리할지, 어느 릴리스 채널을 추적할지, 어떤 유지보수 조건을 적용할지 정의합니다. 환경과 개체의 관리 정책을 담습니다.

배포 환경 구성값(Environment Config)

배포 환경 구성값은 환경 수준의 속성을 담은 YAML 구성입니다. 여러 개체에서 공통으로 참조해야 하는 값을 관리합니다. 어떤 개체를 관리할지 선언하는 Environment settings와는 별도입니다.

설정 재정의(Config override)

설정 재정의는 특정 개체에서 제품의 기본 설정을 바꾸는 YAML 구성입니다. 제품 기본값을 환경별 요구에 맞게 조정할 때 사용하며, 스키마가 제공되는 경우 그 검증을 받을 수 있습니다.

변경 계획(Plan)

변경 계획은 허브가 스포크 에이전트에 전달하는 실행 지시입니다. 개체 설치, 업그레이드와 다운그레이드, 구성 변경, 비밀정보 설정 등이 계획에 포함됩니다.

제약 조건(Constraint)

제약 조건은 계획을 실행하기 전에 충족해야 하는 조건입니다. 유지보수 시간대, 의존 제품 버전, 변경 억제, 아티팩트 준비 상태 등이 실행 가능 시점을 제한합니다. Activity에서 계획을 막는 조건을 확인할 수 있습니다.

오케스트레이션 엔진(Orchestration Engine)

오케스트레이션 엔진은 허브에서 가능한 계획을 평가하고 제약을 충족하는 계획 중 무엇을 스포크에 발행할지 결정하는 서비스들입니다. 제품 릴리스의 승격 과정도 담당합니다.

명령(Command)

사용자 명령은 일반 제약이나 계획 우선순위를 우회하여 긴급 작업을 요청하는 수단입니다. 안정성 사고 등에서 사용할 수 있지만 명령별 우회 범위가 다릅니다. 운영자가 승인된 범위와 영향을 확인해야 합니다.

변경 요청(Change Request)

변경 요청은 환경이나 개체 등의 변경을 적용하기 전에 적절한 승인을 받는 공식 요청입니다. 관리 환경에 영향을 주는 수동 작업 대부분이 변경 요청을 거칩니다.

유지보수 시간대(Maintenance window)

유지보수 시간대는 업그레이드, 구성 변경 또는 자동 승격을 허용하는 반복 시간 구간입니다. 시간대 이름과 허용 구간 목록을 지정합니다. 개체의 최종 시간대는 제품 시간대 적용 여부를 먼저 확인한 뒤 개체 재정의와 환경 기본값 순서로 선택합니다.

변경 억제 시간대(Suppression window)

변경 억제 시간대는 특정 개체나 환경에 계획을 발행하지 못하도록 하는 기간입니다. 일반 유지보수 시간대보다 우선합니다. 실행 중인 계획 취소와는 별도이며, 필요하면 억제를 설정하면서 활성 계획도 취소할 수 있습니다.

제품과 배포 조건

제품(Product)

제품은 Apollo가 배포하는 소프트웨어 기능의 단위입니다. 제품은 버전별 릴리스, 승격 파이프라인, 유지보수 시간대, 소유 팀과 메타데이터를 가집니다. 제품 ID는 Maven 좌표의 group:artifactId 부분입니다.

제품 릴리스(Product Release)

제품 릴리스는 제품의 특정 버전입니다. 매니페스트와 아티팩트 선언, 채널 소속과 회수 상태 같은 정보가 연결됩니다. 매니페스트는 불변이지만 채널 소속이나 회수 정보는 운영 중 달라질 수 있습니다.

제품 카탈로그(Product catalog)

제품 카탈로그는 허브에 게시한 제품과 릴리스의 목록입니다. 각 릴리스의 의존 관계, 회수와 채널 정보를 확인할 수 있습니다.

제품 릴리스 매니페스트(Product Release manifest)

제품 릴리스 매니페스트는 각 릴리스에 포함된 YAML 파일로 제품 유형, 좌표, 버전과 배포 관련 불변 특성을 정의합니다. 아티팩트 및 의존 관계 확장을 통해 Apollo가 무엇을 설치하고 어떤 버전 조건을 적용할지 알립니다.

제품 의존 관계(Product dependency)

제품 의존 관계는 특정 제품 릴리스가 다른 제품에서 요구하는 릴리스 버전 범위입니다. Apollo는 자신의 의존 조건뿐 아니라 이 제품을 사용하는 다른 개체의 조건도 고려하여 변경을 결정합니다.

선택적 의존 관계(Optional dependency)

선택적 의존 관계는 의존 제품이 설치되지 않아도 허용하지만, 설치되어 있으면 선언된 버전 범위를 요구하는 관계입니다. 관리 대상으로 선언만 한 것과 실제 설치는 다릅니다. 제품 담당자는 선택적 의존성 중 실제로 필요한 구성 조합을 별도로 정해야 합니다.

무시할 의존 관계(Ignored dependency)

무시할 의존 관계는 개체에서 특정 제품 의존 제약을 재정의하는 설정입니다. 실제 사용하지 않는 선택 기능의 의존성을 생략하는 경우 등에 사용할 수 있으나 필요한 의존성까지 우회할 수 있으므로 제품에 미치는 영향을 검토해야 합니다.

모듈(Module)

모듈은 함께 설치하는 제품들과 각 구성 및 설정을 묶은 단위입니다. 반복되는 환경 구성을 일관되게 설치하고 모듈 릴리스로 관리할 수 있습니다.

아티팩트 레지스트리(Artifact Registry)

아티팩트 레지스트리는 Apollo가 연결하여 제품 아티팩트를 가져오는 OCI 호환 외부 컨테이너 저장소입니다. 제품 릴리스는 내부 레지스트리에 컨테이너를 복사하는 대신 연결된 저장소의 위치를 참조할 수 있습니다. 취약점 스캐너도 접근 가능한 레지스트리의 이미지를 검사합니다.

채널과 회수

릴리스 채널(Release Channel)

릴리스 채널은 안정성이나 레이블 등 공통 속성으로 제품 릴리스를 묶는 집합입니다. 환경이나 개체는 채널을 추적하여 업그레이드 후보를 받습니다. 하나의 릴리스가 여러 채널에 속할 수 있으며 채널 이름 자체에는 내재한 상하위 관계가 없습니다.

릴리스 승격(Release promotion)

릴리스 승격은 릴리스를 다른 채널에 추가하는 과정입니다. 사용자가 수동으로 수행하거나 승격 파이프라인의 조건을 만족했을 때 자동으로 수행합니다.

승격 조건(Promotion criteria)

승격 조건은 릴리스가 다음 채널로 진입하기 전에 충족해야 하는 요구사항입니다. 시간, 시험 개체의 상태, 개체 수와 레이블 등을 사용할 수 있습니다. 상태의 시간 비율과 조건을 충족한 개체의 비율은 서로 다른 값입니다.

릴리스 승격 파이프라인(Release promotion pipeline)

릴리스 승격 파이프라인은 릴리스가 이동할 채널 순서와 단계별 조건을 정의한 구성입니다. 제품별 위험 허용 수준에 따라 시험 단계에서 안정 단계로 전달할 수 있습니다. 각 도착 채널의 진입 요구사항도 충족해야 합니다.

릴리스 회수(Recall)

릴리스 회수는 하나 이상의 릴리스에 문제가 있음을 표시하여 해당 릴리스로의 변경을 제한하는 조치입니다. 이미 사용하는 개체는 정한 전환 전략과 실행 제약에 따라 다른 허용 릴리스로 옮깁니다. CVE로 회수된 릴리스를 대상으로 하는 전환 예외는 별도로 활성화하고 자격 조건을 충족해야 합니다.

팀과 보안

팀(Team)

팀은 Apollo로 소프트웨어를 운영하는 사람들의 기본 조직 단위입니다. 권한 부여, 알림 전달, 변경 요청 승인 등에 사용하며 관리자 그룹과 구성원 그룹을 각각 하나 이상 정의해야 합니다.

운영 책임(Operational responsibility)

운영 책임은 환경의 개체에서 연락 담당 팀을 환경의 연락 팀으로 정할지 제품의 연락 팀으로 정할지 결정하는 설정입니다.

레이블(Label)

레이블은 환경의 인프라 종류, 개체의 애플리케이션 구성 요소, 릴리스의 검사 완료 여부 등을 표시하는 태그입니다. 메타데이터, 필터, 채널 진입 요구사항과 사용자 정의 자동화에 사용할 수 있습니다.

취약점(Vulnerability)

취약점은 제품 릴리스의 검사에서 발견한 보안상 결함이나 약점입니다. CVSS, EPSS와 실제 악용 정보 등으로 위험을 평가하며, 활성 발견 사항은 정책에 따라 자동 회수를 유발할 수 있습니다.

취약점 억제(Vulnerability Suppression)

취약점 억제는 검토한 발견 사항 때문에 릴리스를 회수하지 않도록 하는 예외입니다. 사용자가 요청하고 승인받는 억제와, CVE를 수정할 기한을 주는 유예기간 억제가 있습니다. 억제를 적용한 뒤에도 만료일과 후속 수정을 관리해야 합니다.