본문 바로가기

웹 프로그래밍/스프링

Techit Java Backend School 8기 수료(우수상) 후기

멋쟁이 사자처럼 자바 백엔드 스쿨 8기 후기를 작성해보려고 한다.

먼저 우리팀의 공연 알람 서비스(스테이지 알람)은 1차 프로젝트에서 우수상을 받았고 2차 프로젝트를 고도화 하기로 선택하면서 모든팀중에서 유일하게 팀원 변경없이 그대로 2차 프로젝트를 하는 고도화 팀이였다.

1차 프로젝트를 우승도 했겠다 워낙에 팀케미가 잘맞았기 때문에 아무 걱정없이 2차 프로젝트를 시작할 준비를 하고 있었는데 갑자기 1차 팀장님이 취업을 했다는 소식이 전해졌고 잠시동안 팀 전체로 멘붕에 빠져버렸다. 그냥 팀원도 아니고 전 팀장이 나간다 하시니 힘이 빠지고 아쉬움에 집중이 잘되지가 않았다. 이런 감정과 분위기로는 몰입하기가 어려워서 나는

마음가짐을 다잡기위해 용기를 내서 팀원들에게 2차 프로젝트 팀장을 하겠다고 전했고 팀원들도 격려를 해주었다.

 

처음으로 프로젝트의 팀장을 맡게 되었는데 긴장감과 부담감이 팀원때와는 전혀 달랐다.

일단 공식적인 시간외에도 어떻게하면 프로젝트 고도화를 성공적이게 할수 있을까에 대해서 항상 생각하게 되었고 한달간의 프로젝트 기간동안 주말도 없는듯이 시간을 허투로 쓰지 않는 모습의 나를 처음으로 알게되었다.

 

그만큼 1차때 우수상을 받은 팀의 고도화를 맡는다는거는 잘하면 본전 못하면 쪽박인 큰 부담감이였고 나는 이 부담감을 역이용해서 경험치를 쌓고 성장하자는 마인드로 정처기 실기 시험도 취소하고 프로젝트에 올인하기 시작했다.

팀장이 돼서 힘든점도 많았지만 좋은점은 나의 의견을 팀원들에게 설명하고 프로젝트에 반영하기가 더 수월해졌다.

팀원들 모두 하나라도 더 배우자는 마인드에 새로운 기술을 도입하는데 적극적이였기 때문에 좀 모험적일수 있는 내 의견을 잘 수용해주고 도와주었다.

 

 

웹 크롤링 통한 자동화

제일 먼저 나는 크롤링을 도입했다. 공연정보를 직접 입력하는 방식에 비해  웹을 크롤링하여 정보가 들어오고 그에 따른 구독정보에 따라 사용자에게 이메일까지 전송하는 프로세스 전체가 자동화 되는것이 고도화에 딱 맞는다고 아이디어가 떠올랐기 때문이다. 웹 크롤링을 하기 위해서 3일정도를 열심히 디버깅하면서 마침내 성공적으로 마치고 나니 다른 문제가 생겼다. 바로 AWS EC2의 프리티어가 웹 크롤링을 버티지 못하고 서버가 다운돼버리는 것이다.

 

서버의 분리(Micro Service Architecture, MSA)

한참을 고민하고 나서 멋쟁이 사자처럼에서 받은 네이버 크레딧을 사용해서 네이버 NCP에서 좋은 서버를 하나 받는것으로 결론이 났고 크롤링 서버가 메인서버에서 분리되게 된다. 그리고 나서 그럼 다음으로 부하가 많이가는 알람에 대해서도 분리하자고 아이디어도 떠올라서 알람서버도 분리되게 되어서 총 3개의 서버로 분리가 되었다.

분리된 서버 끼리는 RabbitMQ라는 미들웨어를 써서 통신하도록 설계하였고 인생 처음으로 MSA을 설계 해보는 순간이였다. 그리고 이렇게 서버 분리를 성공함으로써 더큰 확장을 이룰수가 있었다.

 

쿠버네티스로 서버 증설, 축소

서버가 분할됐기 때문에 만약 어떤 서버만 트래픽이 과부하가 된다면 모든 서버를 증설하는것이 아니라 해당 서버만을 증설하면되고 트래픽이 감소한다면 해당 서버만 축소하는것이 가능해졌다. 따라서 더 고도화하기 위해 쿠버네티스를 도입하였다. NCP를 통해 노드를 여러대 구비하고 쿠버네티스 오토스케일링 설정을 통해 한정된 자원을 활용하여 대용량 트래픽 발생시 해당 서버만 증설하는 알고리즘이 동작하게 만들었고 쿠버네티스를 운영해보면서 대용량 데이터 처리에 대해서까지 대비를 해보는 소중한 경험을 쌓게 되었다.  

 

무중단 배포(CI/CD) 까지

우리팀원중에 AWS CI/CD 능력자도 있었고 CI/CD는 AWS나 쿠버네티스나 Github Actions를 사용하는 부분은 비슷하기 때문에 나는 그 팀원에게 속성 과외를 받아서 마침내 쿠버네티스를 활용해서 무중단 배포까지 성공하게 되면서 프로젝트의 마지막 퍼즐을 맞추고 성공적으로 마무리 하게 되었다.

 

느낀점

이렇게보면 시도하면 성공했다는 내용만 있는거 같지만 그 과정에서 짧으면 몇시간 길면 며칠동안 오류랑 씨름하면서 거의 마지막날이 될때까지 되는지 안되는지 확실하게 모른채 계속 시도할만큼 시간이 타이트했고 그만큼 시간활용을 알차게 했다는 기분이 들어서 뿌듯했다. 항상 프로젝트를 끝나게 될때면 더 잘할수 있었을텐데하고 아쉬움이나 후회가 들기 마련이었는데 이번 프로젝트는 나의 모든것을 쏟아 부었고 더 잘할수 없겠다는 기분이 딱 들었다.

팀원들과 올인해서 후회가 없었고 결과도 좋았기 때문에 이렇게 잘맞는 팀원들과 만난것은 행운이였고 이 기회를 잘 잡은것은 또 우리가 노력했기 때문이리고 생각이 들었다.

어떤날은 너무 피곤해서 입에 염증이 생길 정도로 프로젝트에 몰입했지만 몸은 힘들지라도 나는 그 과정을 오롯이 즐기고 있었고 한 기능이 성공하면 다른기능을 성공하기 위해 달려 나갔다.

팀장을 하고 운좋게 좋은 팀원을 만나서 개발 실력이 한 두단계정도 성장했다고 체감이 되는 인생 프로젝트였다.

이런기회를 제공해준 멋쟁이 사자처럼에게 감사하고 팀원에게 감사한다.

 

 

'웹 프로그래밍 > 스프링' 카테고리의 다른 글

쿠버네티스 로드밸런싱 실험(nGrinder)  (0) 2024.05.08
최종 프로젝트 회고 (스프링 @Asysc, 비동기 방식)  (0) 2024.05.08
쿠버네티스(k8s) 기본 원리  (1) 2024.04.26
RabbitMQ  (1) 2024.04.26
Docker  (0) 2024.04.12