services.gradle.org) 일시 504로 push-image 실패. (A) docker/build-push-action + gha 레이어 캐시(type=gha,mode=max)로 배포본·의존성 재다운로드 제거, (B) Dockerfile gradlew 지수 백오프 재시도(최대 5회, 기본은 1회만 시도). PR 머지 → push-image 통과(2m26s) 검증prod-app:3이 ELB 헬스체크 실패로 exit 143, 19분 행. 원인 = healthCheckGracePeriodSeconds=0 + 앱 부팅 85s → unhealthy(90s)가 healthy(115s)보다 먼저 도달해 부팅 중 종료. 앱 버그 아님(보안·경로 코드 확인). 테라폼팀이 grace 0→180 수정(commit c0e34ae) → prod-app:4 COMPLETED → deploy-prod 첫 end-to-end 성공(run 27124735282, 8m16s) = Backend Phase 2 자동배포 최초 성공Z00909163J12BPCLO45XR, 레코드 8개(A alias·NS·SOA·ACM 검증 CNAME) 확인. www.farmily.info 등록 검증. PROJECT_CONTEXT에 레코드 표 + ⚠️ACM 검증 CNAME 삭제 금지 경고 추가https://www.farmily.info/@youngwoo-strawberry 3단 체인(CloudFront SPA fallback → public API → 데이터) 확인. 실제 공개 API 경로 = /api/v1/public/farms/{handle} (코드 확인 후 정정)| 우선 | 작업 | 상태 |
|---|---|---|
| 🔴 시한 | Node20 액션 deprecation 대응(6/16 강제 Node24) + SonarCloud QG SHA핀(checkout·setup-java) 동시 처리 | 착수 필요 |
| 🟡 의존 | Backend deploy-dev job 추가 | dev 인프라 apply 대기 |
| 🟡 의존 | Infra terraform.yml(plan/apply 자동화) | 미작성 |
| 🟢 보안 | Secrets Manager 마이그레이션(ECS env 평문 → KMS) | 앱팀 협업 |
| ⚪ 외부 | Mobile google-services.json EAS 주입 | 앱팀 파일 대기 |
healthCheckGracePeriodSeconds는 부팅시간 > unhealthy 도달시간일 때 필수 — grace=0이면 등록 직후부터 헬스체크 카운트 시작. interval 30s × unhealthy threshold 3 = 90s에 첫 실패 확정인데, 앱 부팅이 85s + healthy 도달 115s라 부팅 끝나기 전에 unhealthy로 죽는 레이스. grace는 "부팅 유예 시간"이라 부팅시간보다 넉넉히(180s) 잡아야 함deregistration_delay(기본 300s)가 실패 태스크 수명을 설명 — 헬스체크 실패로 빠지는 태스크도 커넥션 드레이닝 5분을 기다림 → 실패 태스크가 5분간 살아있는 것처럼 보이는 이유type=gha는 GitHub Actions Cache(무료 10GB, LRU·7일 evict) 사용. 브랜치별로 캐시가 분리돼 feat/main이 서로 캐시를 안 탐 → main 첫 빌드는 캐시 미스 감안/profiles/...라 했다가 401, 코드 확인 후 /public/farms/...로 정정. 앱 내부 로직은 임의 단정 말고 코드 확인이 맞았다. 인프라 관점에서도 검증 경로를 코드에 맞춰야 도메인 end-to-end가 신뢰성 있다.