공부하는 블로그

AWS | 토이프로젝트 운영서버 구축기 (1) - 인프라 모델링 본문

AWS

AWS | 토이프로젝트 운영서버 구축기 (1) - 인프라 모델링

치킨닮은닭 2022. 12. 25. 23:22

* 토이 프로젝트를 진행하면서 AWS를 이용하여 Spring 기반의 운영 서버를 구축한 내용을 정리했습니다.

 

 

 토이 프로젝트를 하면서 실제로 앱 배포를 해볼 수 있는 기회가 생겼습니다!

 

 제가 합류했을 당시엔 개발 서버까지는 구축되어 있고, 운영 서버에 대해서는 논의 중인 상태였습니다. 다른 백엔드 개발자 분들의 개인 여건상 혼자 운영 서버를 구축 해야하는 상황이 되었고, 개발을 하면서 API나 Batch 로직만 구현해보았지 실제로 Dev-ops 쪽의 지식은 많이 부족한 상태였습니다. 이 상황에서 고를 수 있는 최상의 선택지는 콘솔을 통한 간편한 보안 설정과 생성, 삭제가 쉬운 인스턴스, 이 외의 다양한 서비스들이 제공되는 AWS 였습니다. 

 

 배포 자동화 도구는 Github Action으로 결정하였습니다. 다른 도구들도 많은데 Github Action을 사용한 이유는 비용이 가장 컸습니다. AWS 비용도 비싼 편이고,, 앱 운영 수익은 없고,, 팀원들의 사비로 운영하는 상황에서 Circle CI 같은 유료 툴은 고려 대상에서 제외하였고, Jenkins는 무료 오픈소스이긴 하나 따로 젠킨스 서버를 띄우기 위해서 서버 비용이 발생하게 되어 제외하였습니다. 

 

서버 인프라 개요

 

Internet Gateway

- VPC 내의 리소스와 인터넷이 통신할 수 있도록 도와줍니다.

- 퍼블릭 서브넷의 인스턴스에 대해 NAT 역할도 함께 수행합니다.

NAT Gateway

- 프라이빗 서브넷의 리소스가 외부의 퍼블릭 네트워크와 통신하기 위해 사용합니다.

- 예를 들어, 프라이빗 EC2에 기본 서버 환경 구축을 위한 패키지 설치 시에 외부의 퍼블릭 네트워크로 접근을 해야 합니다. 이 때, NAT 게이트웨이 설정이 되어있지 않다면 패키지 설치가 불가능 합니다.

- 외부에서 NAT 게이트웨이를 통해 내부 인스턴스로의 접근은 불가능합니다. (인바운드는 불가능. 아웃바운드는 가능)

Private Subnet

- 외부에서 접근이 불가능한 네트워크 영역입니다.

- 이 영역에 위치한 리소스에 접근하기 위해서는 같은 VPC 내의 다른 리소스를 통해서만 접근이 가능합니다.

- NAT 게이트웨이를 이용하여 외부로의 접근만 가능합니다.

 

1. Web Application Server (WAS)

- 작업한 Spring 어플리케이션이 올라갈 EC2 인스턴스입니다.

 

2. Relational Database Service (RDS)

- 웹 어플리케이션에서 사용할 데이터베이스 서버입니다.

Public Subnet

- 인터넷 게이트웨이를 통하여 외부에서 접근이 가능한 네트워크 영역입니다. 

- 이 영역에 위치한 리소스들은 외부에서 접근 가능한 IP를 할당 받습니다.

 

1. Load Balancer

- 네트워크 분산을 위해 사용되는 기술입니다.

- 저의 경우에는 WAS 인스턴스를 하나만 올리기 때문에 네트워크 분산보다는 인터넷 게이트웨이와 연결하여 외부에서 HTTP 접근이 가능한 프록시 서버처럼 사용하였습니다.

- 또한, 무중단 배포를 위해 WAS 인스턴스의 Port 2개와 연결하여 사용하였습니다.

 

2. Bastion Server

- 프라이빗 영역에 위치한 WAS에 접근하기 위한 프록시 서버입니다.

- SSH 터널링을 통해 WAS에 접근이 가능합니다.

 

 

 

다음 포스팅에서는 퍼블릭 영역과 프라이빗 영역의 AWS EC2 인스턴스 생성과 각각의 인스턴스에 접근하는 방법에 대해 알아보도록 하겠습니다.

Comments