Project : Cafe114

Dan.kimhaejun·2019년 12월 17일
0

2019.10.28 부터 2019.11.9 2주간 진행했던 프로젝트 Cafe114에 대한 회고

소개

  • 'Cafe114' - 24시간 운영 카페 정보 실시간 공유 웹페이지
    • 지도를 통해 한 눈에 정보를 담을 수 있다.
    • 불친절하게 흩어져 제공되어 왔던 운영시간 데이터를 한 번의 접속으로 해결
  • 내가 대학생 시절 느꼈던 불편함, 그리고 늦은 밤 책 한권 읽으러 나가고 싶은데 마땅히 갈 카페를 찾을 수 없었을때 느꼈던 그 막막함을 바탕으로 낸 아이디어로 시작했다.
  • 프로젝트에 대한 아이디어 제안은 내가 했지만, 프로젝트에 대한 UI / UX 부분은 훌륭한 프런트 팀원분들 덕분에 성공적으로 완성 할 수 있었다.(감사합니다)
  • 총 3명의 인원으로 프론트2, 백엔드1 로 진행하였다.

백문불여일견(百聞不如一見)

왜 나는 이 프로젝트를 선택하였는가?

  • 개발자로서 실제 출시가 가능할 만한 모델이었으면 좋겠다.
  • 사용자가 한명이라도 있다면, 그 사용자가 가치있게 사용할 수 있는 프로젝트라면 좋겠다.
  • 플랫폼만 개발된다면 확장의 가능성이 무궁무진할 것 같다.
    • 카페 외 24시간 서비스 공유 ( 병원, 약국, 편의점, 찜질방, PC방 등등..)
    • 실시간 채팅을 기반으로 한 커뮤니티가 생성 될 수도 있을것이라고 생각했다.
      • 스타벅스의 경우 고객의 충성도가 높기 때문에 스타벅스 앱 내에 그들만의 커뮤니티가 생긴다면 어떨까 라는 상상도 해봤다.
      • 여기 스타벅스 사람 많아요! 앉을 자리 없어요!
  • 백엔드로서 구축해야할 데이터가 명확했다.
    • 유저, 카페, 채팅

스택

  1. 첫번째 목표, AWS S3, EC2, RDS를 활용하여 REST API를 구축하는 것
  2. 두번째 목표, 프런트에서 원하는 데이터에 대한 사전 예측을 통한 DB Schema 구현
  3. 세번째 목표, 프런트에서 필요로 하는 데이터는 수정 보완해서 최대한 쉽게 해주기
  4. 그리고 아래 목표 완성하기!
  • AWS EC2 - Node.js - Express 기반 서버 구현, 배포
  • AWS RDS - MySQL - Sequelize 를 활용한 RDBMS 구현
  • AWS S3 - Multer - MulterS3 를 활용한 image 데이터 저장
  • REST API 구축
  • Socket.io 활용으로 유저간 실시간 채팅 구현
  • Crypto, JWT 기반 회원가입 및 로그인 기능 구현
  • 소셜 로그인 기능 구현 (카카오)

유효범위 결정

2주 프로젝트였고, 실제로 코드를 작성할 수 있는 시간이 많지 않을 것이라고 판단했다.


문제 - '모든 24시간 카페의 정보를 얻을 것이다.'
vs
해결 - '서울 지역 내 24시간 운영하는 '할리스', '탐앤탐스' 의 모든 정보를 제공할 것이다.


이유
1. 구체적이지 않기 때문에 명확한 유효 데이터 범위를 정해야 한다.
2. 정보를 얻기 쉬워야 한다.

위 이유를 바탕으로 우리는 '할리스', '탐앤탐스' 총 84개의 데이터를 바탕으로 개발을 진행하였다.

크롤링 vs 수기작업

크롤링과 수기작업에 대해서도 많은 고민이 있었다.


크롤링 장점 - 크롤링 기술에 대해 배울 수 있다. (새로운 스택 공부)
크롤링 단점 - 오랜 시간 소요 예상 (예상시간 6시간 이상)


수기작업 장점 - 짧은 시간 소요 예상 (예상시간 3시간 이내)
수기작업 단점 - 배우는 입장에서 크게 의미가 없다.


결정 - 수기작업
이유
1. 2주간의 프로젝트 기간동안 크롤링을 배우기 위해 소요하는 시간으로 인해 프로젝트 진행에 차질이 생길 수 있다.
2. 지금 당장의 스택에 대한 욕심보다 확실함에 걸자. 무엇이 더 중요한가 (크롤링? vs 프로젝트 완성?)

과정

처음이라 막막했지만, 처음이기에 두려워하지 말고 만들어보자고 생각했다.

  1. express-generator 을 통해 전체적인 서버의 형태를 만들었다.
  • 서버 기초가 설계가 되니 뭔가 가능할 것 같았다.
  1. sequelize-cli 를 통해 전체 DB Schema를 구축하였다.
  • ORM을 통해 테이블간 관계를 맺고 관계를 바탕으로 데이터를 가져왔다.
  1. Crypto, JWT를 통해 토큰을 통한 로그인 기능을 구현했다.
  2. 인증과 로그인에 대한 개념이 명확하게 잡히지 않은 상태라 초기에 클라이언트와의 토큰 소통에 대한 오해가 있었다.
  3. cookie를 사용할 필요 없이 headers에서 해결 가능한 일이었다.
  4. 이 과정을 발판삼아 더이상 cookie에 저장하는 실수는 범하지 않겠다.
  5. 소셜 로그인 (카카오) 기능을 구현했다.
  6. 카카오 인증을 통해 받은 고유키를 새로운 아이디를 생성했다.
    • 기능 구현 이전에 카카오 로그인 한 유저와 기존 유저를 통합하는 부분에 대해 고려를 하지 않았기 때문에 추후에 통합 과정이 필요할 때 오류가 발생할 여지가 있다.
  7. 결국 API를 통해 기능 구현 하는 것이기 때문에 두려워 할 필요 없다.
    • 천천히 레퍼런스 먼저 읽고 이해하자. 이해만 하면 구현하는건 금방이다.
  8. S3 - Multer - MulterS3 를 활용하여 image데이터를 따로 저장할 수 있는 경로를 생성했다.
  • 클라이언트에서 image까지 관리를 할 여유가 없었기에 실제로 활용 되지는 않았다.
  1. Socket.io 를 활용하여 각 카페별로 실시간 소통이 가능하게 했다.
  • 실시간 정보는 DB에 모두 저장이 되고 추후에도 활용이 가능하다.
  • 실시간 채팅을 통해 상대방과 소통하는 건 생각이상으로 짜릿하다.

결과

  1. 사이트를 접속하면 서울 내 24시간 카페 (할리스, 탐앤탐스) 에 대한 정보를 얻을 수 있다.

    Cafe114 사이트 - http://cafe114-client.s3-website.ap-northeast-2.amazonaws.com/

  2. 2주간의 프로젝트 결과 발표 영상이다.

    소개영상 - https://drive.google.com/file/d/1e-LugI9w9RUdAsMnD9yceslH1_atNlGF/view

4주간 진행한 프로젝트의 결과물이며,
백엔드 개발자로 완성한 첫번째 결과물이다.

GitHub - https://github.com/Dankimhaejun/Cafe114-server

  1. DB Schema
  • users, cafe로 구성된 기본 데이터에 유저별 좋아하는 cafe에 대한 데이터를 담을 userLikeCafe
  • 유저들의 카페에 대한 comment를 담을 수 있는 comments
  • 이렇게 보니 수정할 게 많다

회고

Q. 이번 프로젝트에서 너는 최선을 다했니?
A. 그렇다.

  • 처음으로 프로젝트를 진행했다.
  • 처음 진행하는 프로젝트에 팀장이 되었다.
  • 프로젝트를 잘 만드는 것이 가장 중요하다.
  • 하지만 더 중요한 것은 팀이 원팀으로 한 마음으로 진행했느냐이다.
  • 원팀으로 최선을 다했으며, 2주 프로젝트의 성과로서 충분히 만족한다. (개인의 입장)

마지막으로

프로젝트를 진행하면 할 수록 더욱 겸손해지는 것 같다.
벼는 익을수록 더 고개를 숙이듯이 겸손한 개발자가 되고 싶다.
나는 백엔드였고, 혼자였다. 하지만 팀과 함께 최선의 결과를 내기 위해 끊임없이 소통했다.
지금 이 프로젝트가 완벽하진 않지만, 내 인생의 첫 프로젝트로서 완벽하다.
함께 해준 팀원분들께 진심으로 감사의 인사를 전하고 싶다.
앞으로 마주하게 될 수 많은 프로젝트가 기다려진다.

profile
제가 겪은 이슈에 대해서 정리합니다. 기억보다는 기록이 더 낫다고 생각합니다.

0개의 댓글