TIL

2개월동안 고민하며 꿈에도 나온 Nginx, 기술 부채가 되지않을려면?

김영재0412 2023. 2. 23. 23:07

6주동안 진행된 프로젝트에서 우리는 따로 Nginx을 붙이지 않았다. 처음에 그 이유는 결국엔 Nginx는 로드밸런싱이고 개인적으로 찾아보고 생각했을 땐 Nginx의 역할, 장점들이 대부분 AWS 로드밸런서에서 처리가 된다고 생각했기때문이다. 그래도 뭔가 확실한 답이 없고 AWS 로드밸런서, Nginx들 둘 다 붙인 아키텍처도 많아서 멘토님에게 물어본 결과 멘토님은 보안적 이유로 Nginx는 꼭 붙여야하며 WAS가 바로 노출이 되는 건 보안적으로 좋지않기때문이라하셨다. 시간이 없어 이렇게 멘토링은 끝이 났고 꼭 붙여야한다는 생각으로 조금 더 이것 저것을 찾아보면 찾아볼수록 난 의문이 들었다. AWS 로드밸런서도 어떻게 보면 앞단에 있기때문에 바로 노출이 되는건 아니라는 생각이 들었다. 그리고 심지어 우리는 컨테이너가 평소 2개 스케일 아웃이 된다하더라도 최대 3개인데 근데 로드밸런서 하나 Nginx 컨테이너 하나면 오히려 배보다 배꼽이 더 큰 느낌도 들었다. 그래서 고민고민하다가 chatGPT에게 물어보았다.

 

AWS 로드밸런서를 사용하고 있는데 Nginx를 사용하는 것이 보안적으로 더 좋을까? 라고 물어봤을 때의 ChatGPT의 대답은 이러했다.

 

AWS 로드 밸런서는 여러 인스턴스, 컨테이너 또는 서비스에 트래픽을 분산하는 확장 가능한 고가용성 서비스입니다. 자동 확장, SSL/TLS 종료 및 다중 프로토콜 지원을 제공합니다.

반면 NGINX는 대용량 트래픽을 처리하고 캐싱, 압축, 로드 밸런싱 등을 통해 애플리케이션 성능을 향상시킬 수 있는 고성능 웹 서버이자 리버스 프록시다.

간단한 웹 애플리케이션이 있고 AWS 로드 밸런서에서 로드 밸런싱 요구 사항을 충족하는 경우 NGINX를 사용할 필요가 없을 수 있습니다. 그러나 URL 기반 라우팅, 세션 지속성 또는 SSL 오프로드와 같은 고급 로드 밸런싱 기능이 필요한 경우 AWS 로드 밸런서 앞에서 역방향 프록시로 NGINX를 사용하는 것을 고려할 수 있습니다.

 

ChatGPT의 내용을 보았을 땐 AWS 로드밸런서로만 해결이 된다면 굳이 쓸 필요가 없다 였다. 하지만 뭔가 사람이 아닌 기계의 대답이었기에 조금은 확신이 서지않았고 그러던 와중 오늘 16 : 00시에 NGINX에 대한 실시간 세션이 있어 참석하였다. 

 

결국엔 주된 내용은 NGINX를 쓰면 보안이 더 좋다 이런 건 아니었다. 결국엔 NGINX는 하나의 로드밸런서일뿐이지 보안적인 그런건 크게 없었다. 그래도 마지막 확인 차 QA의 시간에 ChatGPT와 같은 내용에 질문을 남기고 답변을 들었다.

 

Layer층이 많아지는게 보안적으로 좋을 수도 있고 나쁠 수도 있다. 만약 NGINX를 꼭 붙어야 되는 상황이다 하면 붙이는 게 맞겠지만, 아니다 라고 하면 붙이지 않는게 맞다.

 

ALB도 7계층의 로드밸런서이기때문에 ALB로 로드밸런싱이 충분하다면 NGINX를 꼭 넣어야 할 필요는 없다.

 

만약 ALB가 해주지 못 하는 기능들이 있다 라고 한다면 그 때 NGINX를 도입을 하면서 그때 뭔가 NGINX가 제공하는 보안적인 피처들을 활용할 수 있다.

 

하지만 ALB에 NGINX를 붙인다하더라도 보안적으로 더 좋아진다, 나빠진다 라고 말씀 드리기는 어렵다.

 

이렇게 답변을 주셨다. 결국엔 ChatGPT랑 같은 맥락에 답변이셨다. NGINX를 앞단에 붙인다고 보안적으로 더 좋아지는건 아니고 ALB로만 해결이 안 되고 NGINX의 기능으로 해결이 될 때 붙이는 것이 좋지만 이것이 보안적으로 더 좋다 나쁘다는 말하기 어렵다.

 

정말 두달동안이나, 프로젝트가 종료되고도 정말 많이 고민하고 괜히 ECS로 배포했나 생각이 들 정도로 스트레스도 받은 문제인데 드디어 정리를 하였다. 솔직히 그냥 EC2로 배포했다하면 그냥 간단히 NGINX 세팅이 되니 붙이고 끝났을거다. 우리는 ECS로 배포하고 컨테이너가 동적 포트 할당을 해줘 매번 포트번호가 바뀌어 붙이는 방법을 몰랐고 그걸 찾는 과정에서 점점 이걸 굳이 붙일 이유가 있을까 이렇게 생각이 들고 계속 생각하고 또 생각했다. 얼마나 많이 생각하고 고민했냐면 정말 농담이 아니라 NGINX 세팅하는 꿈을 꿀 정도였다. 

 

그래도 드디어 NGINX를 붙여야할까 말아야할까가 끝이 났고 이제 NGINX가 붙여져있으면 도입한 이유에 대해 늘 1순위로 물어볼거같다. 

 

밑에는 내가 들은 NGINX세션이다. 정말 유익한 정보가 많으니 한번쯤은 꼭 보는 걸 추천한다.

 

https://www.youtube.com/watch?v=h0LMEVDXCxE 

 

'TIL' 카테고리의 다른 글

Strapi  (0) 2023.03.20
숫자 반올림 방법: 어느 방식을 더 선호하시나요?  (0) 2023.02.20
MongoDB Atlas Trigger - event Bridge - lambda  (0) 2023.02.16
Auto Scaling, Capacity Provider, Discord WebHook  (1) 2023.02.13
Grafana  (0) 2023.02.11