[TIL] 백엔드 아키텍처, Nginx
Backend Architecture
- AWS EC2 진입
- Nginx 진입
- Nginx는 실제로 하나지만, 기능 및 아키텍처 이해를 돕기 위해 순서를 나눴다 : 로드 밸런싱, 웹서버(view) 기능, 리버스 프록시/포트 포워딩 기능
- Nginx의 기능을 나누지 않고 하나로 썼을 때는 말 그대로 하나로 보면 된다.
- AWS S3는 사진/동영상 업로드 용으로 사용
큰 틀 ▷ IDE ↔ Gitlab CI/CD ↔ Gradle(build) ↔ Docker(deploy) ↔ Nginx(Web Server) ↔ SpringBoot(WAS) ↔ JPA ↔ MySQL(DB, AWS RDS)
DB ▷ RDS를 사용한다면 EC2 밖, 사용하지 않고 EC2 내부에 설치할 경우 똑같이 배경색을 칠하는 것으로 생각한다.
알림, 사진/동영상 업로드 ▷ AWS S3 ↔ Front(React, ...) + Nginx(웹 서버 기능) ↔ Nginx(reverse proxy, port forwarding 기능)
▷ SpringBoot ↔ Redis(session, cache) ↔ DB
▶ Client ↔ Nginx ↔ firebase ↔ SpringBoot
▶ AWS S3 ↔ Client ↔ Nginx ↔ SpringBoot ↔ AWS S3
? Nginx의 load balancing 기능을 이용한다면 S3와 Front 사이가 아닐까?
? redis는 ec2 내부인지 외부인지 잘 모르겠다. 찾은 정보마다 다 다르다.
Reverse Proxy & Port Forwarding with Nginx
· Reverse Proxy
Request : Client → Nginx → Server
Response : Server → Nginx -- IP ? → Client
· Port Forwarding
Request : Client [port 22] → Nginx [port 22 : IP xxx.xxx.xxx.xxx] → Server 1 [IP xxx.xxx.xxx.xxx]