반갑다 나는 0년차 취준생 코린이다.

요즘 취업 준비에 매진해있는데 다른 사람들의 상황을 보니


뭐하면 커뮤니티 뭐하면 쇼핑몰..

IT 취업 시장이 동결 직전인 판국에 누구나 다 뚝딱 만들어내는 프로젝트 말고 기술적인 프로젝트를 진행해보고 싶어서 시작했다.


그래서 무슨 프로젝트냐면..



7cf3c028e2f206a26d81f6ec4f8177



클라우드 플레어같은 인프라 서비스를 직접 만드는 거다.



???: 홀리쉣 0년차 코린이가 할수있어? 



내 이력서에 강조된 단어가 몇 가지 있는데  그중에 하나가 도전이다.



처음에는 도통 클라우드 플레어의 원리가 떠오르지 않아 예전에 읽어두었던 네트워크 책을 읽으며 복습하였고 내가 내린 결론은 "리버스 프록시"

(사실 글처럼 쉽게 결론을 내리지 못하고 많은 시행착오가 있었다 ㅠㅠ..)




2cf3da36e2f206a26d81f6e44186746c


이후 내가 생각한 네트워크 그래프다

모든 요청 트래픽과 응답 트래픽은 나를 거치게 된다 이렇게 되면 원본 서버의 IP 주소를 숨길 수 있다.



프록시 서버를 구현함에 있어서 여러 종류의 기술이 있었다 HAProxy, Nginx . . . 

(멍청한 나는 저런것들이 있는지 모르고 직접 만드려고 시도했었다)




나는 NGINX를 사용하여 프록시 서버를 구성하였다. 

NGINX를 프록시 서버로 사용해본적이 없어서 ChatGPT의 도움을 받았다.




2ef3c028e2f206a26d81f6e34383726c




내 질문에 대해 저런식으로 답을 주었고 컨피그 파일의 내용이 무엇을 의미하는지 하나하나 검색하며 공부했다.

(처음에 잘 써먹었는데 가면 갈수록 이상한 답변을 받아서 따로 구글링하며 공부했다)


그렇게 공부하니 NGINX 컨피그 작성에 자신감이 붙었고 다음엔 프록시 서버를 사용자가 제어를 할 수 있는 웹과 API 서버를 만들기 시작했다.




2caed468f5dc3f8650bbd58b3684766be1cb



이게 결과물이다.



1. 인스턴스 관리: 내 프록시 서버에 사용자의 서버를 등록 및 관리할 수 있다.

2. 내 도메인 관리, 등록: 트래픽이 프록시 서버를 경유하여 사용자 서버로 포워딩 되기 위해선 진입점이 필요했는데 난 그 진입점을 내 서브 도메인으로 제공했다.

3. 로드밸런서 구성: 말 그대로 로드밸런서 역할을 해준다.

4. IP 차단 룰 관리: 사용자가 지정한 IP의 트래픽이 프록시 서버 진입 시점에 막아주어 사용자 네트워크에 불필요한 트래픽 유입을 차단해준다.

5. CORS: 이건 그냥 많은 커뮤니티에서 CORS때문에 골머리 썩히는 분들을 많이봐서 그 분들을 위해 클릭 한번으로 CORS문제를 해결해주는 서비스다.




서비스 최종 구성도다


2cfd9877ac9c32b6699fe8b115ef046f86e94b42




사용자는 관리서버 (위에 올린 대쉬보드 사진)을 통하여 모든 관리를 진행하고 인터넷에 배포된 이후부터는 관리 서버에서 제공한

서브 도메인을 통해 모든 트래픽이 시작된다.



동적으로 NGINX 컨피그 파일을 생성 및 수정해주는 건 Powershell로 (자바보다 더 간결하게 구현 가능해서 선택함)처리하였고

NGINX 설정 외의 모든 기능은 Spring에서 처리된다.




7cef8477b78676b660b8f68b12d21a1d78a896bb12b9


(NGINX의 컨피그를 제어하는 Powershell 코드의 일부)




7cef8377b78169f43dee84e6478377733abd300b8b9a7bac11b6ce2e9267


(사용자의 요청을 받고 알맞은 powershell script 를 실행시켜주는 부분)



너무 늦어서 자고 일어나서 2편을 작성하도록 하겠다