패스트캠퍼스의 10개 프로젝트로 완성하는 백엔드 개발(Java/Spring) 초격차 패키지 Online) 강의를 수강하며 만든 프로젝트입니다.
- Part 1. 나만의 MVC 프레임워크 만들기
- Part 2. 게시판 서비스
- Part 3. 게시판 서비스 고도화
- Part 4. 어드민 서비스
- Part 5. PT 이용권 관리 서비스
- Part 6. IT 서비스 회사에서 사용하는 진짜 프로젝트 맛보기
- Part 7. 약국 길찾기 서비스
패스트 캠퍼스 강의 인 '10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online.' 을 수강하며 학습한 내용을 정리한 Repository 입니다.
패스트캠퍼스의 10개 프로젝트로 완성하는 백엔드 개발(Java/Spring) 초격차 패키지 Online) 강의를 수강하며 만든 프로젝트입니다.
깃헙 프로젝트를 셋팅하고, 카드를 만들어 정리하자.
게시판 서비스 뷰를 만들기 위해 해야 할 일을 정리하고, 실행한다.
대댓글 기능을 위한 도메인 정보를 업데이트 한다.
ArticleComment
에 parentCommentId
추가깃헙 프로젝트를 정리하고, 유즈케이스를 업데이트한다.
어드민 프로젝트에서 게시판 API에 원활하게 접근할 수 있도록 세팅을 추가한다.
data rest 로 오픈할 데이터 api 설정을 확인해서 원활히 어드민 프로젝트가 이용할 수 있게 한다.
API를 만든다.
use case diagram 을 그린다.
깃 브랜치 전략을 잡아보자
Hashicorp의 Vault가 무엇인지 간단히 살펴보자.
대댓글은 n단계 달 수 있도록 한다.
게시판 정렬 기능을 구현한다.
정렬 기능은 게시판 페이지에서 각 컬럼(제목
, 해시태그
, 작성자
, 작성일
)의 제목을 누르면
해당 값으로 오름차순
, 내림차순
정렬이 되게끔 동작하게 만든다.
게시판 서비스 API 를 Swagger UI 로 문서화한다.
#18 에서 DB 접근 방법을 세팅하고 테스트 만든 내용을 토대로, 남은 구현이 있는지 확인하고 마무리 한다.
DB에 접근하는 비밀 정보를 보다 안전하게 다룰 수 있는 방법으로 환경변수를 사용하는 방법을 익혀본다.
1차 대댓글 기능을 위한 비즈니스 로직을 업데이트한다.
#32 기능을 하다가 도메인 코드 설계가 일부 잘못 되어있는 것을 발견.
UserAccount
회원 계정의 userId
는 회원 id 이므로 유니크해야 하는데,
해당 속성이 빠져있다.
ERD 문서에는 email 의 유니크 키가 표현되지 않음
user_id
에 유니크 키 추가email
ERD 업데이트인증 기능에 카카오 계정으로 로그인하는 방법을 추가한다.
게시판 서비스 뷰가 실제로 동작하게 만들기 위해 해야 할 일을 정리하고, 실행한다.
1차 대댓글에 필요한 쿼리 변경이 있는지 살피고, 업데이트한다.
도메인 설계 내용 (#16)을 바탕으로 DB 와 연동하기 위한 방법을 구상하고, 세팅을 하고, 테스트를 먼저 작성해본다.
인증 기능을 구현한다.
새로운 기능을 구현하기 위해 필요한 데이터를 모델링하고, 기존 도메인(엔티티 클래스)에서 변경할 부분이 있는지 확인한다.
해시태그 기능을 고도화한다.
n차 대댓글 기능은 댓글 단계가 깊어질 수록 디자인이 복잡해져서
유저의 편의를 위해 설계했으나, 오히려 유저의 경험을 해칠 우려가 있다고 판단했다.
또한 런칭 후 관찰해보니, 실제로도 유저 반응이 좋지 않아서 서비스에 내보내기 않기로 논의를 했다.
이에 기능을 롤백한다.
해시태그만을 위한 특별한 검색 페이지를 만들어 본다.
게시판 서비스 첫번째 버전이 완성되었으므로 깃헙에 릴리즈해보기
스프링 부트 프로젝트로 루트 디렉터리를 초기화하고, 개발 바탕을 만든다.
본격적으로 어드민 서비스를 개발하기 위해서 할 일을 깃헙 프로젝트와 이슈로 정리하고,
개발을 시작할 준비를 마친다.
1차 대댓글 기능을 사용할 수 있도록 뷰를 업데이트한다.
게시판 서비스에 필요한 페이징 기능을 구현한다.
스프링 데이터 JPA로 엔티티를 다룰 때, 엔티티 데이터는 하이버네이트 구현체가 만든 프록시 객체를 이용하여 지연 로딩될 수 있다.
따라서 엔티티를 조회할 때 필드에 직접 접근하면 id == null 인 상황이 있을 수 있고, 이러면 올바른 비교를 하지 못 하게 된다.
getter를 사용하면 이러한 문제를 예방할 수 있다.
수정해보자.
DB를 마이그레이션
게시글에 댓글 기능을 구현한다.
회원 계정 정보가 담긴 엔티티를 저장할 때,
Spring Data JPA 의 getReferenceById()를 부드럽게 사용하기 위해
회원 계정의 PK를 변경한다.
어드민 프로젝트에서 회원 정보를 관리(삭제)할 때, 게시글과 댓글에 얽매이지 않은 계정이 필요하다.
이를 위한 테스트 계정을 임의로 하나 추가해주기로 함.
게시판에서 게시글을 검색하는 기능을 구현하고, 검색 기능을 보다 특별하게 이용자에게 제공할 수 있는 방법을 고민해 본다.
게시판 서비스를 만들기 위한 기본 도메인을 설계해보자.
Hashicorp Vault 와 스프링을 연동하는 방법을 익히고 프로젝트에 적용해본다.
클라우드 서비스인 Heroku를 사용하여 만든 서비스를 배포하여 사용해봅니다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.