1. 프로젝트 개요
- 스파르타 코딩클럽 내일 배움 캠프 Spring_3기 숙련 2주 차 팀프로젝트 과제
- newsfeed 아이디어를 통한 서비스를 구상하여 각 포스트에 대하여 생성, 조회, 수정, 삭제 및 댓글 생성, 수정, 삭제와 좋아요, 팔로우 기능 등을 할 수 있다.
- JPA, Spring Boot로 서비스 구현
2. 프로젝트 요구 명세서
필수 구현 기능
- [ ] 사용자 인증 기능
- 회원가입 기능
- 새로운 사용자가 ID와 비밀번호의 형태로 서비스에 가입할 수 있어야 합니다.
- 이때, 비밀번호는 안전하게 암호화되어 저장되어야 합니다!
- 새로운 사용자가 ID와 비밀번호의 형태로 서비스에 가입할 수 있어야 합니다.
- 로그인 및 로그아웃 기능
- 사용자는 자신의 계정으로 서비스에 로그인하고 로그아웃할 수 있어야 합니다.
- 회원가입 기능
- [ ] 프로필 관리
- 프로필 수정 기능
- 이름, 한 줄 소개와 같은 기본적인 정보를 볼 수 있어야 하며 수정할 수 있어야 합니다.
- 비밀번호 수정 시에는 비밀번호를 한 번 더 입력받는 과정이 필요합니다.
- 프로필 수정 기능
- [ ] 게시물 CRUD 기능
- 게시물 작성, 조회, 수정, 삭제 기능
- 게시물 조회를 제외한 나머지 기능들은 전부 인가(Authorization) 개념이 적용되어야 하며 이는 JWT와 같은 토큰으로 검증이 되어야 할 것입니다.
- 예컨대, 내가 작성한 글을 남이 삭제할 수는 없어야 하고 오로지 본인만 삭제할 수 있어야겠죠?
- 게시물 작성, 수정, 삭제 시 새로고침 기능
- 프런트엔드에서 게시물 작성, 수정 및 삭제를 할 때마다 조회 API를 다시 호출하여 자연스럽게 최신의 게시물 내용을 화면에 보여줄 수 있도록 해야 합니다!
- 게시물 작성, 조회, 수정, 삭제 기능
- [ ] 뉴스 피드 기능
- 뉴스 피드 페이지
- 사용자가 다른 사용자의 게시물을 한눈에 볼 수 있는 뉴스 피드 페이지가 있어야 합니다.
- 뉴스 피드 페이지
추가 구현 기능
- [ ] 댓글 CRUD 기능
- 댓글 작성, 조회, 수정, 삭제 기능
- 사용자는 게시물에 댓글을 작성할 수 있고 본인의 댓글은 수정 및 삭제를 할 수 있어야 합니다.
- 또한, 게시물과 마찬가지로 댓글 조회를 제외한 나머지 기능들은 인가(Authorization) 개념이 적용되어야 합니다.
- 댓글 작성, 수정, 삭제 시 새로고침 기능
- 프런트엔드에서 댓글 작성, 수정 및 삭제를 할 때마다 조회 API를 다시 호출하여 자연스럽게 최신의 댓글 목록을 화면에 보여줄 수 있도록 해야 합니다!
- 댓글 작성, 조회, 수정, 삭제 기능
- [ ] 이메일 가입 및 인증 기능
- 이메일 가입 시 이메일 인증 기능을 포함하는 것이 좋습니다.
- [ ] 좋아요 기능
- 게시물 및 댓글 좋아요/좋아요 취소 기능
- 사용자가 게시물이나 댓글에 좋아요를 남기거나 취소할 수 있어야 합니다.
- 이때, 본인이 작성한 게시물과 댓글에 좋아요는 남길 수 없도록 해봅니다!
- 게시물 및 댓글 좋아요/좋아요 취소 기능
- [ ] 프런트엔드 만들어보기
- 백엔드에서 제공하는 API를 통해 서버와 통신하는 프런트엔드를 구현합니다.
- 와이어프레임에 나온 명세를 최대한 구현해 보면 금상첨화겠죠?
- 웹개발 종합반에서 배웠던 부트스트랩을 활용해 봐도 좋아요~
3. 개발 인원
- 3명
4. 개발 기간
- 개발 시작 일자: 2023년 11월 21일
- 개발 완료 일자: 2023년 11월 27일
5. 개발 언어
- Java
- OpenJDK version 17.0.8.1
- Spring Boot 3.1.5
- mysql 8.0.28
6. 개발 툴 및 환경
- 개발 툴: Intellij, MySQL Workbench, Redis Insight
- 환경: AWS EC2, RDS(MySQL/Aurora), S3, Code Deploy, Redis
7. 프로젝트 소개 및 목표
프로젝트 소개
- 좋아하는 블로그를 서로 소개하고 공유하는 플랫폼
- 사용자의 니즈를 파악하여 정보를 제공하는 블로그 뉴스피드
프로젝트 목표
- 프로젝트 진행 시 단순 기능구현뿐만 아니라, 협업을 위한 깃 컨벤션과 코드스타일을 정하고, 코드의 재사용성 및 확장성을 고려하여 구현하는 것을 목표로 개발
- 팀원 간 적절한 논의를 통해 더 나은 구조로 개발할 수 있도록 노력함
- 개발하면서 서로 알게 된 정보들을 공유하며 함께 성장할 수 있는 시간을 경험
8. 프로젝트 진행 및 고찰
아래의 URL들은 프로젝트를 진행하면서 그날의 진행정도와 마주쳤던 에러와 그날의 고찰을 작성한 블로그이다.
첫날 아이디어 도출과 ERD, API명세서, 와이어 프레임을 작성하면서 프로젝트를 진행했고 첫날은 이것으로 마무리했다. 직접 하나하나 생각하면서 만들다 보니 쉬운 일은 아니었다. 특히 ERD는 거의 미리 코드 짜는 거와 다름이 없었다.
https://developer-backend.tistory.com/39
설계한 ERD에 맞춰서 초기 기본틀을 만들었고 Entity 연관관계를 신중하게 생각하면서 코드를 작성했지만 이후에 추가를 하면서 문제가 생겨 여러 차래 수정하는 시간을 가졌다. 지금 와서 생각해 보면 틀을 잡는 건 어렵지만 결국 언제 가는 수정하는 일이 생겼고 처음부터 완벽하게 짤 수 없기 때문에 구조가 보이는 만큼 짜는 것이 최선이었다. 또한 CRUD를 구성하면서 여러 에러도 마주쳤고, 특히 강의에서만 보던 순환참조를 마주치는 사건도 발생했다. 그래서 보이는 만큼 짜고 수정을 빠르게 하는 것이 좋다고 느꼈다.
https://developer-backend.tistory.com/41
https://developer-backend.tistory.com/42
https://developer-backend.tistory.com/43
프로젝트를 진행하면서 처음 도전해 보는 부분도 있었다. 바로 AWS s3에 파일을 저장하는 기능을 구현하는 것이었다. 처음부터 끝까지 순탄하게 코드를 작성하지 못했지만 다 짜고 나서 막상 테스트를 하는 과정에서 수정하는 시간이 더 많이 걸렸고, 그 과정에서 코드로도 해결 못하는 문제도 마주쳤다. 문제는 잘 해결했지만 에러 메시지를 읽고도 문제가 해결이 안 된다면 세팅을 한번 점검하는 경험을 가졌다. 내 세팅은 틀린 게 없다는 생각은 버려야 된다.
추가로 CRUD에서 Update를 할 때는 Entity 연관관계를 잘 파악하고 Service를 구현해야 코드 짜는 시간을 줄일 수 있는 경험도 했다.
https://developer-backend.tistory.com/45
9. 느낀 점
이번 프로젝트는 여태 진행한 프로젝트를 거름 삼아 진행했던 프로젝트여서 많이 성장했다고 생각했고 무리 없이 완성할 수 있을 거라고 생각했다 하지만 내 생각과 다르게 성장은 이 프로젝트를 진행하기에 조금 모잘랐다. 그 모자란 성장을 채우기 위해 일주일 아침 9시부터 새벽까지 코드를 작성하고 테스트하고 수정하고를 반복하며 메꿔갔다. 경험을 메꿔가면서 늘 짜던 CRUD도 다시 한번 보게 됐고 더 높은 영역의 Entity 관계 난이도를 접했다. 또한 새로운 기능에 도전하면서 모르는 것도 공부해 가면서 구현에 성공했다. 한 단계 성장했을지 몰라도 한걸음은 성장했다고 느낀 프로젝트였다.
10. GitHub URL
https://github.com/BOM-A-3/blog-news-feed
11 YouTube URL
https://www.youtube.com/watch?v=78J3k3A5RYs
'프로젝트' 카테고리의 다른 글
Spring 백오피스 프로젝트 KPT 회고 (0) | 2023.12.15 |
---|---|
Spring 백오피스 project (0) | 2023.12.15 |
Spring newsfeed team project -KPT회고 (0) | 2023.11.27 |
Spring ToDo project (0) | 2023.11.21 |
Spring Board project (0) | 2023.11.06 |