config-as-code

2 개의 포스트

메타가 AI를 활용해 대규모 데이터 파이프라인 내 암묵지를 매핑한 방법 (새 탭에서 열림)

메타(Meta)는 대규모 데이터 처리 파이프라인에서 AI 코딩 에이전트의 효율성을 극대화하기 위해, 코드베이스의 암묵적 지식(Tribal Knowledge)을 스스로 학습하고 구조화하는 '프리컴퓨트 엔진(Pre-compute Engine)'을 구축했습니다. 50개 이상의 전문 AI 에이전트가 4,100개가 넘는 파일과 3개의 언어로 구성된 복잡한 저장소를 분석하여 59개의 핵심 컨텍스트 파일을 생성했으며, 이를 통해 AI의 도구 호출 횟수를 40% 줄이고 며칠이 걸리던 탐색 작업을 30분으로 단축했습니다. 결과적으로 AI는 단순한 코드 소비자가 아닌, 스스로 지식 지도를 제작하고 유지보수하는 능동적인 엔진으로 거듭났습니다. ## 코드의 이면에 숨겨진 '암묵적 지식'의 한계 * 대규모 시스템은 Python 설정, C++ 서비스, Hack 자동화 스크립트 등 여러 언어와 저장소가 얽혀 있어 단순한 코드 읽기만으로는 전체 맥락을 파악하기 어려움. * 직렬화 호환성을 위해 삭제해서는 안 되는 '권장되지 않는(deprecated)' 값이나, 단계별로 이름이 바뀌는 필드 규약 등 엔지니어들의 머릿속에만 있는 비직관적인 패턴들이 존재함. * 이러한 맥락이 없는 AI 에이전트는 컴파일은 가능하지만 논리적으로는 오류가 있는 코드를 생성하거나, 정답을 찾기 위해 불필요한 탐색 과정을 반복하며 리소스를 낭비함. ## 전문 에이전트 군단을 활용한 지식 추출 워크플로 * **역할 분담:** 탐색(Explorer), 분석(Analyst), 집필(Writer), 비평(Critic), 수정(Fixer) 등 50개 이상의 전문화된 에이전트가 단일 세션 내에서 협업함. * **5대 핵심 질문:** 분석 에이전트는 각 모듈에 대해 '무엇을 설정하는가?', '주요 수정 패턴은?', '빌드 실패를 유발하는 비직관적 패턴은?', '모듈 간 의존성은?', '주석에 숨겨진 지식은?'이라는 다섯 가지 질문에 답하며 정보를 추출함. * **비직관적 패턴의 문서화:** 코드 자체로는 드러나지 않는 50개 이상의 설계 의도와 종속 관계를 찾아내어 AI가 실수하기 쉬운 지점을 명확히 함. ## 백과사전이 아닌 '나침반' 원칙의 컨텍스트 파일 * **간결성 유지:** 각 컨텍스트 파일은 25~35줄(약 1,000토큰) 내외로 작성되어 모델의 컨텍스트 윈도우 부하를 최소화하며, 모든 파일의 합계가 현대적 모델 용량의 0.1% 미만을 차지함. * **4대 구성 요소:** 빠른 명령(Quick Commands), 핵심 파일 리스트, 비직관적 패턴, 참고 자료 섹션으로 구성하여 군더더기 없는 실행 가능한 정보를 제공함. * **그래프 기반 탐색:** 다중 저장소 간의 의존성 인덱스를 생성하여, 수천 토큰이 소모되던 영향도 분석 과정을 단 수백 토큰의 그래프 조회로 대체함. ## 시스템의 신뢰도와 지속 가능성 확보 * **품질 게이트:** 3단계의 독립적인 비평 에이전트 검토를 통해 컨텍스트의 품질 점수를 3.65에서 4.20(5점 만점)으로 끌어올렸으며, 모든 파일 경로는 자동 검증되어 환각 현상을 제거함. * **자기 유지보수:** 몇 주 단위로 자동화된 작업이 실행되어 경로 유효성을 검사하고, 정보 누락을 감지하며, 오래된 참조를 자동으로 수정하여 '정보의 부패'를 방지함. * **모델 독립성:** 특정 AI 모델에 종속되지 않는 지식 레이어를 구축하여, 향후 더 뛰어난 모델이 등장하더라도 동일한 구조화된 지식을 활용할 수 있음. 이러한 접근 방식은 독자적인 대규모 코드베이스를 운영하는 모든 개발 팀에 적용될 수 있습니다. AI 에이전트에게 방대한 문서를 읽히는 대신, 핵심적인 '비직관적 패턴'과 '의존성 지도'를 간결한 나침반 형태로 제공하는 것이 AI의 문제 해결 속도와 정확도를 높이는 가장 실무적인 전략입니다.

대규모 환경에서 동적 (새 탭에서 열림)

에어비앤비(Airbnb)는 대규모 시스템에서 서비스 재시작 없이 런타임 동작을 변경할 수 있는 동적 설정 플랫폼 'Sitar'를 통해 개발의 유연성과 시스템의 안정성을 동시에 확보하고 있습니다. 설정을 코드처럼 관리(Config as Code)하고 단계별 배포 및 로컬 캐싱 전략을 도입함으로써, 설정 오류로 인한 장애 범위를 최소화하고 신속한 사고 대응이 가능한 환경을 구축했습니다. 이를 통해 에어비앤비는 수많은 마이크로서비스 환경에서도 안전하고 신뢰성 있는 설정 변경 프로세스를 운영하고 있습니다. **현대적인 동적 설정 플랫폼의 필수 요건** * **일관된 관리 경험:** 설정의 정의, 리뷰, 테스트, 배포에 이르는 전 과정을 통합된 워크플로우로 제공하여 개발자 경험을 개선합니다. * **설정의 코드화(Config as Code):** 모든 설정 변경은 서비스 코드와 마찬가지로 버전 관리, 코드 리뷰, 감사(Audit)가 가능해야 하며, 강력한 접근 제어가 수반되어야 합니다. * **격리된 환경에서의 테스트:** 운영 환경에 적용하기 전, 로컬이나 카나리(Canary) 환경에서 설정을 안전하게 검증할 수 있는 기능을 제공합니다. * **유연한 멀티테넌트 지원:** 서비스별 위험도에 따라 배포 전략(예: AWS 존 단위, 쿠키 단위, 포드 백분율 등)을 다르게 설정할 수 있어야 합니다. * **신속하고 통제된 사고 대응:** 장애 발생 시 긴급 설정을 즉시 배포할 수 있어야 하며, 변경 사항에 대한 높은 관측성(Observability)을 통해 원인을 빠르게 파악하고 롤백할 수 있어야 합니다. **Sitar 플랫폼의 4계층 아키텍처** * **개발자 지향 계층(Developer-facing layer):** 기본적으로 Git 기반 워크플로우를 사용하며, 긴급 상황이나 특정 운영 요구사항을 위해 웹 UI(Sitar-portal)를 병행 운영합니다. * **제어 평면(Control Plane):** 설정 변경의 오케스트레이션을 담당하며 스키마 검증, 권한 확인, 배포 범위 및 속도 결정 등 핵심 로직을 실행합니다. * **데이터 평면(Data Plane):** 설정 값의 원천(Source of Truth) 역할을 하며, 대규모 환경에서도 신속하고 일관되게 설정을 배포할 수 있는 확장성 있는 저장소 역할을 수행합니다. * **에이전트 및 클라이언트(Agents and Clients):** 서비스와 함께 실행되는 사이드카 에이전트가 설정을 가져와 로컬에 캐싱하며, 클라이언트 라이브러리는 애플리케이션이 이 설정에 빠르게 접근할 수 있도록 돕습니다. **안정성을 위한 핵심 설계 선택** * **Git 기반 워크플로우 활용:** GitHub Enterprise와 기존 CI/CD 도구를 재사용하여 코드 리뷰, 승인 절차, 변경 이력 관리 등 검증된 프로세스를 설정 관리에도 동일하게 적용합니다. * **단계별 배포(Staged Rollouts)와 빠른 롤백:** 변경 사항을 한꺼번에 적용하지 않고 범위를 점진적으로 확대하며, 회귀 장애 감지 시 즉시 알림을 보내고 신속하게 이전 상태로 되돌립니다. * **제어 및 데이터 평면의 분리:** '결정'하는 로직과 '전달'하는 메커니즘을 분리하여, 배포 전략을 수정하더라도 실제 데이터 저장 및 배포 인프라에 영향을 주지 않도록 설계했습니다. * **로컬 캐싱을 통한 회복 탄력성:** 사이드카 에이전트가 설정을 로컬에 저장하므로, 백엔드 시스템에 일시적인 장애가 발생하더라도 서비스는 마지막으로 확인된 정상 설정(Last known good config)으로 중단 없이 동작할 수 있습니다. 대규모 시스템에서 동적 설정을 안전하게 운영하기 위해서는 단순한 키-값 저장소를 넘어, **자동화된 스키마 검증, 단계별 배포, 그리고 인프라 장애 시에도 동작할 수 있는 로컬 캐싱 전략**이 필수적입니다. 설정을 코드와 동일한 수준의 엄격한 프로세스로 관리할 때, 비로소 유연성과 안정성이라는 두 마리 토끼를 잡을 수 있습니다.