내배캠 (22.04~22.08)

SidePro 프로젝트 (사이드 프로젝트 공유 플랫폼) - KPT 회고

yubi5050 2022. 8. 5. 09:38

1. 프로젝트 기간, 팀 구조

주제 : 사이드 프로젝트 공유 플랫폼 (with. 커피챗)
기간 : 2022.07.07 (목) ~ 2022.08.04 (목)

팀 구성 : 김선민 (Github), 김민기 (Github), 박재현 (Github), 황신혜 (Github)

시연 영상 : https://www.youtube.com/watch?v=Imbu132BxTA

 

2. 프로젝트명

개발자를 위한 사이드 프로젝트 공유 플랫폼 서비스 (with. 커피챗을 곁들인) 

 

3. 프로젝트 Github ( + 설명)

https://github.com/SeonminKim1/SidePro-BE

 

GitHub - SeonminKim1/SidePro-BE: 사이드 프로젝트 공유 플랫폼 with 커피챗 - BE

사이드 프로젝트 공유 플랫폼 with 커피챗 - BE. Contribute to SeonminKim1/SidePro-BE development by creating an account on GitHub.

github.com

 

4. Keep

  • 기획(Mock Up), 와이어 프레임, 웹 개발 순서의 진행을 적절하게 진행함
  • Branch 관리 : Branch 기반 작업 + Merge(PR) 후 Branch 삭제
  • 파일을 적극 분리하여 작업 (+개발 생산성, Conflict 방지) 한 점 (base.html)
  • CSS Convention / Semantic Tag 어느정도 규칙 잘 지킨점
  • FE 개발 Version up 관리 (ex. Agile 개발론)
  • UX/UI 기반 프로젝트 최종 점검 시간을 확보해서 진행한 점 (+외부 테스터 진행)
  • 요구사항 기능을 POC (Proof of Concept) 스프린트 초기에 검증한 점
  • FE 개발
    .js 분리 작성
    JQuery Ajax 대신 Async Function Vanila를 99.9% 활용한 점.
  • BE 개발
    Django 프레임워크에 좀 더 익숙해져, 순수 API 개발 소요 시간을 줄인점
    Django 프레임워크의 부가적인 라이브러리를 많이 다양하게 써 본 점. (Django-channels, Crontab, Pagination)
    urls.py API 분리 잘한점
  • 인프라 (Infra)
    EC2 배포, S3 정적배포, Route53, RDS 등 서비스를 많이 사용해본 점
  • 기획안과 최종 완결물 간의 차이가 거의 없는 점
  • 와이어프레임 앞(기획)을 탄탄히 가져감
  • 정기적인 상호 피드백 및 논의 시간을 가진 점 (오전 9시, 오후 2시, 저녁 6시)
  • 서로 질문하고, 격려하고, 적극적으로 피드백 하려고 한 것
  • 오류 발생 시 꾸준한 디버깅으로 문제 해결

 

Problem

  • (FE) FE Develop
    반응형 구현 못한게 아쉬움 (시간상) => 미디어 쿼리 도입
    JS 조건문 남용, 공통부분 함수화, then() 문, 가독성 등이 조금 아쉬움 => 좋은 JS 코드 공부
    Page에 대한 추상화 여지가 조금 있었던 듯
    CSS Convention id, class 혼용 상황 (사전에 협의 안된게 아쉬움)
  • BE, DB
    DB(PostgreSQL) Migration 등 잡다한 이슈 => ORM, Framework 추가 이해 필요
    특정 문자열(Python) python PYTHON 도 허용하고 싶은 소요가 있었음 => 실제 코드는 validation은 lower(), upper() 등으로 통일, 보여주는 건 따로
  • AI
    CronTab + Singleton 패턴이 Docker 환경에서 잘 작동하지 않았던 점 => 추가 공부 필요함
  • AWS (인프라)
    Sprint 1 사전 학습 기간에 POC를 못해봐서 실 개발기간이 늘어진 점
    추가 기술 CloudFront, Cloudwatch, Lambda, 엘라스틱캐시(redis), Load-balancer 적용 못해본점
  • 보안 쪽 미고려 => https, wss 프로토콜 전환 필요
  • 개발상황과 배포상황간의 서버 구성이 달라 지는 것을 사전에 인지하지 못한 점
  • 기획안과 최종 완결물 간의 차이가 거의 없는 점 => 의사소통 미스
  • 일정 Delay => 상황적 여건을 고려해서 일정을 수립하자.

 

Try

  • FE
    FE 개발 팀장 Role 수행 - 황신혜
    JS 좋은 코드 / React 프레임워크 찍먹
    Agile 개발 방법론
    JWT 방식 로그인에 대한 추가적인 요구사항, 기능 개발
    반응형 미디어쿼리 (공부 + 적용)
  • BE
    Django 학습 (Permission / DRF Mixins, Generic API, Viewset 추상화) 등등 더 공부
    Django Query ORM (bulk_create(), get_or_404등 다양한 함수 사용(Query 수 비교))
    Django Query ORM 최적화 (Prefetch() Class, 더다양한케이스-역참조에역참조역)
  • Test Code 작성하기 - UnitTest, E2E 더 해보기
    디자인 패턴 도입 (프로젝트 전체에 대한 패턴 조사)
  • 소셜로그인
  • AWS & CI-CD
    LoadBalancer (ELB) 로 서버 여러대 & 부하 테스트
    GitActions CI-CD EC2 완성
    Cloudwatch로 EC2 Log 수집
    CloudFront, ElasticCache 등등
    도커 Layer build 최적화 daphne, guincron 코드 분리
    gunicorn 최적의 worker test & 부하 테스트
  • 기타
    Response Body / Network 최적화 스토리 (Font Download, S3 Mount, Body) => 정량적인 수치가 나오지 않았을까
  • (QA) 튜터 적극 활용 (특정 시점에 찾아가기), 외부 테스터 (신혜님 남자친구님)
  • (GIT) 잘 활용하기
    Commit 좀더 명료하게 적기~
    Issue 작성 : 체크박스 10개 이하로 분리해서 적기
    PR Templates : 내용 적기 (Title - Commit 메시지 처럼 / 내용 : Commit 정리)
    Milestone / CodeReview
  • GIT 안에서 프로젝트 정리하기 (Wiki, TIL - Link)

 

Feel (느낀점)

김선민

  • 최종프로젝트 답게 기능에 대한 많은 고민과, Develop에 대해 시간을 많이 투자하였고, 일정 수준 이상의 결과물을 얻은 것 같습니다. 프로젝트를 진행하며 많은 식견을 얻게 되어 이에 대해 더 알아보고, 좋은 Develop 방법을 많은 사람들과 소통해 나가 제 스킬로 만들고 싶습니다.

 

김민기

  • Django 프레임워크의 편의성과 유연성을 다시 한번 체감하는 기간이었으며 바닐라JS의 Fetch API를 체험하는 좋은 프로젝트였습니다. AWS 인프라 관련 세팅을 통해 CS지식을 조금이라도 더 습득해서 즐거웠습니다. 그 무엇보다 우리 팀원들간의 연계와 협동은 더할나위없이 좋았다고 자부합니다.

 

박재현

  • BE, FE, Infra 전체적으로 규모도 크고 기능도 많았던 터라 이것저것 다 해보느라 많은 걸 배웠고 팀원들이 짜놓은 코드를 보면서 배우는 것도 많았던 프로젝트였습니다. 중간 발표까지 스프린트 잘해냈고 이제 프로젝트 전체를 이해하기 위해서 내가 짠 코드 뿐만아니라 팀원들이 짠코드들도 정리해서 자기 것으로 만들어야 겠다 생각했습니다.

 

황신혜

  • 스프린트 방식으로 일하는 것과 일정 관리 협업에 관해 많이 성장했음을 느낄 수 있었다. 웹 화면 기본 구조 설계를 보이는 방식대로가 아닌 코드로 상상할 수 있게 되었고, 와이어프레임을 보고 컴포넌트 단위로 구조화를 시켜보는 방법에 익숙해짐.