header





[ALL-CON] 콘서트 예매정보부터 친구까지 찾아주는

콘서트 종합 정보 플랫폼 🎟️



🤔 Final Project 회고

  • 코드스테이츠 34기 마지막 과정인 파이널 프로젝트를 백엔드 포지션으로 마무리하며, 기획은 어떻게? 어떤 작업을 하였고 또 그 과정에서 어떤 부분에서 고민을 경험했는지 글로 남겨보려 한다.

    우선 완성된 프로젝트 링크(도메인은 현재 내려갔습니다.) 와 Gihub 저장소 링크 그리고 프로젝트 안내 문서의 링크는 아래와 같다.



 👉 ALL-CON 바로가기 

 👉 Github 바로가기 

 👉 Blog 바로가기 



기획


  • 기획단계는 1주일 정도 걸렸다.

    사실 기획은 팀원 모두 전문 분야가 아니기 때문에 다들 많이 미숙했지만, 새벽 늦은시간까지 머리를 함께 맞대어 최선의 결과가 나온거라 생각한다.

  • 다만 First Project에서 한번 겪었던 만큼, 서비스 주제 선정은 너무 지체되지 않게끔 진행하였고 주제에 알맞는 기술들을 추려서 주제를 선정하였다.



선정되지 못한 주제들과 이유


지금 다시 보니 재밌는 주제들이 많이 나왔던거 같다.

  • 21.12.27 주제선정을 위해 아이디어 회의를 기록한 내용중 선정되지 못했던 주제들을 찾아보았다.

스크린샷, 2022-02-23 16-08-15



  • 여러 의견이 나왔지만 회의 결과 “너무 위치기반에 중점을 둔 서비스는 피하자!” (어떻게 해도 당근마켓 스러워진다..) 였다.

    CRUD에 중점을 둔 서비스는 2주차에 해봤기에 SNS나 게시판 서비스 보다는 색 다른 웹페이지를 만들어 보자는 생각으로 위 4개의 주제들은 모두 탈락하였다.



  • 그리하여 현재 ALL-CON(유사한) 주제가 선정되었다.

    초기 기획은 KOPIS 공연예술 통합전산망을 이용한 콘서트 정보 안내 사이트였지만.. 주제가 다소 바뀌었다. 이유는 뒤에서 설명하겠다.



프로젝트 레이아웃 선정


  • 주제 선정을 마치고 나서 웹사이트 디자인에 대해서 논의를 시작하였고, 여러 레이아웃들이 제시되었었다.

    메인페이지만 추려서 보여주자면 아래와 같다.

    (프로젝트 이름이 정해지지 않은 상태라 이름들도 가지각색이다 😅)









  • 초기에는 캘린더 라이브러리를 사용해서 콘서트 일정을 달력에서 보여줄 생각도 하였으나 시간 문제로 사용을 하지 못하였다. 😭

  • 이중 첫번째 레이아웃이 회의 결과 채택이 되었으며, 프론트엔드 두 분이 주도적으로 UI/UX와 메인 컬러로 쓰일 색상을 선정하여 이를 토대로 FIGMA에서 프로토타입을 제작하였다.



서비스 핵심 기술 선정


  • 이부분이 사실 프로젝스 설계 “Miss” 였다.

  • 사실 프론트엔드에서는 First Project에서 TypeError를 많이 겪었기에 이번에는

    TypeScript

    를 사용해보고 싶다라는 의견으로 모아졌기 때문에 개발언어만 바꾸어서 서비스 개발에 임하면 되었기에 핵심기술 선정이 어렵진 않았다.

  • 문제는 백엔드 서버 설계에서 발생하였다.

    콘서트 정보는 KOPIS 공연예술 통합전산망에서 가져오면 되겠지? 싶었는데 여기서 1차 문제가 발생한다.



"콘서트 정보만 없다..."


  • 아뿔사, “공연 / 연극 / 뮤지컬” … 심지어 “아동”도 있지만 콘서트 정보는 그 어디에서도 찾을 수 없었다..

    주제 선정을 다시해야하나 생각을 했지만, 기술적으로 Node.js 라이브러리를 이용하여 웹 크롤링을 할 수 있다는 걸 알게되었고 “인터파크 티켓”, “YES24” 두 대형 티켓팅 사이트에서 콘서트 정보를 가져오기로 결정하였다.

  • 다만, 두 사이트에서 제공하는 자료가 정형화 되지않은 자료이기 때문에 NoSQL인 MongoDB를 사용해야하나 고민하였지만, 전처리만 잘해서 DB에 저장한다면 RDBMS로도 충분히 구현이 가능할 듯하여 MySQL으로 진행하였다.

  • 또한, 해당 사이트에서 가져올 정보들은 매일 특정한 시간에 매일 수행되어야 하므로 node Schedule을 통해서 EC2에서 자동화 처리를 구현하였다.

    지금 생각해보니 외부 API가 지원되지 않았기에 오히려 폭넓은 라이브러리를 사용할 수 있던 경험이된것 같다.



개발과정


  • 매일 AM 09:00 ~ PM 18:00 이후 2시간의 자유시간을 갖고 PM 20:00~ … 마감시간은 정하지 않았는데 보통 새벽 3시정도까지 정말 밥만 먹고 화장실가는 시간 외에는 4주간 온전히 몰두하였다.

    덕분에 프로젝트가 끝난 뒤 비타민 D 부족으로 병원신세 지는 팀원분도 발생하였다.. 힘든 과정을 함께 헤쳐나간 팀원들이 자랑스럽다.

  • 코드의 컨텍스트를 작성한 방법은 사실 개인의 습관마다 다를 수 있고, 사용하는 문법이 조금씩 다를 수 있으니 이 부분은 생략하도록 하고 개발과정에서 팀 단위로 협업을 해낸 과정을 간략하게 글로 남겨보려 한다.



집단 지성의 힘


  • “정말 이건 참 잘했다! 👍”

  • 만약 프로젝트 기간 동안 우리 팀이 가장 잘한 점을 꼽으라면, 똘똘 뭉쳐 문제점을 해결하는 팀원들의 태도를 꼽겠다.

"다들 바쁘지 않을까?"
"이런것도 모른다고 생각하지 않을까?"


  • 이런 생각을 전혀 하지 못할 만큼 환경이 잘 구성되었던거 같다.

    서로 질문하고 학습한 내용을 매일매일 공유하고, 또한 자신의 코드를 화면공유를 통해서 “왜 이런식으로 작성하였고, 어떤 부분에서 막혀 어려움을 겪고 있는지” 허물없이 많은 대화를 통해 문제를 해결하였다.



대충은 없다


  • 팀원들 모두 욕심이 많아서 그런지 사소한 포인트라도 쉽게 넘어가지 않았다.


"이정도면 됐잖아?"


  • 작은 기능이라도 구현을 완성하면 서비스 시연을 팀원들끼리 진행을 하였다.

    바로바로 즉각적인 피드백을 주고받아 개선할 내용들을 바로바로 개선하였고 그 결과, 한결 더 간결한 코드와 높은 완성도를 가진 웹 서비스가 탄생한것 같다.

  • 물론 아직 부족한게 많고, 프로젝트가 다 끝난 뒤 보니 아쉬운점이 모든 페이지에서 계속 보이는건 어쩔수 없다.

    다만, 위와같은 과정마저 없었다면 지금보다 더 후회스러운 결과가 나오지 않았을까?



아쉬운 점


  • 사실 너무 많다. 해보고 싶었지만 시간 관계상 시도해보지도 못한 목록만 나열해봐도 다음과 같다..

    1. 크롤링 대상 사이트 추가

    2. 예매 대행까지 가능한 결제 플랫폼 도입

    3. 애니메이션 라이브러리로 모두 교체

    4. soket.io 기능 추가

    5. 응답속도 개선을 위한 Redis 도입

    6. 위치기반 kakao Map API 도입, 근처 콘서트 검색



  • 서비스를 본격적으로 키워 광고도 달아보자 등등.. 너무나도 하고싶은게 많고 현재 배포한 웹사이트는 너무 부족한점이 많다.

    4주라는 시간이 서비스를 제작하는데 얼마나 부족한 시간인지 깨닳았다.



개선하고 성장할 점


  • 팀원들과 합의하여 설 연휴를 보낸 뒤 ALL-CON 프로젝트 리팩토링 기간을 1~2주가량 진행해 볼 예정이다.

    기간을 짧게 가져가는 이유는 너무 길게 프로젝트 리팩토링을 위해 가져가기보다는, 다들 주니어 개발자로써 현업에서 커리어를 쌓아가는게 더 중요하다 생각되기 때문에 너무 길지 않게 진행하기로 결정하였다.

  • 너무 아쉬웠던 추가로 구현해보고 싶은 기능들이 있다면 구현해보고, 개발기간 동안 아쉬웠던 코드들 혹은 개선을 미뤄뒀던 코드 내용들을 간추려서 리팩토링해 볼 예정이다.

    (기간이 길지 않기 때문에 많은 욕심은 부리지 않으려 한다.)



Final Project 리팩토링

(수정 22.02.18)


  자세히보기


Footer