WIL (Weekly I Learned) 4월 1째주

2022. 4. 3. 19:17WIL(Weekly I Learned)

반응형

<배운 것>

실전 프로젝트 실제 배포, 마케팅, 피드백 수렴 후 개선, 서비스 성능개선, 스프링을 스프링답게 사용하기 위해 코드 개선, 내 서비스가 언제 뻗을지 스트레스테스트


<생각>
저번주는 Github Actions + CodeDeploy + Nginx 를 이용하여 배포자동화, 무중단배포 하기를 구현했었다. 그렇게 이제 평화가 오나 했으나... 문제가 하나 둘씩 빵빵 터졌다. Nginx를 이용해 EC2 인스턴스 한개에서 두개의 포트를 돌려서 스위치를 하는 식으로 가동되어 있었다. 그런데 가동된지 20시간 정도가 되면 갑자기 EC2가 멈추는게 아닌가... 다시 중지 후 시작을 하여 다시 돌려놓았지만 다음날이 되자 또 이런 일이 발생하였다... 그래서 swab을 통해 메모리를 EC2 기본 1기가 메모리에서 2기가를 추가하여 3기가로 늘려놓으니 EC2가 멈추는 현상은 고쳐졌다. 실전 프로젝트 실제 배포 전날 해결을 할 수 있어서 간담이 서늘하였다. 배포 후 서비스가 마음데로 멈춰버린다면... 정말 끔찍한 일이 아닐 수 없다.
마케팅은 페이스북 마케팅이나 인스타그램 마케팅으로 하려고 하였으나 온라인 방탈춤 게임을 구현한 우리는 대상 고객이 일반 고객이 아닌 개발자 들을 대상으로 공략을 하였다. 게임을 구현하였지만 게임적인 측면으로서의 피드백 보다는 개발적인 측면에서의 개선에 대한 피드백을 받고 싶었기 때문이다. 그래서 개발자 관련 커뮤니티들을 공략하여 마케팅을 시작하였고, 정해진 기간동안 구글폼으로 오류제보와 피드백을 받아서 추첨을 통해 45만원 상당의 상품을 주는 마케팅을 진행하였다. 다행히 개발자님들의 많은 피드백과 오류제보들로 우리끼리 점검 했을 때와는 생각지도 못한 오류들과 문제들을 마주할 수 있었고 개선해 나갈 수 있었다. 
첫 오픈날 서버쪽에서도 바로 일이 터졌다. 그날 20명 이상이 동접을 하였는데 예상과는 다르게 EC2 CPU가 90% 이상 치솓으며 이상을 보였고, 이렇게 가다가는 서버가 뻗을 거라는 생각에 기능개선에 들어갔다. CPU도 1기가 였던 상황에서 2기가로 늘리고 용량도 8기가였던 기본에서 16기가로 늘렸다. 
또 스프링을 스프링답게 사용하기 위해 전체적인 코드들과 규칙들을 개선 하였고, 퀴즈쪽에 + 연산자를 사용하여 퀴즈문제들을 냈었는데 상수와 StringBuilder를 사용하여 코드를 개선하였다. 

마지막으로 서버의 성능 개선을 하고 난 후 현재의 우리 서비스가 언제 뻗을지에 대한 궁금함과 불안감이 엄습해 미리 예측을 하고 대비를 해야한다는 생각에 JMeter를 통하여 스트레스 테스트를 진행하였다. 실험결과 대기페이지에서 대기실에서 사람들이 몰렸을 때 350쓰레드(유저)까지는 동접가능하다는 결과가 나왔는데 실제로 탭을 통하여 대기페이지에 접속을 하였고, EC2 ubuntu에서 htop이라는 명령어를 통해 실시간으로 CPU 사용량을 보면서 여러번의 실험을 통해 실제에서는 70명 정도가 한계라는 결론이 났다. 또 풀링을 1초에 한번씩 하여 대기방을 1초에 한번씩 업데이트를 하였는데 풀링을 1초에서 2초로 늘려주어 대기실 동접 100명으로 한계가 늘긴 하였지만 풀링을 2초로 늘림으로 인해 방업데이트에 1초정도의 딜레이가 생겨 이미 시작한 방인데 대기방으로 보여 눌렀을 때 착오가 생기는 등의 문제가 발생하였다. 현재의 우리 프로젝트 서비스 고객이 70명 이상 접속할 가능성이 낮은 점으로 보아 프론트 분들과 상의를 한 끝에 서비스 향상이 더욱 중요하다는 생각에 풀링 1초로 하는 것으로 결정을 하였다. 

다음주는 실전프로젝트의 최종 골인 최종발표를 하게된다. 아마 여러 협력사분들도 오시고 항해의 다른 반에서도 많이 놀러오실 것 같아서 서버의 기능개선에 중점을 두고 최대한 개선을 하였다. 아무 문제없이 우리 프로젝트를 선보일 수 있으면 좋을 것 같고 갑자기 끝이라는 생각에 기분이... 음... 기쁘면서도 뭔가 서운하면서, 개운하면서 또 서글프면서...(뭐라는거야...) 뭔가 복잡한 마음이 든다. 이번주는 발표 준비에 온 힘을 다할 것 같다. 정리를 잘 해서 모든 것을 다 보여줄 수 있는 시간이 되었으면 한다. 이번주도 화이팅!!!  

반응형