이번 팀은 Spring 입문과 숙련 기간이 겹쳐 다른 과제 기간과 달리 4주라는 시간을 함께 보냈다. 🦑
사실 4주라는 시간이 짧은 시간이라고 생각할 수 있지만 어떤 시점에서 보면 길게도 볼 수 있는 시간이라고 생각을 한다.
이번 팀이 긴 시간을 함께 하는 만큼 팀과의 합심이 좋지 않다면 정말 괴로운 시간을 보낼수도 있겠다 생각을 하였다.
하지만 그 생각은 첫날 팀과의 첫 대화를 나누는 시간에 먼지처럼 사라졌다.
우리 팀은 다른 팀보다 더 활발하고 재치있으며, 무엇보다 학습에 열정적이라고 자부할 수 있었다.
지난 프로그래밍 기초 주차에서 부족했었던 부분을 보완하기 위해서 만남을 가진 첫째날 팀들의 프로그래밍 역량을
파악한 뒤 Spring입문을 들어가기 앞서 Java에 대한 역량을 강화하는데 집중하는 시간을 가졌다.
아무래도 Java주차에서 다뤘던 반복문 및 조건문 같은 경우는 많이 다뤄보면 빠른 시간내에 역량을 강화할 수 있다고 생각했다.
이전 팀과 비슷하게 처음에 팀원들과 함께 그동안 부족했던 부분을 직접 다뤄보는 시간을 가지면서 주어진 과제에 더 주도면밀하게 접근할 수 있게 공부를 했던 시간이였던 것 같다. 다만, 이전 팀과 달랐던 부분은 이 시간을 팀이 이뤄진 그 해당 날에 가진 것이였다.
한달동안의 시간을 3자의 입장으로 바라본다면, 우리팀원들 성훈님, 한신님, 동민님 모두 한달 전 보다는 320배 정도는 성장한 것을
지켜볼 수 있었다.
너무 좋은 팀이였어서 서론이 길었지만, 본론을 넘어가 우리팀이 만든 과제에 대해서 소개를 해본다면...
Spring 뉴스피드-프로젝트
👕 팀 소개
- 프로젝트 명 : 맞따라죠 멋따라죠
- 프로젝트 소개 : 맞죠맞죠가 소개하는 로컬 맛집과 명소!
✅ 역할분담
- 팀 과제
- 김한신 - 유저 도메인 설계 및 구현
- 김동민 - 게시글 도메인 설계 및 구현
- 김성훈 - 댓글 도메인 설계 및 구현
- 최준영 - QC 및 인증인가(AccessToken, RefreshToken)
API 📜
ERD 🎆
구현 기능 🚀
- [v] 사용자 인증 기능
- 회원가입 기능
- 새로운 사용자가 ID와 비밀번호의 형태로 서비스에 가입할 수 있어야 합니다.
- 이 때, 비밀번호는 안전하게 암호화되어 저장되어야 합니다!
- 새로운 사용자가 ID와 비밀번호의 형태로 서비스에 가입할 수 있어야 합니다.
- 로그인 및 로그아웃 기능
- 사용자는 자신의 계정으로 서비스에 로그인하고 로그아웃할 수 있어야 합니다.
- 회원가입 기능
- [v] 프로필 관리
- 프로필 수정 기능
- 이름, 한 줄 소개와 같은 기본적인 정보를 볼 수 있어야 하며 수정할 수 있어야 합니다.
- 비밀번호 수정 시에는 비밀번호를 한 번 더 입력받는 과정이 필요합니다.
- 프로필 수정 기능
- [v] 게시물 CRUD 기능
- 게시물 작성, 조회, 수정, 삭제 기능
- 게시물 조회를 제외한 나머지 기능들은 전부 인가(Authorization) 개념이 적용되어야 하며 이는 JWT와 같은 토큰으로 검증이 되어야 할 것입니다.
- 예컨대, 내가 작성한 글을 남이 삭제할 수는 없어야 하고 오로지 본인만 삭제할 수 있어야겠죠?
- 게시물 작성, 수정, 삭제 시 새로고침 기능
- 프론트엔드에서 게시물 작성, 수정 및 삭제를 할 때마다 조회 API를 다시 호출하여 자연스럽게 최신의 게시물 내용을 화면에 보여줄 수 있도록 해야 합니다!
- 게시물 작성, 조회, 수정, 삭제 기능
- [v] 뉴스 피드 기능
- 뉴스 피드 페이지
- 사용자가 다른 사용자의 게시물을 한 눈에 볼 수 있는 뉴스 피드 페이지가 있어야 합니다.
- 뉴스 피드 페이지
- [v] 댓글 CRUD 기능
- 댓글 작성, 조회, 수정, 삭제 기능
- 사용자는 게시물에 댓글을 작성할 수 있고 본인의 댓글은 수정 및 삭제를 할 수 있어야 합니다.
- 또한, 게시물과 마찬가지로 댓글 조회를 제외한 나머지 기능들은 인가(Authorization)개념이 적용되어야 합니다.
- 댓글 작성, 수정, 삭제 시 새로고침 기능
- 프론트엔드에서 댓글 작성, 수정 및 삭제를 할 때마다 조회 API를 다시 호출하여 자연스럽게 최신의 댓글 목록을 화면에 보여줄 수 있도록 해야 합니다!
- 댓글 작성, 조회, 수정, 삭제 기능
- [v] 레디스 환경 구축
- 로그인시 RefreshToken redis key 값 저장
- [v] 좋아요 기능
- 게시물 및 댓글 좋아요/좋아요 취소 기능
- 사용자가 게시물이나 댓글에 좋아요를 남기거나 취소할 수 있어야 합니다.
- 이 때, 본인이 작성한 게시물과 댓글에 좋아요는 남길 수 없도록 해봅니다!
- 게시물 및 댓글 좋아요/좋아요 취소 기능
진행하면서 어려웠던 부분 🤑
일단 저는 RefreshToken을 생성해 Redis에 넣는 방식을 구축하는 과정이 이번 팀과제에 고난이도 문제였던 것 같다.
Redis에 넣었을 때 토큰 타입을 같이 넣어서 Redis가 값을 제대로 인식 못하는 과정도 만났으며, RedisTemplate을 사용하지 않고
JPA를 사용해 구성도 해보았지만, 키 값이 두개가 들어가는 현상을 볼 수 있었다. 패키지 구조의 통일성을 가지고 싶어서 JPA로
구성하는 방법을 욕심을 내보려했지만, Hash값이 강제되는 상황에서는 한계가 존재하다고 생각해 RedisTemplate를 사용해 활용했다.
다른 팀원분들은 연관관계를 생각하는 부분이 익숙치 않아서 어려웠다고 말씀해주셨다.
이 부분은 해당 부분 강의를 복습해보면서 궁금증을 해소해보면서 이를 해결하였다.
느낀점 🤔
이번 팀과제는 지난 개인과제와 난이도는 비슷하다고 생각한다. 나를 포함해서 팀원 모두가 지난 개인과제에서 구현하지 못한 부분을
이번 팀과제에 같이 녹여낼 수 있어서 서로가 성장할 수 있었던 시간이었던 것 같다.
마지막으로 이 말은 지긋지긋하게 팀원 분들에게 언급을 했지만 이 글을 다시 읽게 되면서 다시 한번 리마인드해보는 시간을 가지면 좋을 것 같다.
우리가 개발 혹은 서버를 실행하면서 발생하는 에러 같은 경우는 경험치가 있는 몬스터라고 생각을 하고, 이를 스스로 해결한다면
100%의 경험치를 획득한다고 생각합니다! 이를 혼자서 해결하지는 못하고 이를 고민해보고 튜터님 혹은 주변 동료들에게 조언을 구한다면 50%의 경험치를 흭득한다고 생각하고, 고민하지않고 바로 에러에 대해서 조언을 구하러 간다면 그 해당 문제에 대한 경험치를 하나도 얻지 못한다고 생각한다.
** 이 부분 정말 정말 꼭꼭 한번더 리마인드 하시면 좋을 것 같습니다!! **
우리 4명이 앞으로 같은 팀을 하지는 못하지만 서로가 배웠던 개발지식을 다른 팀원분들에게 공유하고 스스로가 에러를 해결하는 멋지 팀원으로 성장할 수 있을 거라고 믿어 의심치 않습니다!
다들 모두 고생많으셨습니다! 꼭 만나서 뵙겠습니다!
한 없이 말 많은 막내였지만, 한달동안 저의 말에 경청해주셔서 감사합니다 😊
'회고' 카테고리의 다른 글
[내일배움캠프] ✏️ 팀프로젝트 회고록 (프로그래밍 기초 주차) (0) | 2023.10.30 |
---|---|
[내일배움캠프] ✏️ 미니프로젝트 회고록 (0) | 2023.10.12 |