Skip to content

soomin0209/cloud-architecture-assignment

Repository files navigation

☁️ CH 4 클라우드_아키텍처 설계 & 배포 과제

LV 0 - 요금 폭탄 방지 AWS Budget 설정

Lv 0 - 요금 폭탄 방지 AWS Budget 설정

LV 1 - 네트워크 구축 및 핵심 기능 배포

  • EC2의 퍼블릭 IP : 3.34.40.134

LV 2 - DB 분리 및 보안 연결하기

  1. Actuator Info 엔드포인트 URL : 🔗http://3.34.40.134:8080/actuator/info
  2. RDS 보안 그룹 스크린샷
LV 2 - DB 분리 및 보안 연결하기 - RDS 보안 그룹 스크린샷

LV 3 - 프로필 사진 기능 추가와 권한 관리

image - URL의 만료 시간 : 2026-02-10 11:07:59 (KST)

LV 4 - Docker & CI/CD 파이프라인 구축

  1. Github Actions 성공 이미지
Lv 4 - Docker   CI, CD 파이프라인 구축 - Github Actions 성공 이미지 2. EC2 터미널 이미지 Lv 4 - Docker   CI, CD 파이프라인 구축 - EC2 터미널 이미지

✅ 필수 기능

LV 0 - 요금 폭탄 방지 AWS Budget 설정
  • 설정 요구사항
    • AWS Budgets에서 월 예산을 $100 로 설정하세요.
    • 예산의 80% 도달 시 이메일 알림이 오도록 설정하세요.
  • 과제 제출 요구사항
    • 설정 완료된 AWS Budgets 화면을 캡처하여 README.md에 첨부하세요.


LV 1 - 네트워크 구축 및 핵심 기능 배포
  • 인프라 구축 (VPC & EC2)

    • VPC 설계
      • VPC을 설정하여 Public/Private Subnet 분리한다.
    • EC2 생성
      • Public Subnet에 EC2를 생성한다.
  • 애플리케이션 개발 (API & Actuator)

    • 팀원 정보 저장 및 조회 API 개발
      • POST /api/members
        • 팀원의 이름, 나이, MBTI를 JSON으로 받아 저장하는 API를 만드세요.
      • GET /api/members/{id}
        • 저장된 팀원 정보를 조회하는 API를 만드세요.
    • 운영 설정
      • Profile 분리
        • 로컬에선 H2를 쓰고, 운영환경에선 MySQL을 쓰도록 application.propertieslocal/prod로 분리하세요.
      • 로그 전략
        • API 요청이 들어올 때마다 INFO 레벨로 "[API - LOG] xx” 과 같은 로그를 남기세요.
        • 예외 처리를 구현하고, 에러 발생 시에는 ERROR 레벨로 스택트레이스를 남기세요.
    • 상태 모니터링 (Actuator) 추가
      • spring-boot-starter-actuator 의존성을 추가하세요.
      • 설정파일에 헬스 체크 엔드포인트를 노출하세요
  • 배포 및 검증

    • EC2에 프로젝트를 배포하고 실행하세요.
    • 로컬에서 http://localhost:8080/actuator/health 접속 시 {"status": "UP"}과 같은 응답을 받아야 합니다.
  • 과제 제출 요구사항

    • 설정 완료된 EC2의 퍼블릭 IP 를 README.md에 첨부하세요.


LV 2 - DB 분리 및 보안 연결하기
  • 인프라 요구사항
    • RDS 구축
      • 로컬 접속용 Public Subnet 에 MySQL RDS를 만드세요. (로컬 PC에서 접속 테스트가 가능해야 함)
    • 보안 그룹 체이닝
      • RDS의 보안 그룹(Inbound)에는 IP 주소를 적지 말고, Step 1에서 만든 EC2의 보안 그룹 ID만 허용하세요. (EC2 ↔ RDS 연결 보장)
    • Parameter Store
      • DB 접속 정보(url, username, password)와 확인용 파라미터를 저장.
  • 애플리케이션 요구사항
    • Spring Boot 실행 시 Parameter Store 값을 주입받아 RDS에 연결.
    • Actuator Info 확장
      • Parameter Store에 저장한 team-name 값이 /actuator/info 엔드포인트에서 조회되도록 설정하세요.
  • 검증
    • http://{EC2_Public_IP}:8080/actuator/info 접속 시, Parameter Store에 저장한 팀 이름이 출력되어야 합니다.
  • 과제 제출 요구사항
    1. Actuator Info 엔드포인트 URL
      • /actuator/info에 접속했을 때, Parameter Store에 저장했던 또는 확인용 파라미터 값이 JSON으로 출력되는 URL을 README.md에 작성하세요
      • (예: http://3.34.xx.xx:8080/actuator/info)
    2. RDS 보안 그룹 스크린샷
      • AWS 콘솔 > RDS > 보안 그룹 > [인바운드 규칙] 탭을 캡처하세요.
      • 소스(Source) 부분에 IP 주소(0.0.0.0/0)가 아닌, EC2의 보안 그룹 ID (sg-xxxxx)가 등록되어 있음을 보여주어야 합니다.


LV 3 - 프로필 사진 기능 추가와 권한 관리
  • 인프라 요구사항
    • S3 버킷 생성
      • "모든 퍼블릭 액세스 차단" 설정을 켜고 버킷을 생성하세요.
    • IAM Role
      • Access Key를 코드에 넣지 말고, S3 접근 권한이 있는 IAM Role을 생성해 EC2에 연결하세요.
  • API 요구사항
    • POST /api/members/{id}/profile-image
      • MultipartFile로 이미지를 받아 S3 버킷에 업로드하고, 이미지 URL을 DB에 업데이트하는 기능을 추가하세요
    • GET /api/members/{id}/profile-image
      • Presigned URL 을 생성하여 반환하세요. 클라이언트는 이 URL을 통해서만 이미지를 다운로드할 수 있어야 합니다.
      • Presigned URL의 유효기간을 꼭 7일로 설정해주세요
  • 과제 제출 요구사항
    • 발급받은 Presigned URL 1개와 해당 URL의 만료 시간을 README.md에 기재하세요.


✅ 도전 기능

LV 4 - Docker & CI/CD 파이프라인 구축
  • Docker 도입
    • Dockerfile을 작성하여 애플리케이션을 이미지로 빌드합니다.
  • Github Actions CI/CD
    • .github/workflows/ci.yml, .github/workflows/cd.yml 작성.
    • CI
      • Main 브랜치 푸시 시 Build & Test 수행.
    • CD (Docker Hub)
      • 빌드된 이미지를 Docker Hub에 Push.
      • EC2에서 docker pull 명령어로 이미지를 받아 실행.
  • 검증
    • 코드를 수정하여 Github에 Push 했을 때, EC2에 자동으로 반영되는지 확인하세요.
  • 과제 제출 요구사항
    1. Github Actions 성공 이미지
      • Github Repository > Actions 탭에서 배포 워크플로우가 초록색 체크(Success)로 표시된 화면을 캡처 후 README.md에 올려 주세요
    2. EC2 터미널 이미지
      • EC2에 접속하여 sudo docker ps 명령어를 입력했을 때, 실행 중인 컨테이너 목록이 나오는 화면을 캡처 후 README.md에 올려 주세요


About

CH 4 클라우드_아키텍처 설계 & 배포 과제

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors