AWS Cloud School 13기 107일차

Forever 김·3일 전

AWS Cloud School

목록 보기
96/97

2026-06-04

Today

  • 4개 레포 pull + Infra 테라폼(ECS 모듈) 대조 → 실제 리소스명 확인 (dev-cluster/dev-app-service/dev-app, {env}-ecs-execution-role·{env}-ecs-task-role)
  • PassRole 네이밍 불일치 발견·정렬: 설계서 계획명(farmily-{env}-...) ≠ 테라폼 실제명 → backend 정책 Resource를 실제 롤명 4개로 수정 결정 (IAM 설계서·deploy.yml 반영, ⚠️ 콘솔 적용은 남음)
  • CI/CD 파이프라인 설계서 전면 정합화: dev브랜치→feat, 수동승인→자동배포, ECS 이름 테라폼값, 모노레포→멀티레포(레포별 .github/workflows/)
  • 구축 가이드 본문 YAML(Backend/Frontend-web/Mobile)·지원표까지 확정 모델로 전면 갱신 + 상단 "갱신 완료" 배너
  • 이미지 태그 latest/고정 → SHA(<env>-<short-sha>) 전환 (deploy.yml + 블로그 3편)
  • ★ Phase 1 워크플로우 실가동: deploy.yml(ci=gradle test + push-image=build/ECR push) 작성 → feat 커밋 b1d641b·push → green → PR #26 → 셀프 머지 06dbaf1 → main 런 green → ECR에 dev-b1d641b·prod-06dbaf1+latest 생성
  • 마이그레이션(VMware→ECS) 준비 범위·순서 정리 (영원님 몫 = ③배포 실행 + IAM/시크릿)
  • SonarCloud 연동: Gradle org.sonarqube 7.3.0.8198 + deploy.yml ci job에 ./gradlew sonar step 추가 (c0628a9) → PR #27 생성·머지 → main 반영
  • Quality Gate 실패: Security Hotspot 2개 (aws-actions/*@v4 SHA 미핀) → C Rating → QG blocked. Safe 마크 또는 SHA 핀으로 해결 필요
  • 트러블슈팅 문서 작성: Farmily-트러블슈팅-20260604-SonarCloud-연동.md (task 이름 변경·SONAR_TOKEN 미등록·fetch-depth 3가지)
  • Frontend EAS 현황 확인: eas.json 없음, app.json projectId 없음, 워크플로우 전무 → eas init 선행 필요
  • EXPO_TOKEN 발급 → Frontend 레포 Secrets 등록 완료

Notes

  • push-image: needs: ci + ci=./gradlew test → 테스트 통과해야 이미지 push (quality gate). 판정 = exit code(0/≠0), 채점은 JUnit/Gradle, 워크플로우는 게이트 설치만 함
  • 고정 태그(latest/:dev)는 ECS UpdateService가 "태그 안 바뀜"으로 새 이미지 미반영 → SHA 태그로 매 배포 고유 → 재배포·롤백 보장. prod는 latest도 추가 push
  • merge commit 방식 = feat↔main 정합 유지 (squash는 분기 재발 — 이전에 #25 squash로 겪음)
  • ECS Task Execution Rolesecretsmanager:GetSecretValue 있어야 task def secrets 주입됨 (자주 놓침)
  • ALB 헬스체크 /api/v1/health = 앱이 실제 제공(HealthController @RequestMapping("/api/v1")+/health) → 테라폼과 일치 확인됨
  • Security Hotspot ≠ 확정 취약점TO_REVIEW 상태 자체가 Rating C → QG 실패. SonarCloud에서 Safe/Fixed/Acknowledged 판정해야 통과
  • GitHub Actions SHA 핀: @v4 태그는 소유자가 언제든 다른 커밋으로 이동 가능(공급망 공격 벡터) → 전체 commit SHA(@abc1234...)로 고정해야 불변 보장
  • EAS CI/CD 3종 세트: EXPO_TOKEN(expo.dev 발급) + eas.json(build profile) + mobile.ymleas init 없이는 projectId 미확정이라 워크플로우 작성 불가

Learned

  • "VMware에서 동작" ≠ "ECS에서 동작" — 마이그레이션 위험은 앱 로직이 아니라 환경 결합부(DB→RDS / Redis→ElastiCache / 파일→S3 / 시크릿 / 네트워크 / 컨테이너)
  • CI/CD는 마이그레이션의 별도 후속이 아니라 "코드를 ECS에 올리는 수단" 자체
  • 가이드/설계서 = 목표(가설), 실코드(deploy.yml) = 현재 동작분 → "검증된 완성본"은 실제 돌려서 고친 후에 됨
  • 거버넌스 갭: "리뷰 필수" 팀규칙이 main branch protection으로 강제 안 됨(reviewDecision 빈값) → 문서 규칙 ≠ 시스템 강제. (다음 작업: main 보호규칙 추가)
  • SonarCloud QG: 도구 추가 시 Secret 등록 + 프로젝트 사전 생성 체크리스트 먼저 → 런 후 인증 실패로 당황하는 패턴 방지
  • 공급망 보안(Supply Chain Attack): CI에서 외부 Action을 태그로 쓰면 태그 이동 리스크 → 신규 Action 연동 시 SHA 핀이 보안 베스트 프랙티스 (포트폴리오: "Security Hotspot 검출 후 직접 판단·조치" 이력)

Prompt(회고)

  • 하루 쉬고 이렇게 오랜만에 교육장에서 프로젝트를 진행을 하니 조금 힘들기도 했다. 그래도 오늘은 CI/CD 파이프라인 중 SonarCube를 통해 코드 확인하고 ECR로 image가 올라가는 .yml파일을 작성했다. 처음으로 CI/CD를 내가 직접생각 하고 작성을 하다보니 재미있는거 같기도 하고 더 깊게 생각해봐야겠다.
  • 그리고 코드 이해가 조금 필요하듯 싶고 계획적인게 필요하다
  • 내일 멘토님과의 회의가 온라인으로 잡혀있는데 필요한걸 다 물어봐야겠다.
profile
나를 한줄로

0개의 댓글