자동화 slecs

자동화 사이트 정보를 단일 출처로 통합해 일관성 확보

목차

자동화 시스템이 커질수록 설정 관리가 복잡해진다. 이번엔 hedvion 자동화의 사이트 정보를 한 곳으로 모아, 일관성을 높이는 구조로 개선했다.

SSOT가 없으면 무슨 일이 생기나

자동화가 여러 사이트나 플랫폼을 대상으로 할 때, 그 정보가 대부분 여기저기 흩어진다. 스크립트 A에선 하드코딩, 스크립트 B에선 설정 파일, 스크립트 C에선 환경변수... 이렇게 되면:

  • 새 사이트를 추가할 때마다 모든 스크립트를 찾아다니며 수정
  • 사이트 정보가 변경되면(URL, 인증 방식 등) 동기화 실패 가능
  • "이 정보가 정말 최신인가?" 하는 불안감이 생김
  • 나중에 온 팀원이 어디가 source of truth인지 알 수 없음

그래서 Single Source of Truth(SSOT) 원칙이 필요하다.

어떻게 개선했나

sites.py 라는 헬퍼 모듈을 만들어서, 모든 자동화가 참조할 수 있는 중앙 저장소를 마련했다. 여기엔:

  • 사이트 정보의 정의 (메타데이터, 주소, 인증 방식 등)
  • 조회 함수들 (특정 사이트 찾기, 필터링 등)
  • 유효성 검사 로직

그리고 dump_sites_yaml 크론 잡을 추가했다. 정기적으로:

  1. sites.py 의 정보를 읽어서
  2. YAML 형식으로 덤프
  3. 다른 시스템이나 모니터링에서 참조할 수 있게
sites.py (중앙)
    
dump_sites_yaml 크론
    
sites.yaml (사람이 읽을  있는 형식, git 추적 가능)
    
다른 자동화 스크립트들은 sites.py import 해서 데이터 사용
역할 담당
sites.py "무엇" — 사이트 정보의 정의, 검색, 검증
dump_sites_yaml "언제" — 크론으로 정기 실행, YAML 생성
다른 자동화 sites.py import 해서 데이터 사용

이런 패턴의 장점

변경이 한 곳에서 끝난다. 새 사이트를 추가하거나 정보를 수정할 땐 sites.py만 건드리면 된다. 모든 자동화가 자동으로 최신 정보를 쓴다.

일관성 검증이 쉬워진다. YAML을 생성할 때 스키마 체크, 필수 필드 검증 등을 sites.py 에서 한 번에 처리하면, 덤프된 YAML은 항상 유효한 형태가 된다.

다른 시스템과의 연계 가능. YAML 파일이 있으면, 우리 자동화 코드 없이도 다른 팀이나 도구에서 참조할 수 있다. 대시보드 표시, 설명서 생성 등도 훨씬 간단해진다.

회고

처음엔 "그냥 필요할 때마다 수정하면 되지 않나?" 싶을 수도 있다. 특히 자동화 스크립트 몇 개뿐이면 더 그렇다. 하지만 경험상:

  • 시간이 지나면 자동화는 자연스럽게 늘어난다. 그땐 이미 너무 늦다.
  • 팀이 커지면 "누가 이 값을 언제 어디서 수정했는지" 추적이 어려워진다. 누군가는 결국 "왜 여기 값이 저기와 다르지?" 라고 디버깅하게 된다.
  • 크론 잡으로 정기적으로 YAML을 생성하는 것도 중요하다. 단순히 코드로만 있으면 버전 관리와 히스토리 추적이 어렵다. YAML은 git에 커밋되면 언제 무엇이 바뀌었는지 한눈에 보인다.
  • YAML은 자동화 코드 없이도 읽을 수 있으니, 비개발자도 내용을 검증하거나 모니터링할 수 있다는 게 생각보다 유용하다.

🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.