반갑다 나는 0년차 취준생 코린이다.
요즘 취업 준비에 매진해있는데 다른 사람들의 상황을 보니
뭐하면 커뮤니티 뭐하면 쇼핑몰..
IT 취업 시장이 동결 직전인 판국에 누구나 다 뚝딱 만들어내는 프로젝트 말고 기술적인 프로젝트를 진행해보고 싶어서 시작했다.
그래서 무슨 프로젝트냐면..
클라우드 플레어같은 인프라 서비스를 직접 만드는 거다.
???: 홀리쉣 0년차 코린이가 할수있어?
내 이력서에 강조된 단어가 몇 가지 있는데 그중에 하나가 도전이다.
처음에는 도통 클라우드 플레어의 원리가 떠오르지 않아 예전에 읽어두었던 네트워크 책을 읽으며 복습하였고 내가 내린 결론은 "리버스 프록시"다
(사실 글처럼 쉽게 결론을 내리지 못하고 많은 시행착오가 있었다 ㅠㅠ..)
이후 내가 생각한 네트워크 그래프다
모든 요청 트래픽과 응답 트래픽은 나를 거치게 된다 이렇게 되면 원본 서버의 IP 주소를 숨길 수 있다.
프록시 서버를 구현함에 있어서 여러 종류의 기술이 있었다 HAProxy, Nginx . . .
(멍청한 나는 저런것들이 있는지 모르고 직접 만드려고 시도했었다)
나는 NGINX를 사용하여 프록시 서버를 구성하였다.
NGINX를 프록시 서버로 사용해본적이 없어서 ChatGPT의 도움을 받았다.
내 질문에 대해 저런식으로 답을 주었고 컨피그 파일의 내용이 무엇을 의미하는지 하나하나 검색하며 공부했다.
(처음에 잘 써먹었는데 가면 갈수록 이상한 답변을 받아서 따로 구글링하며 공부했다)
그렇게 공부하니 NGINX 컨피그 작성에 자신감이 붙었고 다음엔 프록시 서버를 사용자가 제어를 할 수 있는 웹과 API 서버를 만들기 시작했다.
이게 결과물이다.
1. 인스턴스 관리: 내 프록시 서버에 사용자의 서버를 등록 및 관리할 수 있다.
2. 내 도메인 관리, 등록: 트래픽이 프록시 서버를 경유하여 사용자 서버로 포워딩 되기 위해선 진입점이 필요했는데 난 그 진입점을 내 서브 도메인으로 제공했다.
3. 로드밸런서 구성: 말 그대로 로드밸런서 역할을 해준다.
4. IP 차단 룰 관리: 사용자가 지정한 IP의 트래픽이 프록시 서버 진입 시점에 막아주어 사용자 네트워크에 불필요한 트래픽 유입을 차단해준다.
5. CORS: 이건 그냥 많은 커뮤니티에서 CORS때문에 골머리 썩히는 분들을 많이봐서 그 분들을 위해 클릭 한번으로 CORS문제를 해결해주는 서비스다.
서비스 최종 구성도다
사용자는 관리서버 (위에 올린 대쉬보드 사진)을 통하여 모든 관리를 진행하고 인터넷에 배포된 이후부터는 관리 서버에서 제공한
서브 도메인을 통해 모든 트래픽이 시작된다.
동적으로 NGINX 컨피그 파일을 생성 및 수정해주는 건 Powershell로 (자바보다 더 간결하게 구현 가능해서 선택함)처리하였고
NGINX 설정 외의 모든 기능은 Spring에서 처리된다.
(NGINX의 컨피그를 제어하는 Powershell 코드의 일부)
(사용자의 요청을 받고 알맞은 powershell script 를 실행시켜주는 부분)
너무 늦어서 자고 일어나서 2편을 작성하도록 하겠다
인프라 서비스에서 리버스 프록시를 제공하는건 맞는데 그렇다고 인프라 서비스 = 리버스 프록시는 아님. 구현하는거 전혀 어렵지 않으니까 멍청한짓 아니니 그냥 해봐도 됨. 굳이 nginx 내장할바에얀 그냥 구현하는게 나을듯
커뮤니티나 쇼핑몰 구현 안해봤으면 그것도 해봐 중요함
언급은 안했지만 방금 프로메테우스 기반 그라파나 대쉬보드도 제공해줘
이런거 아주 좋아 개추
리버스 프록시를 직접 짜는 것도 아니고 리버스 프록시를 컨트롤하는 패널 정도를 만든다는 의미아님? 정확히 구분해서 써라 이력서에서 리버스 프록시를 만들었습니다! 했는데 그게 패널이면 백퍼센트 광탈이니 ㅋㅋ
조심해야함 ㄹㅇ;
근데 지원하는게 개발자 아님? 이건 +@로 차별화할수 있는 플젝은 맞는데, 니가 코드를 어떻게 짜는지는 하나도 못보여줘 일단은 코드를 잘 짜는게 가장 중요하다. 특히 주니어는. 니가 해본건 안익숙해서 어려워보이는거지, 이거 하나 보고 뽑을만큼 기술적 난이도가 높은게 아니야. ㅇㅇ하면 취업되요?에서 시작해서 뭔가 도장깨기처럼 인프라쪽 이것저것 이력서에 추가하는게 유행인것같다
특히 니가 뭐하면 커뮤니티 뭐하면 쇼핑몰이라고 말하는것들이 웹개발에서 필요한 거의 대부분의 기능이 담겨있는 예제들이다 니가 뭘 만들었는지를 보는게 아니라, 그걸 어떻게 만들었는지를 보는거야. 똑같아 보이는게 싫으면, 쇼핑몰 말고 특이한 아이템이지만 그러한 기능들을 다 담고있는걸 골라봐
ㄹㅇ 그냥 포폴이 쇼핑몰 원툴이면 병신인건맞는데 글쓴놈처럼 0년차면 그냥 거쳐가는 플젝중하나로 만들가치는 충분함
어그로 끌긴 좋을듯 - dc App
클플처럼 회원 간 등급을 나눠서 제공하는 기능을 차별화하고 Let's encrypt 인증서 자동 발급이나 WAF 같은 것도 해봐용
클플도 API 이것저것 많이 제공하는데 위에서 언급나온 커뮤니티나 홈쇼핑도 개발해서 무언가 연계하는 식으로 개발하면 좋을듯
엔진엑스를 만든게 아니라 걍 엔진엑스를 썼다 아님?
리버스프록시부터 쭉내림
우왕 짝짝짝 수고했어요. 인프라서비스랑은 성격이 약간 다른것 같아 보이긴 하는데.. 여러가지로 신경 많이쓴게 보이네용..
쇼핑몰을 만드는게 중요한 이유는 거기는 DB설계부터, 정산에서 고급 쿼리 활용등을 두루 볼 수 있기 때문에 선호하는 것임. 이번 포트폴리오도 충분히 생각을 많이한 것 같아서 좋은 포트폴리오인건 맞고, 여기에 쇼핑몰이나 다른것도 꼭 추가해.
si 탈출하는 법좀 알려주세요.