aws 배포를 하기전에 전체적인 흐름은 정리해보려한다.
그냥 배포 방법 찾아보며 해보려고도 했지만 생각보다 설정해 줄것들이 많은데
전체 구조와 흐름을 모르니 지금 설정하는게 왜 하는지 어디에쓰는지 모르는고 하는 거 같았다.
내 프로젝트는 3티어 구조를 사용하여 배포하려한다.
2티어 구조란?
간단하게 2티어는 웹서버가 db에 연결되는 형태로
일반적으로 서버의 역할이 web서버-db서버 두가지인 경우를 말한다.
api로 따로 서버통신 없이 클라이언트에서 요청 받은 웹서버는 db접근 하여 데이터 가져와
html form으로 바로 전송하는 방식이 있다.
3티어구조
클라이언트가 db에 바로 접근하지 않고 백엔드 서버와 같은 중간 서버를 거치는 형태이다.

요즘 많이 사용되는 구조로 위와 같은 구조를 가진다.
확장이 용이하고, 애플리케이션 개발의 모듈화가 가능하며 분산 부하 시스템 관리가 용이하다는 장점을 가진다.
백엔드 서버가 있으면 3티어?
그렇다, 꼭 was가 없더라도 3티어 이다 was는 백엔드 서버의 한 유형일 뿐이고
백엔드 서버의 비지니스 로직을 통해 디비에 접근하는 경유 3티어 구조이다.
약간 개념을 어렵게 생각했던거 같다. 너무 aws에만 초점을 맞췄던거 같다.
그냥 원래 알고있던 서버의 2계층 3계층 개념과 같은거 같다. (aws에 따로 있는 다른 개념인줄)
aws 구조
3티어로 구현 할것이기 때문에
내부는 크게 웹서버, 애플리케이션 서버, 데이터베이스 서버 3그룹으 나눈다.
각 그룹은 일단 하나의 인스턴스 들로 구성하겠다. (추후 auto scailing등 적용도 해봐야 할 거 같다)
일단 가장 큰 틀은 가상네트워크 공간인 vpc로 구성된다.
vpc는 서브넷을 만들어 더 작은 네트워크로 분리할 수 있다.
그럼 내가 만들것은 전체 틀이되는 vpc를 하나 만들어주고
bastions와 Nat Gateway가 쓸 퍼블릭 서브넷 하나
웹서버, 애플리케이션 서버와 데이터베이스가 각각 쓸 프라이빗 서브넷 3개를 만들어줄 것이다.
Nat Gateway
Nat Gateway는 특정 프라이빗 서브넷에 있는 인스턴스가 인터넷에 접속(외부와 통신)할 수 있도록 해주는 서비스이다.
NatGateway에는 탄력적ip를 할당해줘야 한다.
bastions
bastions는 외부에서 들어오는 내부 네트워크로의 접근을 통제하는 중간 포인트이다.
즉 Private 인스턴스에 접근하기 위한 중개 서버 역할을 한다.
-> Nat Gateway는 외부의 통신, bastions는 내부 인스턴스에 대한 접근을 관리한다
internet gateway
다음으로는 vpc를 외부와 연결해주는 internet gateway를 만들어준다.
간단하게 internet gateway가 있는 서브넷이 퍼블릭 서브넷이 된다고 생각하면 될거 같다.
internet gateway는 NatGateway의 서브넷을 연결시켜준다. (bastions는 통신하고는 상관 없음)
라우팅 테이블
만들어진 서브넷들을 연결해주기 위해 라우팅 테이블을 구성해 줘야한다.
라우팅 테이블은 서브넷에 대한 네트워크 트래픽이 어디로 전달돼야하는지 알려준다.
총 2개의 라우팅 테이블을 만들 것이다. 퍼블릭 라우팅테이블 하나 프라이빗 라우팅 테이블 하나를 만든다.
퍼블릭 라우팅 테이블에는 모든 ip들이 internet gateway로 라우팅 되도록 설정한다. (0.0.0.0/0 -> internet gateway)
그리고 해당 테이블에 퍼블릭 서브넷을 할당해준다.
프라이빗 라우팅 테이블에는 모든 Ip들이 Nat gateway로 라우팅 되도록 설정한다. (0.0.0.0/0 -> Nat gateway)
그리고 해당 테이블에 모든 프라이빗 서브넷을 할당해준다.

여기까지 전체적인 aws의 구조가 만들어졌다. 그림으로 나타내면 위와같다.
다음으로는 bastions를 이용한 보안그룹을 설정 해줘야하는데 다을 글에서 이어서 하겠다.
'프로젝트' 카테고리의 다른 글
| [aws] IPv6와 CIDR (0) | 2024.04.05 |
|---|---|
| [프로젝트] cors에러 (0) | 2024.03.27 |
| [프로젝트] 리프레시 토큰 (0) | 2024.03.22 |
| [aws] aws 보안그룹 설정, bastion (0) | 2024.03.06 |
| [프로제트] 프로젝트 배포 (0) | 2024.01.31 |