공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.
게시판 서비스 프로젝트
목표
- 누구나 이해하기 쉬운 소재로 명확한 기능 요구사항을 만든다.
- 요구사항 구현을 위한 문서 작업을 경험한다.
- 자바와 스프링 부트로 프로젝트 요구사항을 구현하는 기술을 익힌다.
- 최신 기술을 사용해 기술 동향을 파악하고 문제 해결 방법을 확인한다.
- 기획, 문서 작성, 개발, 형상관리, 테스트, 배포 등 개발 프로세스를 전반적으로 경험한다.
다양한 형태의 문서 작업
- 문서를 통해 프로젝트의 목적, 내용, 진행상황을 공유한다 (특히 이유가 중요)
- 구체적인 업무 가이드를 제공하여 동료의 생산성을 높인다.
- 이유를 공유하여 동료의 제안과 오류 수정을 유도한다.
- 구체적인 내용은 프로젝트 동기화와 진행에 도움을 준다.
- 과도한 정보, 업데이트되지 않은 정보로 인한 혼란에 주의한다.
- 문서는 과거 작업을 쉽게 찾게 도와준다.
- 기억은 왜곡될 수 있지만 문서는 수정 가능하고 발전하며 오래간다.
- 업무 기록은 진척 상황과 성과를 잘 드러낸다.
이 프로젝트에서 해볼 문서 작업
• diagrams.net (구 draw.io): 도메인과 ERD 설계, 유즈케이스
• 구글 시트: API 디자인
• 깃 + 깃헙: 커밋 메시지 작성, 프로젝트 관리 및 협업 환경 꾸미기
개발의 목적 - 고객의 문제를 해결 (+ 하는 과정을 공부)
- 고객의 니즈와 문제를 정리한다.
- 고객의 문제를 해결하지 못하는 개발은 의미가 없다.
- 공부가 목표이므로 실패가 용인된다.
- 문제 -> 요구사항 -> 기능 도출 -> 구현 방안 기획 -> 개발 계획 수립 -> 실행의 과정을 따른다.
- 강의와 함께 모든 과정을 공부하고 연습한다.
- 강의 프로젝트로 기술 스택이 어느 정도 정해져 있다.
- 제약은 집중과 효율을 높인다.
- 가능한 최신 버전의 기술을 사용하여 최신 동향을 파악한다.
- 아직 밝혀지지 않은 이슈를 직접 경험하고 해결 방법을 찾는다.
이 게시판에서 진행할 개발 작업
- IDE: IntelliJ IDEA 2022.1.1 (Ultimate Edition)을 사용한다. (현재 2024.01.04가 최신)
- Community Edition은 스프링 부트 지원 기능이 동작하지 않는다.
- 강의 초점은 Ultimate Edition에 맞춘다.
- 언어: Java 17
- 프레임워크: Spring Boot 2.7.0
- 빌드 도구: Gradle 7.4.1
- Git GUI: GitKraken 사용, git 형상 관리와 브랜치 전략 활용한다.
- 개발 전략, 도메인 설계, 실무 디자인 패턴, 비즈니스 로직 구현을 경험한다.
지난 프로젝트는 Java 11을 사용했고 이번에는 Java 17을 사용한다.
JDK 설정을 쉽게 변환하기 위해 https://eunchaan.tistory.com/52를 참고하자.
강의에서 사용하는 인텔리제이 추가 다운로드 플러그인
(기능)
• CamelCase (3.0.12)
• GitToolBox (212.9.0)
• JPA Buddy (2022.2.4-221)
• Key Promoter X (2022.1.2)
• Presentation Assistant (1.0.9)
• Ideolog (203.0.30.0)
• Spring Boot Assistant (0.14.0)
(색상/테마)
• ANSI Highlighter (1.2.4) -> 이후 유료 플러그인으로 바뀜
• Atom Material Icons (64.0.0)
• Grep Console (12.12.211.6693.0)
• One Dark theme (5.6.0)
테스트와 배포
테스트
- 개발 요구사항이 빠짐없이 모두 구현되었는가 (일이 끝났는가)
- 구현된 요구사항이 오류 없이 동작하는가 (일이 잘 끝났는가)
- JUnit 5.8.2 사용
- Mockito, AssertJ 등 각종 테스트 라이브러리 사용
- 스프링 부트 슬라이스 테스트 테크닉 활용
- 깃헙을 통한 테스트/빌드 자동화
배포
- 깃헙 릴리즈 작성
- 클라우드 서버에 Heroku로 배포
- 최근 보안 이슈로 일부 자동화 기능을 이용하지 못할 수 있음
- Heroku 사용 불가 시 로컬에서 실행
- 깃헙을 통한 Heroku 배포 자동화
필요한 기술 정리
예상하는 세부 기능들
• 게시판, 댓글 도메인의 설계
• 도메인 데이터를 DB 에 저장
• JSON API 로 데이터 제공
• 사용자에게 웹 화면으로 서비스 제공 + 디자인 요소
- 게시판 페이지
- 게시글 페이지
- 로그인 페이지
• 적절한 입출력 데이터의 검증
• 인증 기능
• 생산성에 도움이 되는 도구들 선택
세부 기능으로 부터 예상하는 기술들
- Java + Spring Boot 기반
- 웹 서비스 제공: Spring Web
- 도메인 설계와 DB 저장: Spring Data JPA, H2 Database, MySQL Driver
- JSON API로 데이터 제공: Rest Repositories, Rest Repositories HAL Explorer
- 웹 화면: 서버 사이드 렌더링 접근, 템플릿 엔진: Thymeleaf
- 디자인 요소: Bootstrap 5.2
- 입출력 데이터 검증: Validation
- 인증 기능: Spring Security
- 생산성 도구: Lombok, Spring Boot DevTools, Spring Boot Actuator
https://start.spring.io/ 에서 예상하는 기술들을 아래와 같이 추가하였다.
하단에 EXOLORE를 클릭하면 아래와 같이 어떤 의존성들이 추가되는지 확인할 수 있다.
이번 프로젝트에서는 초기부터 모든 기술을 한꺼번에 추가하지 않고, 각 기능을 개발할 때마다 필요한 기술을 추가한다.
'BackEnd > Project' 카테고리의 다른 글
[Board] Ch01. 깃 브랜치 전략 세우기 (0) | 2024.08.05 |
---|---|
[Board] Ch01. 깃허브 프로젝트 관리 (0) | 2024.08.05 |
[MVC] Ch07. DI 프레임워크 (0) | 2024.08.02 |
[MVC] Ch06. MVC 프레임워크(4) (0) | 2024.08.01 |
[MVC] Ch06. MVC 프레임워크(3) (0) | 2024.08.01 |