개요
요즘 토이 프로젝트를 진행 중인데, 게임을 만들기 전부터 분산서버로 만들자! 라는 목표가 있었기 때문에 로그인 서버, 로비 서버, 게임 서버를 각각 구축했다. 그런데 로그인 서버에서 로비 서버로의 연결은 순조로웠으나, 로비 서버에서 게임 서버로의 전환은 의문이 들었다. 게임 서버에서는 패킷의 송수신이 로비에 비해 훨씬 많을 거니까 조금 더 욕심을 부려서 로드밸런싱을 거쳐서 여러 게임 서버를 만들면 어떨까...? 하는 생각에...
따라서 로비 서버에서 Nginx를 이용해서 로드 밸런싱을 거친 후 게임 서버로 연결되도록 구현하려 했는데, 분산 서버를 구글링해보면 항상 따라다니는 AWS ECS(Elastic Container Service)가 눈에 밟혔다. 도대체 저건 뭔데 계속 뜨는거야...
그래서 이번 시간에는 Nginx와 ECS의 역할을 정확하게 알아보는 시간을 가지도록 하자!
Nginx (엔진엑스)
웹 서버 및 리버스 프록시 서버로 많이 사용되는 오픈 소스 소프트웨어.
역할
- 트래픽 분산 (로드밸런싱): 여러 서버 간에 요청을 분산하여 트래픽이 몰리는 것을 방지. 라운드 로빈, Least Connections, IP Hash와 같은 다양한 로드 밸런싱 방법을 지원한다.
- 리버스 프록시: 클라이언트 요청을 백엔드 서버에 전달. 로드 밸런싱을 통해 다수의 백엔드 서버로 트래픽을 분산시킬 수 있다.
- 캐싱: 정적 파일과 요청 데이터를 캐싱하여 성능을 개선.
- SSL/TLS 처리: HTTPS 설정 및 SSL/TLS 인증서를 통해 보안 연결을 지원.
ECS
AWS에서 제공하는 컨테이너 오케스트레이션 서비스로, Docker 컨테이너를 쉽게 배포, 관리, 확장할 수 있도록 도와준다.
역할
- 서버 자동 생성/제거
- 컨테이너 관리: Docker 이미지를 기반으로 애플리케이션을 컨테이너로 실행. 컨테이너 배포, 스케일링, 업데이트를 자동화한다.
- 서버 상태 모니터링
- 자동 복구
요약
Nginx: "이미 있는 서버들에 트래픽을 어떻게 나눠줄까?"
ECS: "서버가 더 필요하면 새로 만들고, 필요 없으면 줄이자!"
즉, 두 서비스는 상호보완적인 관계로써 분산서버에 흔히 함께 사용된다고 한다!!!

'Side Projects' 카테고리의 다른 글
Git Actions? (0) | 2025.02.16 |
---|---|
DI(의존성 주입)? (0) | 2025.01.12 |
서비스 레이어 패턴 활용하기 (0) | 2024.12.28 |
Fluent Validation? Bcrypt? (0) | 2024.12.08 |
Bull Queue? (0) | 2024.12.03 |