AWS 프로젝트 개요

minpractice_jhj·2025년 3월 24일

AWS

목록 보기
2/10

Pin-Up 프로젝트: AWS로 배포 및 운영 환경 구축

안녕하세요! 이번 블로그 포스트에서는 Pin-Up 프로젝트에서 AWS를 활용하여 Spring Boot 애플리케이션을 배포하고 운영하는 과정에 대해 소개하려고 합니다. EC2, S3, PostgreSQL, Docker, Nginx 등을 활용한 전체적인 흐름을 단계별로 나누어 설명할게요. 이 과정은 실제로 운영 환경을 구축하는 데 필요한 다양한 기술을 다뤘습니다.

프로젝트 개요

이번 프로젝트는 AWS 인프라를 기반으로 Pin-Up 애플리케이션을 배포하고 운영하기 위한 환경을 구축하는 것입니다. 이를 통해 서버 호스팅, 이미지 업로드 및 저장, 데이터베이스 운영, 리버스 프록시 설정 등의 다양한 기능을 설정했습니다. 그럼 각 단계별로 어떻게 진행했는지 살펴보겠습니다.

1. 프로젝트 개요

  • 프로젝트 명: (예: 개인 프로젝트 AWS 배포)
  • 목적: EC2, S3, RDS(PostgreSQL), Docker 등을 활용하여 Spring Boot 애플리케이션을 배포 및 운영하는 환경 구축
  • 주요 기술 스택:
    • AWS EC2 (서버 호스팅)
    • AWS S3 (이미지 업로드 & 저장)
    • AWS IAM (권한 관리)
    • Docker (PostgreSQL 데이터베이스 운영)
    • Spring Boot (백엔드 애플리케이션)
    • Nginx (리버스 프록시 서버)
    • Route 53 (도메인 네임 관리)
    • Elastic IP (EIP) (고정 IP)
    • AWS ECR (컨테이너 이미지 저장소)

2. AWS 인프라 구성

  • EC2: 백엔드 서버 호스팅
  • S3: 이미지 파일 저장
  • IAM: EC2가 S3 및 ECR에 접근할 수 있도록 권한 설정
  • PostgreSQL (Docker): 데이터베이스 운영
  • Nginx: 리버스 프록시 설정
  • Route 53: 도메인 이름 관리 및 Elastic IP 연결
  • Elastic IP (EIP): 고정된 IP 주소 사용하여 서버에 안정적인 접근 가능
  • ECR (Elastic Container Registry): 컨테이너 이미지 저장 및 배포

3. 배포 과정

  1. EC2 인스턴스 생성 및 기본 설정
    • SSH 접속 및 패키지 업데이트
    • 방화벽 및 보안 그룹 설정
    • Elastic IP 할당 및 EC2에 연결
  2. AWS S3 버킷 생성 및 이미지 업로드 연동
    • 버킷 생성 및 퍼블릭 액세스 차단 설정
    • IAM 역할 설정하여 EC2가 S3에 접근하도록 권한 부여
  3. PostgreSQL을 Docker로 실행 및 Spring Boot 연결
    • Docker 설치
    • PostgreSQL 컨테이너 실행 및 데이터베이스 구성
    • Spring Boot 애플리케이션에 데이터베이스 연결 설정
  4. Spring Boot 애플리케이션 배포
    • JAR 파일 빌드 및 EC2로 전송
    • 애플리케이션 실행 및 테스트
  5. Route 53에서 도메인 연결
    • Route 53에서 도메인 설정 및 Elastic IP에 연결
    • DNS 레코드를 통해 도메인 네임과 서버 연결
  6. 도메인 소유권 인증 (Route 53 + Google 개발자 콘솔)
    • 상황: 구글 로그인 기능을 설정하려고 했으나, Google 개발자 콘솔에서 도메인 소유권 확인을 요구하는 이메일을 받음.
    • 요청 사항: 도메인 소유권을 확인하여 도메인과 앱을 연결해야 로그인 기능이 활성화됨.
    • 해결: AWS Route 53에서 TXT 레코드를 추가하여 도메인 소유권을 인증함.
  7. Nginx 설치 및 리버스 프록시 설정
    • Nginx 설치 및 proxy_pass를 이용한 Spring Boot 서버 연결
    • HTTP 요청을 Spring Boot 애플리케이션으로 포워딩
  8. SSL 인증서 추가 (HTTPS 설정)
    • Let's Encrypt 인증서 발급 (Certbot 사용)
    • HTTPS로 보안 연결 설정
    • 인증서 자동 갱신 설정
  9. AWS ECR과 보안 관리
    • Docker Hub vs AWS ECR vs GCP GCR 비교
    • AWS ECR을 선택한 이유: 보안 강화, AWS 서비스와의 원활한 통합, 비용 절감
    • IAM을 활용한 ECR 접근 제어 설정
  10. 애플리케이션 운영
    • EC2에서 애플리케이션 실행 상태 모니터링
    • 로그 및 성능 모니터링을 위한 툴 사용 (예: CloudWatch) — 추후에 설정 예정
    • 필요한 경우 자동 확장(Auto Scaling) 및 로드 밸런서 설정 — 추후에 설정 예정
profile
운동처럼 개발도 작은 실천이 성장의 힘이 된다고 믿는 개발자 minpractice_jhj 기록

0개의 댓글