Alien의 관리형 셀프 호스팅과 원격 실행 구조

Alien은 소프트웨어 공급자가 고객의 클라우드 안에 자기 소프트웨어를 배포하고, 중앙에서 업데이트·상태 확인·원격 작업을 관리하도록 돕는 플랫폼이다. 고객 환경에 둔 워크로드와 공급자의 운영 제어부를 연결하는 구조가 핵심이다. 배포 모델, Remote Operator.

GeekNews 소개를 계기로 조사했다. 기술 설명은 공식 문서와 공개 저장소의 0279993705a4를 2026-09-17에 대조했다. 문서상 제품 기능과 해당 커밋에 포함된 구현을 구분했으며, 설치·실행 실험은 하지 않았다.

무엇을 관리하는가

경로관리 대상과 역할
Alien으로 앱 구축·배포alien.ts의 리소스 정의와 빌드 산출물을 릴리스로 만들고 고객 환경에 반영한다.
기존 환경에 Remote Operator 설치기존 Helm·Terraform 배포에 연결해 상태를 관찰하고 선택한 진단·변경 작업을 제공한다. 기존 배포 도구의 소유권을 자동으로 가져오지 않는다.
Remote Commands앱이 구현한 명시적 handler를 원격 호출하고 응답을 받는다. handler의 업무 로직은 앱이 소유한다.

Remote Operator의 현재 설치 문서는 Helm 템플릿과 설치별 값을 사용하며 namespace 범위의 Kubernetes 권한을 설명한다. 제품이 지원하는 여러 클라우드와 기존 환경용 Operator의 설치 범위는 같은 분류가 아니다. Operator 개요, 설치, Commands.

Manager·Operator·앱의 책임

Manager는 릴리스·배포 상태·인증·명령 전달·텔레메트리 전달을 조정한다. 공개 Manager는 SQLite 기반이며 인스턴스 하나가 프로젝트 하나를 관리하는 단일 테넌트 구조다. 한 프로젝트의 여러 고객 배포를 관리할 수 있다는 것과 서로 신뢰하지 않는 여러 조직을 하나의 Manager에서 격리한다는 것은 다르다. 저장·인증·텔레메트리 provider는 교체 가능한 인터페이스로 나뉜다. Manager 코드.

구분PushPull
배포 모델Manager가 고객 클라우드의 관리 identity로 API를 호출해 릴리스를 적용고객 환경의 Operator가 외부로 연결해 목표 릴리스를 받고 현지에서 적용
명령 전달Worker runtime이 명령을 전달받아 실행Container·Daemon의 앱 소유 receiver가 자기 대상 명령을 lease하여 실행

이 두 축은 독립적이다. Pull 배포의 Worker 명령은 Operator가 lease하여 Worker runtime으로 전달한다. Container·Daemon은 배포 모델과 무관하게 앱의 receiver가 직접 명령을 가져간다. 모든 명령이 Operator를 거친다고 그리면 실제 책임을 잘못 표현하게 된다. 배포 모델, 명령 전달 경로.

공개 코드에서 확인한 기능 경계

제품 문서는 Remote Operator의 승인된 진단·복구 작업을 설명한다. 그러나 조사 커밋의 공개 Operator는 OperationsExecutor와 loop 인터페이스를 제공하고, 실제 플러그인 registry와 승인 정책을 가진 executor는 downstream 바이너리에 맡긴다. 기본 빌드는 executor를 주입하지 않아 해당 <plugin>/<operation> 명령을 실행하지 않는다. 제품 Operations, executor 경계.

원격 접근 요청의 실제 처리 loop도 downstream 구현에 속한다. 이것을 Alien 전체에 승인 기능이 없다는 뜻으로 확대하면 안 된다. 이 판단의 범위는 공개 Operator의 해당 실행 경로다. access request 경계.

Operations 동기화 계약은 서버가 원하는 bundle 목록과 Operator가 현재 실제로 로딩한 catalog를 나눈다. 공개 빌드는 registry가 없어 다운로드·보고를 하지 않는다. 따라서 문서의 기능 목록, 설치에 목표로 설정된 기능, 실제 실행 가능한 기능은 따로 확인할 대상이다. catalog 보고 계약.

리소스 수명과 권한

frozen·live는 일상 배포에서 리소스 정의를 누가 바꿀 수 있는지 정한다.

  • frozen: 고객 setup이 소유한다. 일반 rollout은 생성·변경·교체·삭제하지 않으며, 정의 변경에는 setup 재실행이 필요하다.
  • live: Manager가 릴리스 반영 과정에서 생성·변경·교체·삭제할 수 있다.
  • observed: 발견·표시하지만 Alien의 배포 조정 대상은 아니다. 별도로 허용한 operation의 변경 가능성까지 없어지는 것은 아니다.

이 수명주기와 데이터 접근 권한은 별도다. frozen 저장소라도 앱 runtime은 명시적으로 부여한 권한으로 데이터를 읽고 쓸 수 있다. setup·management·runtime identity를 나누며, management에도 선택 기능이나 명시적 grant에 따른 접근이 추가될 수 있다. Frozen & Live, Permissions.

Operator의 작업 가능 범위는 실제 ServiceAccount·RBAC, 클라우드 identity, 네트워크 접근에 묶인다. 인바운드 포트를 열지 않는 연결 방식에서도 로그·작업 입력과 결과·자산 정보는 외부로 나갈 수 있다. 연결 방향과 데이터 반출 범위를 별도로 판단해야 한다. Operator 보안 모델.

명령 접수와 실제 효과는 다른 상태다

공개 명령 상태는 PENDING_UPLOAD·PENDING·DISPATCHED·SUCCEEDED·FAILED·EXPIRED다. lease가 반환되면 DISPATCHED → PENDING으로 돌아갈 수 있다. 별도 RUNNING 상태가 있는 것으로 요약하지 않는다. 이 상태는 명령 프로토콜의 상태이며, handler가 바꾼 업무 자산의 모든 효과를 자동으로 설명하지 않는다. 명령 상태 타입.

선택적 idempotency key는 deployment + 대상 resource + command + key 범위에서 명령 생성 중복을 제거한다. 코드의 저장 TTL은 24시간이다. 이 보장은 외부 효과가 한 번만 발생한다는 보장과 다르다. key 구성·저장.

Pull receiver는 handler를 실행한 뒤 결과를 제출한다. 실제 변경이 끝났어도 결과 제출에 실패하면 ack가 없어 lease 만료 뒤 명령이 재전달될 수 있다. 따라서 동일 command의 재실행을 받아도 추가 효과가 생기지 않도록 handler가 실제 상태나 적용 기록을 판별해야 한다. 실행과 응답 제출.

호출자의 timeoutMs는 결과 polling을 끝내는 시간이다. timeout 응답이 원격 작업의 취소를 뜻하지 않는다. receiver의 실행 예산과 abort signal도 별도이며, 협력적 취소나 늦은 결과 폐기는 이미 발생한 외부 효과를 되돌리지 않는다. 호출자 timeout, receiver 실행 예산, handler 취소 경계.

예를 들어 DB migration이 적용된 뒤 결과 전송이 끊기면, 호출자는 실패·시간 초과를 보고도 실제 데이터는 변경된 상태일 수 있다. 재호출·진행 조회·보상 작업 중 무엇을 할지는 전송 오류 하나로 결정할 수 없다. 이는 위 실행 순서에서 도출한 실패 시나리오다.

릴리스 복귀와 조치 원복

릴리스는 코드·이미지·stack metadata의 불변 묶음이고 channel은 따라갈 릴리스를 가리킨다. 이전 릴리스를 다시 지정하는 방식은 배포 목표를 되돌리는 것이다. 이미 실행된 command의 DB 변경, 외부 API 효과나 유실된 데이터를 일반적으로 복구한다는 뜻은 아니다. 확인한 문서만으로 모든 실패에 자동 rollback이 실행된다고 볼 수도 없다. Releases.

이 구분은 운영 도구를 평가할 때 재사용할 수 있다. 배포 버전, 명령 결과, 실제 자원 상태, 서비스 정상화 각각의 복구 범위를 확인해야 한다. 변경 전 입력을 보존하는 책임과 변경 뒤 상태를 판정하는 책임은 별도다.

직접 운영·재사용할 때 남는 책임

Manager를 self-host하면 영속 SQLite와 백업, TLS, artifact registry, 명령용 KV·blob 저장소, 고객 클라우드 identity, 텔레메트리 수신처를 구성해야 한다. 제공 Terraform 모듈은 보조 클라우드 자원을 만들며 Manager 자체를 배포하지 않는다. 텔레메트리를 Datadog·Grafana 같은 OTLP backend로 전달하는 구조도 있어, Alien을 모든 관제 저장·질의를 대체하는 도구로 단정하지 않는다. Self-Hosting.

조사 커밋의 라이선스는 FSL-1.1-Apache-2.0다. 라이선스 본문은 경쟁적 상업 사용의 제한, 비상업 교육·연구 등 허용 목적, 버전 공개 2년 뒤 Apache 2.0 적용을 규정한다. 구조를 연구하는 일과 코드를 상업 서비스에 편입하는 일은 구분해 판단한다. 해당 커밋 LICENSE.

프로젝트 적용 기록

Vigilantis의 당시 구현과 비교한 결과, 이미 갖춘 실행·복구 경계와 향후 적용 제안은 프로젝트 Source에 남겼다. 이 노트는 Alien 구조와 일반적인 판단 근거를 보존하며, 프로젝트의 변하는 구현 현황은 그 원문에서 확인한다.