본문으로 건너뛰기
피드

CI 설정을 YAML로 짜는 건 이제 그만 고통받자는 얘기

devops 약 6분

글쓴이는 GitHub Actions 같은 CI/CD 시스템에서 YAML을 설정 파일처럼 쓰다가 결국 프로그램처럼 굴리게 되는 문제가 반복된다고 지적해. 대안으로 Pkl과 Dhall처럼 더 제한적이면서도 타입과 구조를 갖춘 설정 언어를 언급하고, 기존 CI가 요구하는 YAML이나 JSON으로 출력해 점진적으로 쓸 수 있다고 봐.

  • 1

    YAML은 선언적 설정처럼 보이지만 실제 CI에서는 서브루틴과 데이터 흐름을 표현하는 용도로 남용됨

  • 2

    문제는 YAML이 프로그래밍 언어로 설계된 게 아니라서 복잡한 CI 파이프라인을 담기에 취약하다는 점임

  • 3

    Pkl과 Dhall은 더 구조화된 설정 언어이며 YAML·JSON 출력이 가능해 기존 CI와 함께 쓸 수 있음

  • 4

    CI 시스템 자체의 복잡성은 별도 문제지만, YAML의 실패 지점을 줄이는 데는 이런 대안이 도움될 수 있음

  • 글쓴이의 핵심 주장은 간단함. CI/CD 파이프라인에 YAML을 쓰는 건 실패하기 쉬운 구조라는 것임

    • YAML은 처음 보면 선언적이고 쉬워 보임
    • 그래서 GitHub Actions 같은 CI 시스템에서 표준처럼 굳어졌음
    • 그런데 실제로는 조건 분기, 재사용, 데이터 흐름, 작업 순서 같은 프로그램 로직을 YAML 안에 계속 우겨 넣게 됨
  • 문제는 YAML이 프로그래밍 언어가 아니라는 데 있음

    • CI 설정이 작을 때는 checkout, install, test 정도라서 별 문제가 없어 보임
    • 하지만 프로젝트가 커지면 매트릭스 빌드, 캐시, 조건부 배포, 환경별 분기, 재사용 워크플로가 들어감
    • 이쯤 되면 YAML은 설정 파일이 아니라 테스트하기 힘든 미니 프로그램이 됨. 근데 디버거도 타입 시스템도 빈약함

중요

> CI 설정이 복잡해졌다는 건 단순히 줄 수가 늘었다는 뜻이 아님. 실패했을 때 “어떤 값이 어디서 와서 왜 이 잡이 실행됐는지” 설명하기 어려워졌다는 게 진짜 문제임.

  • 글쓴이는 대안으로 Pkl과 Dhall을 언급함

    • 둘 다 아직 엄청 mainstream은 아니라고 선을 긋고 있음
    • 대신 YAML이나 JSON을 출력할 수 있어서, 기존 CI 시스템을 그대로 두고 설정 작성 방식만 바꿀 수 있음
    • 즉 GitHub Actions가 YAML을 요구해도, 사람이 직접 YAML을 다 쓰지 않고 더 나은 언어에서 생성하는 접근이 가능함
  • 이 접근이 CI의 모든 문제를 해결하는 건 아님

    • 글쓴이도 오늘날 CI 시스템 자체의 복잡성은 별도 문제라고 봄
    • 그래도 YAML이 가진 많은 문제를 줄이면서, 선언적이고 제한적인 설정 언어의 장점은 유지할 수 있다고 평가함
    • 완전한 혁명보다는 “지금 있는 CI를 덜 고통스럽게 쓰는 현실적 개선”에 가까움
  • 참고할 만한 다른 논의들도 같이 제시됨

    • Alexey Kladov의 CI Dream, CI in a Box
    • Gregory Szorc의 Modern CI is Too Complicated and Misdirected
    • YAML을 쓰지만 더 나은 기본 구성 요소를 제공한다는 RWX
    • 빌드 시스템 논의에서 자주 언급되는 논문 Build Systems à la Carte
  • 한국 개발팀에도 바로 와닿는 얘기임

    • 스타트업이든 대기업이든 GitHub Actions, GitLab CI, CircleCI 같은 YAML 기반 파이프라인을 굴리는 곳이 많음
    • 처음엔 복붙으로 빨리 시작하지만, 몇 년 지나면 CI 파일이 팀의 암묵지 저장소가 됨
    • 그 상태에서 장애가 나면 애플리케이션 코드보다 CI YAML 읽는 시간이 더 오래 걸리는 황당한 상황도 충분히 생김

기술 맥락

  • 이 글에서 말하는 선택은 “CI를 바꾸자”가 아니라 “CI가 먹는 YAML을 사람이 직접 쓰는 방식을 바꾸자”에 가까워요. 기존 CI 서비스는 그대로 두되, Pkl이나 Dhall 같은 언어로 설정을 작성하고 결과만 YAML로 뽑는 방식이거든요.

  • 왜 이런 얘기가 나오냐면 CI 설정은 시간이 지날수록 로직이 되기 때문이에요. 브랜치별 조건, 배포 환경, 캐시 키, 테스트 매트릭스가 쌓이면 단순 설정이 아니라 작은 프로그램인데, YAML은 그런 프로그램을 안전하게 다루도록 만들어진 도구가 아니에요.

  • Pkl이나 Dhall 같은 대안은 타입, 재사용, 구조화를 통해 실수를 줄이려는 쪽이에요. 사람이 최종 YAML을 손으로 만지는 대신 더 검증 가능한 원본을 두면, 반복되는 CI 패턴을 함수나 모듈처럼 관리할 수 있어요.

  • 다만 이 방식도 공짜는 아니에요. 팀원이 새 언어를 배워야 하고, 생성된 YAML과 원본 설정 사이를 디버깅해야 하거든요. 그래서 작은 프로젝트보다는 CI 파일이 이미 길고, 여러 저장소에서 비슷한 파이프라인을 복붙하고 있는 팀에 더 잘 맞아요.

CI 설정이 커질수록 YAML은 ‘간단한 설정 파일’이 아니라 테스트도 디버깅도 애매한 미니 프로그램이 돼버림. 팀에서 액션 재사용, 매트릭스 빌드, 조건 분기, 배포 흐름이 늘어나고 있다면 YAML을 계속 손으로 키우는 게 맞는지 한 번쯤 의심해볼 타이밍임.

댓글

댓글

댓글을 불러오는 중...

devops

디지털 스택을 유럽으로 옮겨보니, 생각보다 꽤 실전적이었다

한 개발자가 분석, 메일, 비밀번호 관리, 컴퓨트, 오브젝트 스토리지, 백업, 이메일, 에러 추적, AI API까지 유럽 중심 스택으로 옮긴 경험을 정리한 글이다. 핵심은 반미 감정이 아니라 데이터가 어디에 있고, 누가 접근할 수 있고, 정치나 기업 정책 변화에 얼마나 휘둘리는지를 의식하자는 얘기다.

devops

개인용 컴퓨터 다음은 개인용 클러스터라는 주장

이 글은 AI 시대에 개인 한 명이 쓰는 컴퓨팅 자원이 점점 ‘클러스터 한 덩어리’ 수준으로 커질 거라고 주장한다. PC가 직장, 취미 개발자, 게임 문화로 퍼졌듯이 개인용 클러스터도 업무용 AI, 오픈소스 실험, 게임 같은 흐름을 타고 대중화될 수 있다는 시나리오다.

devops

AI 에이전트 부하에 흔들린 GitHub, 왜 다른 서비스보다 더 아팠나

GitHub가 최근 몇 달 동안 가용성 저하, 검색 장애, GitHub Actions 문제, 심지어 squash merge에서 커밋이 빠지는 데이터 무결성 사고까지 겪었다. GitHub CTO는 AI 에이전트발 부하 증가를 원인으로 들었지만, 실제로는 2년간 약 3.5배 증가한 부하와 Azure 이전, 오래된 시스템, 조직적 지연이 겹친 문제에 가깝다. 개발자 입장에선 GitHub가 ‘없으면 안 되는 도구’에서 ‘업무를 막는 병목’으로 보이기 시작했다는 게 핵심이다.

devops

한국 클라우드 시장, 이제 GPU랑 데이터센터 싸움으로 넘어감

국내 클라우드 서비스 제공사들이 AI 전환 수요를 잡기 위해 GPUaaS, 데이터센터, 공공 클라우드 사업에 공격적으로 투자하고 있어. 네이버클라우드, KT클라우드, NHN클라우드 모두 2026년 1분기 실적에서 AI 인프라를 핵심 성장축으로 내세웠고, 정부의 2조805억원 규모 GPU 구축 사업이 판을 더 키우는 중이야.

devops

칩값 뛰니 K게임의 콘솔·피시 전환 해법으로 다시 뜨는 클라우드 게임

국내 게임사들이 모바일 중심에서 콘솔·피시로 넘어가려는 타이밍에 고성능 지피유와 콘솔 가격 상승이 발목을 잡고 있다. 이용자 입장에서는 300만원대 게이밍 피시, 오른 콘솔 가격, 스팀 가격 기준 개편까지 겹치면서 고사양 게임 접근성이 떨어지는 상황이다. 업계는 원격 서버에서 게임을 실행해 스트리밍하는 클라우드 게임을 다시 현실적인 대안으로 보고 있다.