Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Apollo가 변경을 결정하고 실행하는 과정

Apollo의 변경 처리는 관리 설정, 보고된 상태, 제품 릴리스와 제약 조건을 연결합니다. 허브의 오케스트레이션 엔진이 실행할 변경 계획(Plan)을 결정하고, 스포크의 에이전트가 계획을 받아 실행한 뒤 결과를 보고합니다.

이 과정에서는 두 종류의 진행을 구분해야 합니다. 릴리스를 다음 채널에 추가하는 승격과, 특정 환경의 배포 개체를 실제로 변경하는 실행은 서로 다른 작업입니다.

1. 관리 설정으로 운영 조건 정하기

허브는 배포 환경과 배포 개체의 설정을 사용합니다. 설정에는 어떤 제품을 설치할지, 어느 릴리스 채널을 구독할지, 어떤 구성과 시간 제약을 적용할지 등이 포함됩니다.

관리 설정은 실제 상태를 직접 나타내지 않습니다. 예를 들어 어떤 채널을 구독하도록 설정했어도, 현재 실행 중인 버전은 에이전트가 보고하는 상태에서 확인해야 합니다. 관리 설정과 실제 상태를 함께 비교해야 어떤 변경이 필요한지 판단할 수 있습니다.

2. 에이전트가 실제 상태 보고하기

관리되는 스포크의 에이전트는 배포 개체에 관한 정보를 수집하여 허브로 보냅니다. 여기에는 실행 중인 버전, 현재 구성, 생존 상태와 준비 상태, 기타 메타데이터 등이 포함됩니다.

이 정보가 보고된 상태(Reported State)입니다. 운영자가 환경에 대해 선언한 설정과 에이전트가 관측한 실제 상태를 분리해서 관리하면, 설정 변경이 아직 적용되지 않은 경우나 실행에 실패한 경우를 조사할 수 있습니다.

3. 릴리스 승격 조건 평가하기

제품 릴리스의 승격 과정에서 오케스트레이션 엔진은 관측한 상태를 사용해 상태 관련 승격 조건의 통과 여부를 평가합니다.

평가가 성공하면 릴리스는 승격 파이프라인에 설정된 다음 채널에 추가됩니다. 상태 평가 조건을 충족하지 못해 실패하는 경우에는 릴리스를 자동으로 회수하여 환경이 그 버전에서 전환하도록 할 수 있습니다.

채널에 릴리스를 추가하는 방법에는 자동 게시 분류, 수동 승격과 승격 파이프라인이 있습니다. 또한 제품 릴리스와 모듈 릴리스는 지원되는 승격 조건이 같지 않습니다. 제품 릴리스의 파이프라인에는 상태 조건을 구성할 수 있지만, 모듈 릴리스에 같은 상태 평가 흐름을 그대로 적용하지 않습니다.

4. 환경에서 실행 가능한 변경 계획 선택하기

오케스트레이션 엔진은 각 스포크에 가능한 계획을 평가하고, 관련 제약 조건을 확인합니다. 계획을 에이전트에 전달하려면 그 계획에 적용되는 조건이 충족되어야 합니다.

예를 들어 배포 개체가 특정 제품과 채널을 구독한다면, 채널에서 사용할 수 있는 릴리스 가운데 의존 관계와 운영 조건을 충족하는 변경을 검토합니다. 환경마다 하나의 고정된 목표 버전을 먼저 정해 놓고 무조건 그 상태에 맞추는 방식과는 다릅니다.

이 차이는 다음과 같은 상황에서 드러납니다.

  • 채널에 새 릴리스가 생겼지만 환경의 유지보수 시간이 아직 아닐 수 있습니다.
  • 새 버전이 요구하는 다른 제품의 버전 범위를 현재 환경이 충족하지 못할 수 있습니다.
  • 운영자가 변경 억제 시간대를 설정했을 수 있습니다.
  • 이전 실행 실패 때문에 자동 억제가 적용되었을 수 있습니다.

버전 차이만 보는 대신 어떤 제약이 계획을 막고 있는지 확인해야 합니다.

5. 스포크에서 계획 실행하기

에이전트는 오케스트레이션 엔진에 새 계획이 있는지 계속 확인합니다. 엔진이 제약 조건을 통과한 계획을 발행하면, 해당 환경의 에이전트가 계획에 필요한 변경을 실행합니다.

계획에는 설치, 구성 변경, 버전과 구성의 변경, 제거 같은 작업이 포함될 수 있습니다. 실제 적용 결과는 계획의 실행 상태와 다시 보고되는 환경 상태를 통해 확인합니다.

6. 결과 보고와 실패 처리

계획 실행이 끝나면 에이전트는 성공 또는 실패를 오케스트레이션 엔진에 보고합니다. 계획이 실패했고 환경의 상태가 계획 시작 전과 달라졌다면, 엔진은 이전 상태를 복원하기 위한 롤백 계획을 발행할 수 있습니다.

실패로 자동 생성된 억제 시간대에서는 이전 상태를 복구하는 롤백 계획이 허용될 수 있습니다. 반면 사람이 직접 설정한 억제 시간대는 그대로 존중합니다.

Apollo는 새로 보고된 상태, 설정 변경, 릴리스의 추가나 회수 등의 정보를 반영하여 실행 가능한 계획을 계속 재평가합니다.

각 정보를 확인할 때의 질문

확인하는 정보답하려는 질문
관리 설정이 대상을 어떤 제품, 채널과 구성으로 관리하려고 하는가?
제품 카탈로그현재 사용할 수 있는 릴리스와 그 조건은 무엇인가?
보고된 상태실제로 어떤 버전과 구성이 관측되고 있는가?
제약 조건지금 변경을 실행해도 되는가?
계획과 실행 결과어떤 변경이 발행되었고 실제로 성공했는가?

이 구분을 유지하면 릴리스 승격 문제, 환경 설정 문제, 실행 문제와 관측 문제를 서로 다른 단계에서 조사할 수 있습니다.