[airPnP] 2차 프로젝트

LILO Ghim·2021년 12월 26일
0


에어피앤피는 나의 재능을 공유하는 서비스를 제공합니다.

> 프로젝트 개요

  • 프로젝트 취지
    airbnb(https://www.airbnb.co.kr/)를 모티브로 한 프로젝트

  • Branding
    공간을 공유하는 기존의 에어비앤비에서 아이디어를 얻어 내가 가진 재능을 공유하는 서비스를 제공함으로써 소비자는 일 단위로 호스트(재능)를 예약하는 비즈니스로 기획함

  • 프로젝트기간

    21년 12월 13일 ~ 21년 12월 23일(약 11일간)

  • 프로젝트 팀 구성

    • 총 6인
    • front-end 강혜리, 길도연, 이나은
    • back-end 김은혜, 염기욱, 이주명

> 프로젝트 목표

"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


    • 중간 보고
      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)

  • AWS 클라우드 서버 및 Docker Image를 활용한 배포

UnitTests

S3 Uploader

  • form-data
    : 여러 개의 file 뿐만 아니라, host_id와 같은 기타 정보를 front에서 한번에 받아 db에 적용할 수 있음
  • Bucket.__dir__()의 응용
    : put_object, Object를 활용하여 객체에 대한 접근법 이해
    Object 접근하기

코드 리팩토링으로 새로운 개념 적용

  • 객체 지향 프로그래밍의 이해
    : 소셜 로그인 기능 구현시, Kakao API 파트를 모듈화하여 사용
    Kakao API 관련된 로직은 core app 내 utils에서 class로 그룹핑하여 사용하며, 따라서, 하나의 class에서 관리하면 된다는 장점이 있으며, 수정시에 해당 클래스만 수정가능하다.

<아쉬운 점>

기획 & contents(data) & communication

  • 서비스 기획과 브랜딩, 우리가 보여주고자 하는 것에 대한 내용은 모두 완벽히 이해 및 동의가 된 상태에서 기획서가 되었든 API doc이 되었든 문서화하여 전반적인 flow를 100%에 가깝게(그 시점에서 만큼은) 이해하고 나서 개발을 시작해야 한다.

  • 이것을 위해서 PM 또는 PL이 필요하고, scrum과 communication이 필요한 것이다. 초기에 100%가 되는 것은 절대 불가능하다. 그렇기 때문에 리더가 있고, communication을 해야 한다.

  • 총 3개의 팀 프로젝트를 진행해보았고, 총 12명의 서로 다른 팀원과 협업해보았을 때, 90% 이상의 개발자는 일단 코드를 치고 싶어했고, 백엔드는 빨리 환경세팅을 하고, view를 치고 싶어했으며, 프론트는 레이아웃부터 뽑고 데이터를 어떻게 줄지 궁금해한다.(모델링도 안되어 있는데??? 당연하다)

  • 그러나, 이 프로젝트가 어떤 프로젝트이고, 어떤 기능이 구현되어야 하고, 어떤 데이터를 보여줘야 하고, 사용자는 어떻게 페이지에 접근 할 것인지에 대한 고민을 깊게 할 필요가 있고, 그 이해가 부족하고 고민이 깊지 않으면 결국 장애를 만날 확률은 100%. 이때, communication, 협업 역량이 드러난다.

    <장애를 만나는 것은 이백오케이다 문제가 될 것이 없다>

  • 해결하면 그 뿐.

  • 이 때 해결 방법은, 문제를 해결 할 절대적인 실력 혹은 communication 또는 협업 역량.

  • 이 communication과 협업 역량이라 함은, 목표를 수정할 수 있는 빠른 판단력, 또는 변경을 위한 설득력, 기본적인 매너와 말투, 최선, 책임감이라고 판단된다.

  • 우리는 첫 번째 항목은 실패했지만, 상기 항목의 balance가 좋았다. 결과적으로 큰 문제없이 프로젝트를 완성했고, 모두가 만족한 듯 보인다.

  • 우리 communication 정말 잘했다! 라고 할 수 없지만 앞으로 내가 어떻게 프로젝트를 대해야 할지는 정확하게 깨달았던 소중한 경험이었다.

profile
킴릴로

0개의 댓글