프로젝트 취지
airbnb(https://www.airbnb.co.kr/)를 모티브로 한 프로젝트
Branding
공간을 공유하는 기존의 에어비앤비에서 아이디어를 얻어 내가 가진 재능을 공유하는 서비스를 제공함으로써 소비자는 일 단위로 호스트(재능)를 예약하는 비즈니스로 기획함
프로젝트기간
21년 12월 13일 ~ 21년 12월 23일(약 11일간)
프로젝트 팀 구성
적용기술
Python, Django, MySQL, AWS(EC2, RDS, S3), Docker, Git
협업도구
"Front-end와 Back-end간의 원활한 communication을 기반으로,
모든 팀원이 각 기능을 이해하고 구현하며, 기한(21년 12월 23일 오후 6시)내 파트별 필수 구현 기능 및 Docker를 활용한 배포를 완성하는 것으로 함"
구현 기능 (본인 구현 파트 * 표기)
1. Social SignIn*
Kakao 로그인 API를 활용하여 소셜 로그인을 구현함
2. 로그인시 jwt token 발급*
소셜 로그인시 자체 서비스에서 발급하는 토큰으로 인가받은 사용자에 한하여 웹 서비스를 이용하게 함
3. Host SignUp*
호스트 등록.
geocoder 라이브러리 활용 > host 등록시 입력한 주소를 위도와 경도로 변환하여 db에 저장
S3 이미지 업로더 기능을 구현하여 url을 db에 저장함
4. Host List
재능과 원하는 예약 날짜로 host를 필터링하여 host list를 보여줌
host의 위치를 지도 위에 표시하여 위치 기준으로 호스트 필터링 가능
5. Host Detail & Booking
jwt token decorator로 인가 받은 사용자에 한하여 예약 가능
예약날짜 필터링으로 예약 가능일만 보여줄 수 있도록 구현
6. AWS(RDS, EC2) Docker 배포*
EC2 서버에서 Docker Image 활용하여 배포
http://air-pnp.s3-website.ap-northeast-2.amazonaws.com
Process
planning : 비즈니스 기획(branding), ERD & modeling, API Document
ERD
API Document 작성 > Google spreadsheets
중간 보고
notion 페이지를 활용하여, 기능별/팀원별 진행 상황 및 소요 시간 등을 효율적으로 파악 하고 추후 스케쥴링에 참고하도록 함
시연영상
기능 구현 상세
1) (필수)Kakao Social SignIn
-Kakao API 공식 문서를 기반으로 소셜 로그인 구현
code 보기!
2) (필수)Host SignUp
-geocoder 라이브러리 활용 > host 등록시 입력한 주소를 위도와 경도로 변환하여 db에 저장 code 보기!
-(추가)S3 file uploader
code 보기!
3) AWS(EC2 & RDS) & Docker 배포
code 보기!
http://air-pnp.s3-website.ap-northeast-2.amazonaws.com
AWS & Docker(RDS, EC2)
UnitTests
S3 Uploader
Bucket.__dir__()
의 응용코드 리팩토링으로 새로운 개념 적용
기획 & contents(data) & communication
서비스 기획과 브랜딩, 우리가 보여주고자 하는 것에 대한 내용은 모두 완벽히 이해 및 동의가 된 상태에서 기획서가 되었든 API doc이 되었든 문서화하여 전반적인 flow를 100%에 가깝게(그 시점에서 만큼은) 이해하고 나서 개발을 시작해야 한다.
이것을 위해서 PM 또는 PL이 필요하고, scrum과 communication이 필요한 것이다. 초기에 100%가 되는 것은 절대 불가능하다. 그렇기 때문에 리더가 있고, communication을 해야 한다.
총 3개의 팀 프로젝트를 진행해보았고, 총 12명의 서로 다른 팀원과 협업해보았을 때, 90% 이상의 개발자는 일단 코드를 치고 싶어했고, 백엔드는 빨리 환경세팅을 하고, view를 치고 싶어했으며, 프론트는 레이아웃부터 뽑고 데이터를 어떻게 줄지 궁금해한다.(모델링도 안되어 있는데??? 당연하다)
그러나, 이 프로젝트가 어떤 프로젝트이고, 어떤 기능이 구현되어야 하고, 어떤 데이터를 보여줘야 하고, 사용자는 어떻게 페이지에 접근 할 것인지에 대한 고민을 깊게 할 필요가 있고, 그 이해가 부족하고 고민이 깊지 않으면 결국 장애를 만날 확률은 100%. 이때, communication, 협업 역량이 드러난다.
<장애를 만나는 것은 이백오케이다 문제가 될 것이 없다>
해결하면 그 뿐.
이 때 해결 방법은, 문제를 해결 할 절대적인 실력 혹은 communication 또는 협업 역량.
이 communication과 협업 역량이라 함은, 목표를 수정할 수 있는 빠른 판단력, 또는 변경을 위한 설득력, 기본적인 매너와 말투, 최선, 책임감이라고 판단된다.
우리는 첫 번째 항목은 실패했지만, 상기 항목의 balance가 좋았다. 결과적으로 큰 문제없이 프로젝트를 완성했고, 모두가 만족한 듯 보인다.
우리 communication 정말 잘했다! 라고 할 수 없지만 앞으로 내가 어떻게 프로젝트를 대해야 할지는 정확하게 깨달았던 소중한 경험이었다.