피드로 돌아가기
Dev.toDevOps
원문 읽기
Single Source 기반 5개 언어 패키지 자동 배포 파이프라인 구축
Publishing One Package to Five Registries with GitHub Actions
AI 요약
Context
유럽 VAT 세율 데이터의 잦은 변경과 파편화된 수집 방식으로 인한 데이터 부정확성 발생. 기존 API 서비스의 고비용 구조와 런타임 fetch 방식에 따른 네트워크 의존성 및 유지보수 부담이 주요 한계점으로 작용.
Technical Solution
- EC TEDB SOAP 서비스 기반의 Daily 자동 수집 스크립트를 통한 데이터 최신성 확보
- 모든 언어 생태계의 기준점이 되는 Canonical JSON 파일 중심의 Single Source of Truth 설계
- 다국어 툴체인의 디렉토리 구조 및 버전 태깅 충돌 방지를 위한 Monorepo 배제 및 개별 Repository 전략 채택
- XML 네임스페이스 수동 제거 및 특수 국가(그리스, 영국 등) 예외 처리 로직을 통한 데이터 정규화
- 배포 실패 시 재시도 과정에서 발생하는 'Version Already Exists' 에러를 성공으로 처리하는 Idempotency 구현
- GitHub Actions를 활용하여 5개 Registry(npm, PyPI, Packagist, Go, RubyGems)에 동시 배포하는 자동화 파이프라인 구축
실천 포인트
- 다국어 라이브러리 제공 시 Monorepo의 툴체인 충돌 가능성을 검토하고 Separate Repo 전략과 비교할 것 - 외부 API 데이터 수집 시 ISO 표준과 실제 서비스 제공 데이터 간의 매핑 테이블(Mapping Table)을 반드시 정의할 것 - CI/CD 파이프라인 설계 시 Registry의 버전 중복 제한 정책을 고려하여 멱등성(Idempotency) 처리 로직을 추가할 것