SW사관학교 정글/정글일지

[WEEK00] 정글 입성

아크리미츠 2024. 8. 15. 18:07

사관학교 입소와 동시에 0주차에 미니 프로젝트로 설계 및 제작하는 과제가 주어졌다. 나는 6조 였는데, 조에서 나온 아이디어는 정글의 스케쥴을 담은 달력을 만들자는 것과 정글러들의 소재를 기록하는 홈페이지를 만들자는 것이었다. 조원들과 상의한 결과 달력은 너무 흔한 것 같고 정글러들의 소재를 기록하는 홈페이지를 만들기로 하였다. 우리에게 주어진 목표에는 로그인 기능을 구현하고 jinja2를 사용하여 서버렌더링을 하는 것이었고, CSS를 Bootstrap외에 다른 라이브러리를 사용하는 것과 JWT를 사용하여 홈페이지를 암호화는 것이 부가적인 목표였다. 거기에 추가적으로 대표님이 부하테스트를 해보는 것이 어떻겠냐고 하셔서 이것까지 완료 목표로 삼았다. 나는 프로젝트에서 로그인과 회원가입 페이지의 프론트와 백, 그리고 세션을 맡기로 했고 비밀번호의 해싱까지 하기로 했다. 조원들은 메인 홈페이지의 정글러 위치의 실시간 업데이트 및 db 관리 등을 맡기로 했다. 프로젝트를 진행하면서 Github를 처음으로 사용하게 되었는데, 이 부분을 조원들이 도움을 줘서 빠르게 사용하게 되었고, 아주 편리한 기능이 많이 있는 것을 알게됐다.

 

프로젝트를 진행하면서 내가 혼자 맡은 부분은 나혼자서 결정하고 진행하면 되었는데, 문제는 세션과 메인페이지를 연결하면서 생겼다. 나는 유저의 아이디를 user_id로 id만 넘길 생각이었는데, 조원은 이미 유저의 이름을 받을 계획으로 프론트를 구현해서 user_name을 넘겨달라고 했다. 그래서 그렇게 수정했는데 그 뒤에 다시 유저의 모든 정보가 필요하다고 해서 user_info로 모든 정보를 넘겼다가 결국 다시 user_id만 넘기는 것으로 수정되었다. 이런식으로 단 두명이서 일해도 백과 프론트가 소통하며 제작하는데에 어려움이 조금 있었는데, 여러명이서 프론트와 백을 구성하고 협업할 때 얼마나 힘들지 조금이나마 체감이 되었다. 정글에서 강조한 팀워크가 이러한 것들 때문에 개발자에게 중요하겠다 싶었다.

 

우리 조의 메인 기능은 생각보다 빠르게 완성하여 3일 중에 2일차에 모두 완성이 되었다. 그래서 부가적인 목표를 달성하자는 의견이 나왔다. 조원이 JWT를 사용하여 홈페이지를 암호화하는 기능을 구현해보고 싶다고 했다. 그래서 한나절의 시간을 들이부어 JWT token을 제작했다. 제작하는 데에는 성공했으나 진짜 문제는 그 다음이었다. 서버에서 payload를 받아 token을 클라이언트에 전송하는 기능까지는 구현을 했고, 클라이언트에서 그 token을 쿠키에 저장하여 serven에 전송하는 것 까지는 성공했는데 서버에서 token의 유효성을 확인하는 기능을 어떻게 만들어야할 지 가늠이 되지 않았다. 시간은 흐르고 있었고 이 때 내가 제안을 한 것은 JWT 구현을 포기하자는 것이었다. 그냥 못하겠다고 포기하자는 것은 아니었다. 아직 우리가 이행하지 못한 과제가 있었는데 바로 부하테스트였다. 서버 부하테스트는 대표님이 직접 제시한 목표였고, 우리가 지금 부가적인 목표를 하다가 메인 목표를 달성하지 못할 것 같았다. 부가적인 목표 때문에 주 목표를 못하는 것 보다는 주 목표를 먼저 완성하여 프로젝트를 완벽하게 만들고 시간이 남으면 부가적인 목표를 시도해 보자고 제안하였다. 이에 팀원들도 모두 고개를 끄덕였고 우리는 남은 시간동안 서버부하 테스트를 수행하여 1000명정도가 동시에 서버를 이용하면 서버가 다운된다는 결론까지 얻으니 3일이 모두 지나 마감일이 되었다.

 

마감일에 다시 팀원들과 고민을 하게 된 부분은 JWT를 남은 시간 동안 구현해 볼 것인가 혹은 페이지를 좀 더 다듬을 것인가 였다. 이 때도 페이지를 좀 더 다듬어서 프로젝트의 완성도를 높여서 발표할 때 어떠한 사소한 문제도 발생하지 않았으면 좋겠다는 생각이 들어 레이아웃과 기능을 더 다듬다가 12시에 프로젝트를 제출하게 됐다.

 

발표할 때 피드백을 받았는데 회원가입 부분에서 실시간으로 아이디 중복검사를 하는 기능은 어차피 회원가입 버튼을 누를 때 한번 더 검사하기 때문에 빼는게 좋겠다고 하셨다. 이기능은 내가 예전에 어떤 사이트에 회원가입 할 때 실시간으로 중복검사를 하는 것이 너무 이뻐서 넣은 기능이었어서 아쉬웠다. 그 외에는 홈페이지가 최소화 되어있으면 polling이 멈춰야 하는 기능이 없는 것이라던가 user의 정보를 get할 때 user db를 통째로 가져오다보니 json파일에 암호화 된 유저의 비밀번호가 포함된 문제가 있었다. 다음에 프로젝트를 제작할 때 같은 실수는 반복하지 않아야 할 것이다.

 

발표까지 잘 끝나고 쉬고 있었는데 어떤 정글러가 와서 6조 홈페이지 진짜 잘 만들었다는 얘기를 했다. 페이지 레이아웃도 깔끔하고 모바일과 PC에서 모두 잘 구현돼있었고 이것저것 다 눌러봤는데 버그도 없었고 버그가 일어날 만한 건 다 막혀있었다고 공들인게 보인다고 했다. 얘기를 들으면서 홈페이지의 완성도를 높이기 위해 노력했던 것이 맞았다는 생각이 들었고 조금 뿌듯했다.

 

다음에 이 프로젝트를 갖고 더 무엇인가 개발할 기회가 생긴다면 그 때에는 메신저처럼 만들어보고 싶다. 메세지 기능과 상태 등을 만들 것이다. 정글에 입소하고 0주차에 처음으로 해본 미니 프로젝트여서 팀워크를 잘 할 수 있을 지 걱정이 되었는데, 기우였었던 것 같다. 다음에는 어떤 일이 기다리고 있을 지 기대가 된다.