pile·
인프라 / DevOps·핏펫핏펫·

Github Actions의 의존성 캐싱을 통한 서버 배포속도 향상

핏펫이 느린 CI/CD 때문에 겪던 배포 대기 시간을 GitHub Actions 캐싱으로 줄인 기록이다. Terraform 으로 ECS Fargate 테스트 환경을 만들고 Gradle 의존성 캐시와 Docker Buildx 레이어 캐시를 붙였다. 테스트 환경에서 Gradle 빌드가 55초에서 15초로 줄었고, 실 서버에 적용했을 때는 약 2배 빨라졌다.

핵심 포인트
  • 문제 정의가 구체적이다. 배포 1회에 5분, 하루 30회면 150분이라 배포에만 2시간 넘게 쓰는 셈이다.
  • GitHub Actions 는 워크플로가 매번 새로 셋업되므로 로컬처럼 캐시가 남지 않는다. actions/cache 로 고유 키를 만들어 명시적으로 살려야 한다.
  • Gradle 은 actions/setup-java 의 cache 옵션을 gradle 로 주는 것만으로 의존성 캐시가 붙는다.
  • Docker 는 setup-buildx-action 으로 Buildx 를 켜고 cache-from 과 cache-to 를 로컬 경로에 걸어 레이어를 재사용한다.
  • 측정 결과는 Gradle 빌드 55초에서 15초, Docker 빌드와 푸시 30초에서 27초다. 테스트 환경 차이는 작지만 실 서버에서는 약 2배 개선됐다.
상세 정리
  • 테스트 환경은 실제 운영과 비슷하게 AWS ECS Fargate 위에 Java 11 과 Gradle 앱을 올리고 Terraform 으로 구성했다. 전체 코드는 공개 저장소에 있다.
  • Terraform 구성은 기존 VPC, 퍼블릭/프라이빗 서브넷, 보안그룹을 data 로 참조하고 ALB 와 target group, listener, ECS 클러스터, ECR, task definition, service 를 만든다.
  • ECS 서비스는 capacity_provider_strategy 로 FARGATE_SPOT 을 쓰고 배포 시 minimum healthy 50 퍼센트, maximum 200 퍼센트로 잡았다.
  • Dockerfile 은 openjdk:11 기반이고 시스템 사용자 spring 을 만들어 실행하며 빌드 산출물 jar 를 복사해 8080 을 노출한다. 상용에서는 빌드 속도를 위해 Alpine 이미지를 쓴다고 덧붙인다.
  • 워크플로는 Build 와 Deploy 두 job 으로 나뉜다. Build 에서 만든 jar 를 upload-artifact 로 올리고 Deploy 가 download-artifact 로 받아 이어간다.
  • Docker 레이어 캐시 키는 runner.os 와 github.sha 조합이고, restore-keys 로 이전 캐시를 폭넓게 되살린다.
  • 캐시가 계속 쌓이는 것을 막기 위해 빌드 후 기존 캐시를 지우고 새 캐시를 그 자리로 옮기는 Move cache 스텝을 둔다.
  • 이미지 태그는 short-sha 액션으로 만든 6자리 SHA 를 쓴다.
  • 배포는 amazon-ecs-render-task-definition 으로 task-definition.json 의 이미지 태그를 새 SHA 로 갈아끼우고, amazon-ecs-deploy-task-definition 으로 서비스에 반영한다. wait-for-service-stability 는 false 라 태스크 생성 완료를 기다리지 않는다.
왜 읽나GitHub Actions 배포가 느려 개발 흐름이 끊기는 팀에게 Gradle 과 Docker 레이어 캐시를 붙이는 워크플로 전문을 보여주는 사례.
핏펫
핏펫 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    엔터프라이즈 보안 요구사항을 충족하는 프라이빗 Amazon Bedrock AgentCore 구축하기

    Amazon Bedrock AgentCore의 VPC egress 기능(2026년 4월 추가)을 활용해 온프레미스 LLM·사내 IdP·사내 MCP 서버에 인터넷 노출 없이 연결하는 방법을 다룬다. 규제 산업 엔터프라이즈가 기존 사내 자산을 그대로 유지하면서 Bedrock AgentCore를 안전하게 구축하기 위한 구성 가이드다.

    요약 이어보기
    #mcp#amazon-bedrock#vpc+2
  2. 인프라 / DevOps·gitlab-engGitLab Blog·

    OpenTofu와 Argo CD로 구성하는 GitLab 기반 AWS 제어 플레인

    GitLab을 단일 제어 플레인으로 삼아 OpenTofu로 AWS 인프라를 프로비저닝하고, Argo CD로 GitOps 기반 애플리케이션 배포까지 자동화하는 엔드투엔드 튜토리얼이다. VPC·EKS 클러스터 구성부터 Helm 기반 툴 설치, 샘플 앱 배포까지 모든 과정이 GitLab CI/CD 파이프라인으로 연결된다.

    요약 이어보기
    #kubernetes#aws-eks#gitops+2
  3. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    Amazon Bedrock 기반 사내 LLM, 키 발급부터 비용 차단까지: F&F의 LiteLLM 게이트웨이 운영 사례

    패션 기업 F&F가 Amazon Bedrock과 LiteLLM 프록시를 결합해 구축한 사내 LLM 플랫폼 운영 사례다. API 키 셀프서비스 발급, 모델별 접근 승인 워크플로, 사용자·프로젝트별 예산 자동 차단까지 전 과정을 직접 구현한 아키텍처 결정과 운영 교훈을 공유한다.

    요약 이어보기
    #kubernetes#amazon-bedrock#litellm+2