NHN 베이스캠프 Sprint 5 회고
Updated:
순서
- 루키새콤TF 최혜연의 5주차 소감을 알아보자!
- 개발과정에서 힘들었던 점도 들어보자
- 발전한 점에 대해서도 읽어보자
한 일
대망의 개발기간!! 기획 후 -> ERD 설계 -> 개발 단계에 들어섰다. 개발기간은 2월 15일부터 2월 21일까지 일정이 잡혀있었고, 22일 앞에서 발표하며 홈페이지를 시연하게 된다. 하지만 4명인 조들과 달리 우리 조는 3명이었으므로, 더 많은 시간을 쏟아야 했다. 그렇게 시작된 설날에 개발하기! 설날에 모든 프론트를 끝내고 일주일동안 백엔드 개발에 임하기 위해 최선을 다했다.
내가 맡은 일은 총 3개의 기능이었다. (말만…)
- 관리자 페이지
- 등록하기
- 마이페이지
- 예매리스트 조회 페이지
- 예매 상세 페이지 조회
- 예매 취소 (공연시간 24시간 이하로 남았을 경우 취소 불가)
- 취소 후 예매한공연 상태 “취소로 변경”
- 로그인 페이지
- 회원가입 페이지
모든 페이지를 구현하고 난후, 배포하는 과정을 거쳤다!!! 로컬에서 무리없이 잘동작하던 것이 서버에 올리니깐 동작하지 않아서 2월 20일 토요일은 아침11시부터 새벽3시까지 오류잡는 시간을 가졌다. .. 하하ㅠㅠ
(오늘) 02.22 시연 발표 파이팅입니다 루키새콤TF
개발 과정에서 힘들었던 점 && 이슈
학부과정에서는 약 1달동안의 개발 과정을 거쳤다. 물론 그당시에도 시간에 쫓기긴 했지만 마음의 여유는 있었다. 처음으로 가져본 “일주일”의 개발이라서 그런지 시작부터 내가 저 많은 기능을 단 일주일동안 다 구현할 수 있을까 하는 생각이 들었고, 마음이 조급한 상태로 구현 상태에 임했던 것 같다. (아쉽아쉽)
로그인
로그인 구현이 처음이라서 걱정이 많았다. 로그인이 되지 않으면 웹사이트 기능을 시연할 수 없기 때문이다. 현존하는 많은 코드를 찾아보았다. 대부분이 Spring Secutiry를 활용해서 구현을 했었고, 우리조는 단순히 http Session을 이용하는 것이었다. 오픈소스를 이해하면서 따라쳐도 계속된 오류에 부딪혀서 팀원들에게 계속 물어보면서 했다. 3명이라서 다들 얼른 구현해야 할텐데 관심가져주고 도와줘서 너무너무 고마웠다. (꾸벅) 구현하고 나니깐 로그인 별거 아니였다.. 역시 사람은 부딪혀 봐야한다.
회원가입
회원가입 기능은 쉬웠는데 시간이 많이 소요됐다. 아이디 중복확인, 아이디 포맷, 비밀번호 포맷, 비밀번호 확인, 중복확인 && 비번 확인됐을 때 가입 버튼 누를 수 있도록 체크 등등… 디테일한 사항들이 많아서 힘들었던 것 같다..!
관리자 페이지
관리자 페이지는 뮤지컬 정보를 등록할 수 있다. 처음에는 입력한 정보만 DB에 저장하면 되므로 쉬운 작업이라고 생각했다. 하지만 생각을 깊게해보니, 뮤지컬 기간이 02.25~04.30 까지 공연하면 다른 테이블에 날짜별로 각각 날짜에 따른 취소가능일과 함께 데이터를 자동을 생성해 줘야했다. 즉 저 예제에서는 약 85개의 데이터가 db에 들어가야한다는 것이다. 취소가능일과 함께…하하… 사용자가 input 값으로 time만 입력한다고 해도, 데이터 베이스에는 date로 들어가야하기 때문에 모든 작업을 직접 포맷을 바꿔주었다. DateTime은 코딩테스트에서도 항상 다루는데, 할 때마다 오류투성이 인것같다. 다음에 한번 이에 대해 포스트를 작성해 보겠다. 구현하다가 입력한 시간과 달리 DB에 -9시간이 된채로 데이터가 들어가는 것을 확인했다. 무엇이 잘못되었을까. intellij문제일까. mysql 서버 문제일까 고민을 1시간동안 했다…결국 멘토님께 여쭤봤는데 intellij에서 datasource에 우리조가 시간을 UTC로 설정했었다… 이를 Asia/Seoul로 바꾸면서 해결이 되었다. 해결되어서 기쁜데 허무했다. 다음에는 꼭 바로바로 여쭤보자!!!
마이페이지
마이페이지는 예매조회, 상세 조회, 취소도 가능해야한다. 다른 페이지들과 달리 마이페이지는 모든 DB정보의 총집합이었다. 우선 우리는 계정DB와 예매DB가 분리되어있는데, 각각 ID에 따른 예매정보를 불러와야해서 자바스크립트로 계속해서 ajax로 호출했다. 단순한 예매 내역 페이지였지만 데이터베이스에서 불러오는 작업과 넘겨주는 작업이 많았기 때문에 스프링부트에 익숙하지 않은 나에게 매우 어려웠다. 이것또한 많은 오류에 부딪혀서 팀원들에게 오류를 공유하고 해결했다. (감사!꾸벅..)
배포하기
서버에 배포만 하면 이제 우리는 끝나는지 알았다. 드디어 프로젝트의 끝이 보이는가 했다. 하지만 이게 시작이었다. 로컬에서 되던것이 서버에 올리니까 작동하지 않았다. 그리고 작동하지 않는게 내가 구현한 페이지들(로그인, 회원가입)이었다.. 너무너무 슬펐고 팀원들에게 미안했다. 흑흑. 아침부터 시작해서 새벽까지 오류를 해결했다. 뭐하나 해결하면 또 다른 페이지에서 안되는 현상이 발생했다. ajax에서 api로 넘겨줄 때 문제가 발생했는데 결과적으로 contentType을 명시하느냐 . 하지 않느냐의 문제였다. 한줄 차이로 이런 오류가 발생한다는게 신기하다.
발전한 점
Spring boot에 대한 이해
- Sprint1에서 스프링부트 책을 읽고 이를 따라하며 전반적인 기초에 대해 익힐 수 있었다. 하지만 직접 구현하는 것이 아니라서 그런지 이해는 했지만 스스로 구현해보라하면 어려워하는 상태였다. 이번 프로젝트는 7일동안 예매 시스템 구현을 끝내는 것이라서 시간적으로 촉박해서 설날, 주말 등의 시간을 쓰면서 힘들었지만, 결과적으로 내가 성장할 수 있는 시간이었다. 뜻깊은 교육을 만들어준 NHN에 감사! (하지만 이걸 시작으로 또 다른 것이 기다리고 있겠징?ㅎ)
ERD에 대한 이해
- 딱한번 ERD를 설계해본 경험이 있다. 그 당시 설계에 참여를 했는데 프로젝트가 워낙 대형이라서 설계는 했지만 이해가 잘 되지 않았다. 이번에 내가 만들 시스템의 ERD를 설계하면서 정말 재밌었고, 똑같은 시스템이어도 다르게 설계할 수 있다는 점이 신기했다. 더 효율적으로 어떻게 설계할 수 있는지에 대해서 배워보고 싶다.
마지막 소감
- 올 것 같지 않던 개발 기간의 끝!!! 기쁘면서도 더 잘할 수 있었는데 하는 아쉬움이 든다. 이것을 시작으로 더 발전해 나가고 싶다. 앞으로의 개발자 생활 파이팅!
Leave a comment