중앙해커톤 BORA 회고

채린·2023년 8월 22일

🗓 일정

2023.07.17(월) 주제 발표
2023.07.20(목) 전체 아이디어 발표
2023.07.27(목) 기획 디자인 디벨롭 최종
~2023.08.03(목) API 명세서 작성
~2023.08.09(수) API 구현
~2023.08.10(목) pythonanywhere로 API 배포 완료
~2023.08.17(목) 수정사항 처리 및 추가 구현
2023.08.18(금) 중앙 해커톤 (제출)


👥 팀원

기획 디자인 2명, 프론트 엔드 2명, 백엔드 2명


🪟서비스 소개

해커톤 주제
      '디지털 격차' : 이커머스/소셜미디어/공공 서비스/블록체인 서비스

창밖을보라 좁은 핸드폰 창을 너머, 나와 세상을 가르는 작은 창 너머로, 시야를 넓혀주는 서비스
Alpha-Z세대는 디지털 상의 정보 수용력에 대한 낮은 변별력을 갖추고 있고, SNS숏폼 콘텐츠가 유행하며 디지털 리터러시와 문해력 저하 문제는 더욱 심각해지고 있다. Active senior는 소통하고 싶어도 소셜미디어 사용에 익숙하지 않아 소통 창구조차 알 수 없는 상황으로, 낮은 디지털 활용 능력이 사회적 소외와 단절로도 연결되고 있다.
소셜미디어를 중심으로 발생하는 디지털 격차가 세대 격차로 이어진다는 점에서 서비스를 기획하였다.
   창밖을보라가 제시하는 솔루션
       첫째, 이성적 의사소통이 가능한 양질의 글을 제공한다.
       둘째, 서로의 다양한 의견을 이해하고 존중할 수 있는 각주 형식의 콘텐츠를 제공한다.
       셋째, 모든 세대가 함께 소통할 수 있도록 사용성 높은 플랫폼을 제공한다.


⚙️기능 및 구현

회원가입/로그인/아이디중복확인

마이페이지/북마크목록/팔로우목록/저장된 재생목록
팔로우하기

홈화면/포스트 모아보기
북마크 여부 변경
세부포스트/콘텐츠 모아보기

검색

한마디 조회/등록/삭제/추천여부변경
한마디답글 등록/삭제

(한 포스트에 대한 본인의 콘텐츠 )
내 밑줄 전체조회/내 댓글 전체조회/내 감정표현 전체조회/내 Q&A 전체조회
내 밑줄 삭제

(한 밑줄에 대한 모두의 콘텐츠)
밑줄 댓글 조회/등록/삭제/좋아요/좋아요 취소/좋아요 여부 변경 (좋아요 취소가 안돼서 추가)
밑줄 댓글 조회 w 위치정보/밑줄 댓글 등록 w 위치정보 (프론트엔드 요청으로 추가)
밑줄 댓글 답글 등록/삭제
밑줄 감정표현 조회/등록/삭제
밑줄 감정표현 조회/등록/삭제 w 위치정보 (프론트엔드 요청으로 추가)
밑줄 Q&A 조회/등록/삭제/답변등록
밑줄 Q&A 조회/등록 w 위치정보 (프론트엔드 요청으로 추가)

밑줄 긋기

투표 등록/조회(진행중,완료,내가만든)/종료
투표하기
토론 등록/조회(진행중,완료,내가만든)/종료

오디오북 상세페이지
재생목록 조회/생성
다음 곡 조회


🙆🏻‍♀️ 자랑할 점

API 50개 가량의 볼륨이 큰 프로젝트였음에도 완성도 높게 잘 해냈다.
제대로된 첫 협업으로 백엔드로서의 역할과 수행과정을 잘 이해할 수 있었다.


🙅🏻‍♀️ 아쉬운 점

  • 처음에 API 명세서를 짜는 것이 익숙치 않아 상당히 오랜 시간이 들었다.
  • 모델을 구성할 때 불필요한 정보까지 담아내어 너무 복잡한 구성이 된 것 같다. ERD를 짜보았는데 너무나도 복잡하다. 개선이 필요하고, 어떻게 해야 DB를 효율적으로 구성할 수 있는지 공부해야한다.
  • 몇주간 계속해서 도커, AWS의 EC2와 RDS, 깃허브의 Actions를 이용해 배포하려 시도했지만 실패하였다.
  • 토론 부분에서 실시간 채팅을 구현하려 했지만, 파이썬 애니웨어가 웹 소켓이 지원되지 않아 구현해보지 못했다. 창 두개를 띄우고 채팅하는 것 까지는 성공했는데, 이 대화 내용을 저장해두려면 어떻게 하는지 알아보고 싶다.
  • 테스트 코드라는 것이 있는거같은데.. 뭔지 잘 모르겠다.
  • 다른 팀의 프로젝트들을 보며 내가 아직 해보지 못한 기능들이 많이 보였다.
    (ex. 페이지네이션, 유저 권한 다르게 하기, 소셜 로그인 (네이버, 카카오), 지도 api ..)\

🙇🏻‍♀️ 새로 알게 된 점

  • API 명세서는 프론트 엔드에서 그대로 가져다 쓰기 때문에 아주 중요하다는 것을 알게 되었다. 오타가 있어도 안되고, url의 맨 뒤에 '/'도 빼먹으면 안된다. 또한 화면에 보이지 않더라도 필요한 정보가 꽤 많아 섬세하게 작성해야 한다.
  • 로그인을 한 뒤 이를 유지하기 위해서는 토큰이 필요하다는 것을 처음 알았다. 대동제 사이트 코드를 따라 JWT토큰을 사용하였다. 토큰에 대해서도 알아야 할 것이 더 많은 것 같다.
  • 협업을 할 때 깃허브에서 이슈를 만들고 이에 해당하는 브랜치를 판 뒤, 개발 및 테스트가 완료되면 풀리퀘, 머지하는 과정을 처음 해 보았는데 생각보다 체계적으로 잘 진행된 것 같다.
  • api배포된 상태에서는 잘 돌아가도 프론트 엔드에서 연결했을때 오류나는 부분이 생각보다 많아서 놀랐다. 감정표현 삭제는 포기했고, 좋아요 취소(delete)는 좋아요 여부 변경(patch)으로 대처했다..
  • Postman을 이용해서 api명세서를 쉽게 짤 수 있다고 한다. 나중에 시도해보자

❓겪었던 문제

  • POST메소드이고, post로 정의하고 프론트엔드에서 post로 요청하는데, 계속해서 GET오류가 났다. api명세서에서 백엔드가 뒤에'/'를 빼먹은 것을 프론트에서 그대로 복사해서 썼었는데, 이를 모두 '/'를 붙여주니 해결되었다. 정확한 원인은 모르지만, '/'가 없어서 post함수를 부르지 못하고 기본(?)인 get을 계속해서 부른 것이 아닌가 싶다.. 다른 팀도 이와 같은 에러가 있었는데, 그쪽은 get함수와 return(201성공!~..)을 붙여주니 get함수를 호출한 뒤 post함수도 호출해서 정상 작동이 되었다고 한다.(우리는 아무 작동 안하는 get함수 추가해도 그냥 get만 호출되어 원하는 post는 작동 안했음)
  • 프론트 엔드와 처음 협업하며 처음 알게 되었는데, cors에러가 떠서 이를 해결하기 위해 setting에 백엔드에서 처리를 해주어야 한다. 어떤 이유에서 나는 에러인지는 더 공부해보아야겠다. (정확한 내용은 따로 정리하겠다)
  • 모델 작성 시 의존관계가 있다면 의존관계 없는 애 쓴다음 migrate해준 다음 다음 모델 작성해야 한다. 모든 모델을 작성하고 한번에 migrate하려다가 의존관계때문에 실패했다.
    관심사때문에 post의 post는 user에 의존하고 account의 user는 post의 hashtag에 의존하는 문제가 있어 Hashtag를 account에 넣었다. user를 보통 제일 먼저 써야하는거 같다. user에 필요한 모든 클래스는 account에 써주자
  • DRF를 배운지 얼마 되지 않아, 값을 필터링할 때 뷰와 시리얼라이저 모두에서 처리할 수 있어서 오히려 헷갈리기도 했다. 어느쪽에서 하는 것이 더 효율적인 방법인지 잘 모르겠다..

❗️느낀점

3주에 걸쳐 첫 프로젝트를 하며 새로 경험하고 배운 것도 많고, 스스로 부족한 점이 많다는 것도 알게 되었다.
그저 백엔드 공부만 할 때와 다르게 협업을 하다보면 처음 마주치는 에러와 문제들 또한 많았고, 데드라인과 역할이 있었기 책임감도 더 많이 느껴졌다. 팀원들과 함께 프로젝트를 하며 뿌듯함과 성취감을 느끼고 팀원들의 소중함 또한 크게 와닿았다. 특히 우리 팀이 서로 응원하고 칭찬 감옥에 가두며 분위기도 좋고 화이팅 넘쳤기에 더욱 도움이 되고 열심히 할 수 있어 고마웠다. 아직까지 프로젝트 한번 한 것 뿐인데 뭔가 경험치가 쌓인 기분이다.. 앞으로도 여러 공부들과 프로젝트를 통해 발전해보자~..~
아.. 더 더 많은 공부는 필수다 정말로,.

0개의 댓글