Web_Jeju for Nomads

Written on September 5, 2019

Jeju for Nomads Main

Period 2019년 6월 30일 ~ 7월 12일
8월 26일 ~ 9월 4일 (수정 및 배포)
Platform web
Role React와 Node.js 사용, 풀스택 개발
- React 및 Redux 사용
- 상태관리를 위한 Redux (Redux-saga) 적용
- Google Maps API 활용, 구글맵 기반의 정보 제공
- Express.js 프레임워크 활용 서버 구축
- 사진 및 정보 게시 및 수정을 위한 CRUD 구현
- Multer, MulterS3를 활용하여 이미지 업로드 구현
- 관계형 DB, MySQL 사용 DB 구축
- AWS CodePipeline을 활용한 배포자동화 구축
Tech Stack


Overview

평소에도 노트북 들고 카페에서 자주 작업을 하는데 제주도 한달 살기를 준비하며 ‘제주도 일하기 좋은 카페’ 라고 검색창에 검색해 봐도 인스타 감성의 카페들만 나오고 노트북을 사용할 수 있는 환경을 갖춘 카페 정보는 많이 나오지 않았다. 제주도까지 가서 스타벅스만 전전할 순 없는 법. 제주도를 찾을 디지털 노마드들을 위한 카페 정보를 공유할 수 있는 웹사이트를 만들기로 했다.

카페에 대한 기본 정보는 구글맵 API에서 제공받고, 추가적으로 와이파이, 콘센트, 주차, 화장실, 그리고 따뜻한 아메리카노 한 잔의 가격에 대한 정보와 직접 찍은 사진을 게시했다.


이 프로젝트는 제주를 시작으로 다른 나라, 다른 도시의 시리즈도 추가될 것이다.

coming soon 😎

Key Features

구글맵 기반의 정보 제공

Google Maps Javascript API를 사용하여 구글지도를 기반으로 data를 보여주는 방식을 택했다.

카페 콘텐츠 등록을 할 때, 구글 지도 검색을 통해 ‘placeId’와 ‘좌표’를 DB에 저장했다. 이 때 저장한 ‘좌표’ 정보로 정보 리스트를 지도 위의 위치 아이콘으로 렌더하고, 특정 좌표의 아이콘을 선택하면 ‘palceId’로 운영시간, 주소, 리뷰 등 추가적인 정보를 불러오는 방식으로 구현했다.

jeju-demo-gif

또한, 프리뷰에서 모든 정보를 불러오는 것이 아니라, ‘see more’를 클릭했을 때 상세 이미지와 코멘트 등 추가 정보를 서버에 요청해 불필요한 API 요청을 줄였다.

jeju-demo-gif

admin 페이지 게시판 CRUD 구현

일반적인 게시판 기능처럼 admin 페이지에서는 정보를 추가하고 수정하고 삭제할 수 있도록 CRUD를 구현했다.

이 때, 이미지 업로드는 multer와 multer-s3 모듈을 사용하여 s3에 이미지를 저장하고, db에는 저장된 이미지 url만 저장하는 방식으로 구현했다.

jeju-demo-gif

jeju-demo-gif

AWS CodePipeline을 활용한 배포자동화 구축

Code Pipeline


이번 프로젝트에서는 AWS를 좀 더 적극적으로 활용해 보았다.

서버와 DB는 AWS EC2에, 클라이언트는 S3에 배포했는데,
추가적으로 서버는 AWS CodePipeline을 도입하여 깃헙의 마스터 브랜치에 코드를 푸시하거나 머지하는 이벤트가 발생하면 자동적으로 EC2에 배포될 수 있도록 했다.

클라이언트의 경우, terminal에서 CLI 커맨드 yarn build && yarn deploy 만으로 자동적으로 빌드된 파일이 배포될 수 있도록 했다.

Review

이번 프로젝트는 1차적으로 개발을 하고 한 달이 지나서야 배포를 위해 코드를 다시 열어보게 되었다. 하지만 보면 볼수록 코드에 마음에 들지 않는 부분이 마음에 걸려 리팩토링을 진행하게 되었다. 이 과정에서 속상하기도 하고, 그만큼 많이 배울 수 있었던 것 같다.

또한, 배포를 처음부터 혼자 차근히 진행하고 ‘배포 자동화’를 시도해 본 과정이 너무 재미있었다. 하면 할 수록 새롭고 신기한 코딩의 세계다!

버전업을 하게 된다면 콘센트가 있는 곳, 주차장이 있는 곳 등으로 필터링을 할 수 있게 하고싶다.


다음 프로젝트 때 시도해 보고 싶은 것들

  • CI 도입
  • 필터링


관련 포스트

Front-end

Back-end

DevOps

👩🏻‍💻 배우는 것을 즐기는 프론트엔드 개발자 입니다
부족한 블로그에 방문해 주셔서 감사합니다 🙇🏻‍♀️

in the process of becoming the best version of myself