AWS 아키텍처 설계

date
Sep 24, 2023
slug
aws
status
Published
tags
AWS
summary
type
Post

시작하며

회사에서 진행한 프로젝트들을 통해 프론트엔드 배포와 AWS 환경에 대한 지식을 습득했습니다. 일반적으로 S3와 CloudFront를 활용하여 정적 웹사이트를 배포하고, Route 53을 통해 도메인을 연결하는 작업을 했습니다.
 
이 경험을 바탕으로, 기존의 업무 범위를 넘어 새로운 기술에 도전하기 위해 사이드 프로젝트를 시작했습니다. 이 프로젝트의 목표는 다음과 같습니다.
 
  • AWS 환경에서 A부터 Z까지의 서비스 구축 경험을 쌓기
  • 사용자의 필요를 충족시키는 B2C 서비스를 개발하기
  • 새로운 기술들을 실험해볼 Playground 만들기
 
이러한 목표를 가지고 사이드 프로젝트를 시작하여 AWS 아키텍처 구조를 설계했습니다.
 

AWS 아키텍처 구조

notion image
 
위의 그림은 사이드 프로젝트를 위해 설계했던 AWS 아키텍처 구조입니다.
 
사이드 프로젝트를 진행하며, AWS를 활용하여 아래와 같은 작업들을 진행했습니다.
 
  • S3CloudFront를 통해 정적 웹사이트를 배포했습니다.
  • S3에서는 원본과 썸네일 이미지를 저장했습니다.
  • Route 53을 사용하여 도메인을 구매하고, 서브도메인 별로 리소스 라우팅을 설정했습니다.
  • RDS를 이용해 데이터베이스를 관리했습니다.
  • EC2에서 애플리케이션을 호스팅하고, CloudFront를 사용해 SSL 인증서를 관리했습니다.
  • Simple Email Service를 이용하여 이메일 전송 기능을 구현했습니다.
 

1. S3에 정적 리소스 저장

S3는 정적 리소스를 저장하기 위한 서비스입니다. GitHub Actions를 이용해 빌드된 결과물을 S3에 업로드하여 정적 웹사이트를 호스팅했습니다. 그리고 S3 버킷 정책을 설정하여 콘텐츠가 Amazon CloudFront를 통해서만 접근 가능하도록 했습니다.
 

2. CloudFront를 통한 콘텐츠 전송 및 SSL 설정

CloudFront는 글로벌 CDN 서비스로, 전 세계에 분산된 엣지 로케이션을 통해 컨텐츠를 빠르게 전달합니다. Certificate Manager에서 발급받은 SSL/TLS 인증서를 통해 HTTPS 보안 연결을 구성하고, 캐싱 정책을 통해 콘텐츠 전송을 최적화했습니다.
 

3. Route 53을 사용한 도메인 관리 및 리소스 라우팅

Route 53은 DNS 서비스입니다. 이 서비스를 통해 각 서브도메인을 다른 AWS 리소스로 라우팅하였습니다.
 

4. RDS를 이용한 데이터베이스 관리

RDS는 관리형 데이터베이스 서비스입니다. 이 서비스를 통해 클라우드 환경에서 데이터베이스를 구성했습니다.
 

5. EC2에서의 애플리케이션 호스팅

EC2는 가상 서버 인스턴스를 제공해주는 서비스입니다. 이 서비스를 통해 클라우드 환경에서 백엔드 서버를 구성하고, Nginx 대신 CloudFront로 SSL/TLS 보안 구성하고, 서버의 특성상 캐싱정책을 비활성화 했습니다.
 

6. Simple Email Service를 이용한 이메일 전송 기능 구현

SES는 이메일 전송 기능을 제공해주는 서비스입니다. 이 서비스를 통해 클라우드 환경에서 이메일 전송 기능 구현했습니다.
 

마치며

다음으로 진행해보고 싶은 것들은 이렇습니다.
  • 서버를 도커기반의 ECS로 이전
  • 스케줄링 작업 관리를 위한 Cron 서버를 클라우드 환경에서 구축
  • Lambda를 이용하여 S3에 이미지 자동 리사이징
 
이 글이 여러분의 프로젝트에 도움이 되기를 바랍니다. 앞으로도 유용한 정보를 공유하기 위해 노력하겠습니다.
 

참고


© taekyeom 2022 - 2025