본문 바로가기

카카오테크 부트캠프

[KTB_Final] 인프라 비용계산 및 아키텍처 설계(+리버스 프록시 Nginx?)

파이널 프로젝트에 진입했습니다... 

WBS 계획한 것에 따르면 오늘은 인프라 비용계산아고 아키텍처 설계하는 것을 해보려고 해요!

 

제가 처음에 머리 싸매고 구상한 것

이땐 서버가 어떤게 있어야하고 어떻게 연결되는지 잘 몰랐어요...

2차

러프하게 짠 구성도 인데 저희는 도시농업인을 위한 AI챗봇 어시스턴트앱이라서 백엔드 서버와 알림을 주는 서버, 그리고 리버시 프록시를 담당하는 Nginx! -> 이거에 대해서도 정리를 해야할 것 같네요. 그리고 AI 처리하는 FastAPI 서버와 CICD를 담당하는 젠킨스,, 그리고 새로운 이미지를 저장하는 ECR, 농촌진흥청 정보로 업데이트되는 PDF를 파악하는 이벤트 브릿지, 그리고 로그 모니터링과 성능 모니터링을 담당하는 ELK와 프로메테우스+그라파나가 있습니다.!! 

 

아키텍처를 구성하는 건 참 어려운 것 같습니다... 

 

저는 여기서 의문이었습니다.

 

Nginx는 뭔 역할일까?

항상 뭘 배우고 프로젝트를 할 때마다 엔진엑스가 나오는데 도대체 얘는 뭘 하는지를 모르겠어서 정리를 해보겠습니다.

 

Nginx : 경량 웹서버로 정적파일을 serving하는 웹 서버 또는 요청을 다른 서버로 전달하는 reverse proxy server로 활용되어 WAS의 부하를 줄이는 로드밸런서로 사용할 수 있음 -> apache와 같은 웹 서버. 

차이는 요청을 처리하는 방식에 잇는데 아파치는 요청마다 새로운 쓰레드를 생성해 요청을 처리하여 요청이 많을수록 자원이 소모된다. 반면 nginx는 event-driven구조로 동작해 고정된 개수나 하나의 프로세스만 생성되고 요청은 concurrency하게 처리됨. 그래서 적은 자원으로 효율적인 운용가능.

 

나는 지금 프로젝트에서 nginx를 리버스 프록시로 쓰려고 하는데 그것에 관한 내용을 추가해볼게요

reverse proxy는 클라이언트와 서버 사이에서 중개자 역할을 하여 요청들을 설정에 따라 알맞은 내부 서버로 접근할 수 있도록 도와주는 서버입니다. 이를 통해 내부 서버의 외부 노출을 방지하고 SSL 사용등을 통한 보안과 요청을 분산시키는 로드밸런싱의 역할을 수행할 수 있습니다. 

 

reverse proxy vs forward proxy

리버스 프록시는 인터넷과 서버 사이에 존재하는 프록시 서버로 실제 서버를 대신해 클라이언트의 요청을 받아 동작합니다. 포워드 프록시는 일반적으로 떠올리는 프록시로 클라이언트와 인터넷 사이에 위치해 클라이언트 정보가 서버에 노출되지 않도록 합니다. 이외에도 서버로부터 받은 html, css, js 같은 정적파일을 캐싱해 응답 성능을 높이고 서버의 부하를 줄이는 기능도 합니다. 그리고 ㅔ특정 주소에 대한 액세스를 차단할 수도 있습니다.

 

NAT게이트웨이는 프라이빗 IP에서 퍼블릭IP를 통해 나가기 위한 용도입니다.

예를 들어 저 둘 서브넷의 가용영역이 다를 때 이중화라고 치자 (밑에 프라이빗 서브넷을 포함한다고 하면) NAT가 두 개 만들어져 있는데 일단 가용영역을 나눠놨다는 이유는 재해복구나 트래픽 분산, 부하 방지를 하기 위해서입니다. 그러니까 한 가용영역이 불능한 상태가 됐을 때를 대비하여 만드는 거니 당연히 NAT게이트웨이도 두 개로 만들어놔야 합니다~

아키텍처 이중화와 오토스케일링!

오토스케일링은 말그래도 자동으로 용량ㅇ늘리거나 줄이거나 하는 것. 로드밸런싱도 하나에 집중되면 트래픽터지고 죽을 수 있기때문에 밸런스를 맞춰 어느 서버로 가게하고 그렇게 자동으로 나눠주는 것. 

서브넷은 VPC안에 쪼개있는 서버영역? 이라 생각하면 될 듯

 

 

 

인바운드만 하기! 

인바운드도 나눠서 하기  

근데 보안그룹 막고 이러는게 헷갈린다. 그러나 포트 번호를 어떤걸 쓸지 모르고 그러면 인바운드 규칙을 어떻게 설정할지 모르기 때문에 일단 보류. 

 

그리고 AWS의 비용을 산정해보았다~~~

t2.micro를 쓰려고 했으나 한 블로그에서 프리티어를 안쓴다면 t3a.micro가 더 저렴하다는 것을 보고 적용한 결과! 더 쌌다. 인스턴스 개수가 많아서 저게 더 효율 적이었다. 밑에 medium도 마찬가지~~

 

Event Bridge와 UpdateDate(람다)는 처음 써봐서 어떻게 될 지 모르겠지만 일단 인스턴스 비용 산정은 저렇게 되었다! 스토리지 20G로 맞추고 100프로 쓴다고 했을 때 산정ㅇ한거니 저것이 최대여야한다... 무조건...

17

# 참고

https://jammdev.tistory.com/217

 

[NGINX] NGINX 란?

1. nginx 란? nginx 는 경량 웹서버로 정적파일을 serving 하는 web server 또는 요청을 다른 서버로 전달하는 reverse proxy server 로 활용되어 was 의 부하를 줄이는 로드 밸런서로 사용할수도 있다. nginx 와 많

jammdev.tistory.com