그동안의 미션들로 여러분들은 Spring을 사용해 기본적인 API를 구현하는 능력을 기를 수 있었어요.
이제 인스타그램 클론코딩을 통해 실제 서비스를 개발하기 위해 문서 설계부터 배포까지 경험해보는 시간을 가질꺼에요. 단순히 API를 개발하는 것이 아닌 작성한 코드에 대해 테스트 코드를 작성하고 배포 파이프라인을 구축하는 등 많은 고민 포인트가 있을 거에요.
처음 마주하는 문제가 많을 것이고 모르는 내용이 많이 나올 것이라고 생각해요. 하지만 너무 많은 자료들이 이미 있습니다. 모르는 내용이 나왔을때 이를 해결하는 능력 또한 기대하고 있어요.
구현해야할 내용이 정말 많아요. 아마도 4주동안 꽤 많은 시간을 쏟지 않는다면 어려울 수 있어요. 디스코드 Q&A 게시판을 적극적으로 이용해주세요.
이번 미션의 성장 포인트는 다음과 같아요.
- Convetion을 지키며 개발할 수 있다.
- 가독성 있는 클린 코드를 작성할 수 있다.
- 요구사항을 파악하여 프로덕트 서버를 개발할 수 있다.
- 테스트 코드를 통해 구현한 API를 테스트할 수 있다.
- 인증 기능을 구현할 수 있다.
- S3를 사용해 이미지를 저장할 수 있다.
- CI/CD 파이프라인을 통해 자동 배포를 적용할 수 있다.
- AWS 등 클라우드를 이용하여 자신의 서버를 배포할 수 있다.
- 회원가입
- 로그인
- 글 생성
- 태그나 장소 같은 것은 선택적으로 하셔도 됩니다. 이미지와 텍스트만 api에 넣으셔도 괜찮아요.
- 이미지를 올릴 수 있어야해요. 10장 제약조건은 많으니 한장만 올릴 수 있게해도 상관 없습니다.
- 글 수정
- 글 삭제
- 댓글 생성
- 댓글 수정
- 댓글 삭제
- 답글 생성
- 답글의 Depth는 1이에요
- 답글 수정
- 답글 삭제
- 피드 조회
- 피드에 조회되는 게시글들은 내가 팔로우 한 사람이에요
- 좋아요 기능을 구현했다면 내가 좋아요 누른글은 따로 표시를 해주세요.
- 좋아요 누르기
- 좋아요는 고려해야할 점이 많습니다. 이왕이면 마지막에 구현하시는것을 추천드려요.
- 시간이 애매하다면 좋아요 기능을 구현하는 것보다는 테스트코드에 신경써보아요.
- 좋아요 취소
- 회원 가입
- 회원 탈퇴
- 프로필 조회
- 프로필 수정
- 프로필 수정을 할때 프로필 사진을 등록할 수 있어야해요
- 팔로우
- 팔로우 취소
- Commit Convetion을 지켜주세요.
- 하나의 커밋에 여러 타입이 존재하는 경우 상위 우선순위의 타입을 사용한다.
- fix: 버스 픽스
- feat: 새로운 기능 추가
- refactor: 리팩토링 (버그픽스나 기능추가없는 코드변화)
- docs: 문서만 변경
- style: 코드의 의미가 변경 안 되는 경우 (띄어쓰기, 포맷팅, 줄바꿈 등)
- test: 테스트코드 추가/수정
- chore: 빌드 테스트 업데이트, 패키지 매니저를 설정하는 경우 (프로덕션 코드 변경 X)
- Code Convention을 지켜주세요.
- 네이버 핵데이 컨벤션을 사용할께요.
- 출처: https://naver.github.io/hackday-conventions-java/
- 클린코드 규칙을 지켜주세요
- 객체 생성에도 유의미한 이름을 사용하라
- 비즈니스 로직을 담는 변수명을 사용하라
- 메소드는 가급적 하나의 역할만 해야한다
- for문 사용 금지(java8 이후로 제공되는 stream 메소드만을 사용)
- if문 중첩 금지(한 메소드에서 오직 한 단계의 들여쓰기만을 허용)
- else문을 사용하지 않는다(early return 적용)
- 의미를 파악하기 어려운 숫자를 사용하지 않는다(매직 넘버 사용)
- 한 줄에 120까지만 허용한다(그 이상 줄바꿈 필요)
- whitelist에 등록되어야할 API 목록
- 회원가입, 로그인, 프로필 조회는 별도의 인증 없이 누구나 접근할 수 있어야합니다.
- https://documenter.getpostman.com/view/29836884/2s9YytgfkS
- http://localhost:8080/swagger-ui/index.html#/
- 회원가입
- 로그인
- JWT 방식
- 글 생성
- 이미지를 올릴 수 있어야해요. 10장 제약조건은 많으니 한장만 올릴 수 있게해도 상관 없습니다.
- 글 수정
- 글 삭제
- 댓글 생성
- 댓글 수정
- 댓글 삭제
- 답글 생성
- 답글의 Depth는 1
- 답글 수정
- 답글 삭제
- 피드 조회
- 피드에 조회되는 게시글들은 내가 팔로우 한 사람이에요
- 회원 가입
- 회원 탈퇴
- 프로필 조회
- 프로필 수정
- 프로필 수정을 할때 프로필 사진을 등록할 수 있어야해요
- 팔로우
- 팔로우 취소
- S3를 통한 사진 업로드
- Swagger
좋아요 기능을 제외 범위내 기능 구현하였습니다.
- 프로젝트를 늦게 시작하여 1주일 동안 달려온 만큼 부족한 부분이 많습니다. CI/CD 파이프라인 구축을 통한 배포 자동화와 jacoco를 사용하고 싶었지만 에러를 많이 접하여 시간상 구현을 못하여 개인적으로 많이 아쉽습니다. 코드의 품질도 신경쓰지 못한 것 같아 늦게 시작한 자신이 원망스러웠습니다.. 비록 마감일이 되어 제출하지만 후에 혼자서 인스타그램 프로젝트를 마무리 짓고싶습니다.