
kiok 주요 기능
워크플로우 오케스트레이션 플랫폼의 핵심 기능을 소개합니다.
코드로 작성하는 DAG
YAML·Python·Java 세 가지 형식으로 워크플로우를 정의하면 모두 단일 DagSpec으로 한 번만 컴파일됩니다. shell·python·http는 물론 Livy(Spark)·Trino·Ontul 오퍼레이터로 외부 엔진 작업까지 그대로 오케스트레이션합니다.
유연한 스케줄링
Cron 스케줄과 수동 트리거를 지원하고, 클러스터가 꺼져 있던 동안 지나간 주기는 캐치업으로 되살립니다. 마지막 실행 시점을 기준으로 놓친 구간마다 실행을 만들되, 각 실행에는 생성 시각이 아니라 그 구간의 시각이 찍혀 데이터가 속한 시점을 그대로 들고 갑니다. 공백이 길면 최근 구간부터 상한선만큼만 되살리고 버린 범위를 로그로 남깁니다 — 일주일치를 한꺼번에 푸는 것은 복구가 아니라 또 다른 장애이기 때문입니다. #{ } 날짜 매크로로 실행 시점마다 날짜가 슬라이딩되어, 한 번 컴파일한 DAG가 매 실행에 맞는 날짜로 동작합니다.
분산 실행 & 페일오버
마스터/워커 클러스터가 워커별 태스크 슬롯으로 작업을 병렬 실행하고, 드라이버 페일오버로 워커 장애 시에도 완료된 태스크를 다시 돌리지 않고 실행을 이어갑니다.
Git 기반 배포 & 커넥션
여러 Git 저장소(프라이빗 포함)에서 DAG를 자동 동기화하거나 에어갭 환경용 번들을 업로드합니다. 자격 증명은 암호화된 커넥션 스토어에 보관하고 ${conn}/${secret} 참조로만 사용해 DAG·git에 노출되지 않습니다.
내장 보안
외부 의존 없는 네이티브 KMS 봉투 암호화로 메타데이터·IAM·커넥션·로그 등 모든 클러스터 상태를 저장 시 암호화하고, AWS IAM 형식 정책으로 DAG 단위 접근까지 제어합니다.
가시성 & 운영
실시간 실행 그래프, 스트리밍 작업 로그, 메트릭, 클러스터 토폴로지를 내장 관리 UI에서 관찰하고, S3 증분 백업/복원으로 프로덕션급 운영을 지원합니다.
싱글 사인온 (SSO)
OIDC · SAML 2.0 · LDAP/Active Directory 로 기존 ID 제공자에 인증을 위임합니다. 관리 콘솔은 브라우저 리다이렉트(Authorization Code + PKCE · SAML Web Browser SSO)로, CI 파이프라인·SDK·submit.sh 는 디렉터리 자격증명을 로그인 라우트에 보내 access key 와 동일한 토큰을 받습니다 — 기존 클라이언트 무수정. 권한은 provider 가 아니라 매핑된 kiok 그룹의 IAM 정책이 결정하므로, DAG 단위 접근 제어가 페더레이션 사용자에게도 그대로 적용됩니다. federated 세션은 IAM 스냅샷을 타고 팔로워 마스터와 워커에 도달하고, 로그인 상태는 모든 마스터가 마스터 키에서 유도하는 키로 봉인되어 state 파라미터에 실려 다니므로 로드밸런서 뒤에서 어느 마스터가 콜백을 받아도 로그인이 성공합니다. SAML assertion 재사용은 ZooKeeper 의 원자적 기록으로 막아 다른 마스터로 재생해도 거부됩니다. 로컬 비밀번호는 PBKDF2-HMAC-SHA256 으로 저장되며, 이전 형식은 다음 로그인에서 자동으로 재해싱됩니다.
유지보수 모드 — 스케줄러를 멈춰 세우기
백업 복원이나 키 교체처럼 도중에 작업이 시작되면 곤란한 순간을 위해, 클러스터가 스스로 일을 만들어내는 것을 멈춥니다. cron 스케줄러가 실행을 만들지 않고, 대기 중인 실행이 워커로 나가지 않으며, git sync 가 DAG 정의를 등록하지 않고, 수동 트리거는 503 과 Retry-After 로 거부됩니다. 이미 돌고 있는 실행은 죽이지 않습니다 — 운영자가 필요한 것만 명시적으로 중지하면 되고, 그 중지 경로는 계속 열려 있습니다. 백업과 장애 감지도 계속 돕니다. 윈도우 중 지나간 cron 은 나중에 몰아치지 않도록 건너뛰되, 건너뛴 사실을 빠짐없이 로그로 남깁니다. 설정은 복제되는 RocksDB 에 저장되어, 윈도우 도중 리더가 재시작되거나 다른 마스터가 리더로 선출돼도 멈춘 상태 그대로 올라옵니다.
활용 사례
데이터 파이프라인 오케스트레이션
Livy(Spark)·Trino·Ontul 오퍼레이터로 ETL/ELT와 분석 작업을 의존성 기반으로 스케줄링·실행합니다.
작업 자동화
확장 가능한 워커 클러스터에서 반복 배치 작업을 안정적으로 자동화합니다.
코드로서의 워크플로우
워크플로우를 git으로 버전 관리하고, push 한 번으로 클러스터에 배포합니다.
안정적인 운영
백업/복원, 리더 페일오버, 암호화된 상태 관리로 프로덕션급 안정성을 제공합니다.
