개발 환경
개발 도구 : intellij IDEA Community 2022.1.4
소스코드 관리: GIT
GIT 호스팅 : GITHUB
GIT GUI : sourcetree
이 프로젝트의 목표
- 이해하기 쉬운 소재로 명확한 기능 요구사항을 만든다
- 요구사항을 구현한느데 도움이 되는 문서 작업을 경험한다.
- 자바 + 스프링 부트로 프로젝트 요구사항을 실제로 구현하는 기술적인 방법을 익힌다
- 기술을 하용해 보면서 기술 동향을 파악하고, 새로운 문제와 해결 방법을 확인한다
- 기획과 문서 작성부터 개발, 형상관리, 테스트, 배포까지 개발 프로세스 전반을 경험한다
문서 작업
원활한 협업의 초석!
- 문서를 통해 개발할 프로젝트의 목적, 내용, 진행상황을 공유(왜 하는지가 정말 중요하다)
- 무엇을, 어떻게: 업무의 가이드. 동료의 생산성을 높여줌
- 왜??? : 함께 움직이는 원동력, 동료가 더 나은 방법을 제안하거나 내 생각의 오류를 잡아줌
- 내용이 구체적일수록, 동료들의 프로젝트 개발 내용이 잘 동기화되고 진행이 막히지 않음
- 단, 과도한 정보의 범람, 업데이트 되지않은 잘못된 정보들이 혼란을 줄 수 있는 상황을 피하기 위해서 주기적으로 업데이트를 해줘야한다.
- 백업이 용이하다 : 문서는 지나간 일을 다시 꺼내야 할 때 쉽게 찾을 수 있도록 도와줌
- 기억은 짧고 왜곡되지마, 문서는 수정 가능하고 발전하며 오래감
- 업무 기록을 남김으로써 업무 진척 상황과 내 성과가 잘 드러남
그래서 무슨 문서 작업을 할 것이냐?
- diagrams.net : 도메인과 ERD 설계, 유즈 케이스
- 구글 시트 : API 디자인
- 깃 + 깃헙 : 커밋 메시지 작성, 프로젝트 관리 및 협업 환경 꾸미기
개발을 왜함? - 고객의 문제를 해결
- 고객의 니즈와 문제를 정리
- 고객이 원치 않거나 고객의 문제를 해결해줄 수 없는 개발은 의미가 없음
- 공부가 목표 - 이 부분에서 다소 자유롭게( 실패 해도 누가 안죽임 )
- 문제 -> 요구사항 -> 기능(feature)도출 -> 구현 방안의 기획 -> 개발 계획수립 -> 실행
- 위에서 작성한 과정을 공부하고 연습한다
- 제약사항: 강의 프로젝트이니까, 기술 스택이 어느정도 정해져 있다
- 제약 == 집중과 효율
- 가능한 한 최신 버전의 기술을 사용한다.
- 최신 동향 파악
- 아직 밝혀지지 않은 이슈를 직접 경험 -> 해결 방법 찾기 -> 할 수 있다면 해결 까지
무슨 개발 작업을 할거냐?
- IDE: intellij IDEA 2022.1.4(Community Edition)
- 현업에서 Ultimate Edition 라이선스를 구매하여 지급해 주므로 가능하면 Ultimate Edition 사서 하는 것이 좋다.
- 언어 : java
- 프레임 워크 spring boot
- 빌드 도구: gradle
- git GUI : GitKraken
각종 개발전략과 도메인 설계, 실무디자인 패턴, 비즈니스 로직의 구현을 경험한다.
설치해놓으면 좋은 인텔리제이 플러그인
-CamelCase - 카멜케이스 변환 플러그인
-GitToolBox - 파일에서 원하는 라인을 클릭 하면 옆쪽에 마지막 수정자, 수정일시 ,커밋내역이 표시된다
-JPA Buddy - 코드 인스펙션으로 JPA 관련 코드 검사
-Key Promoter X - 인텔리제이의 모든 동작들의 단축키를 실시간으로 표시
-Presentation Assistant - 누른 단축키 보여주기
-ideolog - '.log' 파일의 대화형 뷰어
-Spring Boot Assistant - 스프링 부트 자동완성
-Atom Material Icons - 아이콘 변경
-Grep Console - 로그 레벨(log level)에 따라서 다른 백그라운드 색으로 설정을 해서 로그레벨을 인지
-One Dark theme - 어두운 테마 바꾸기
테스트와 배포
고객에게 제품을 보여주고 성과를 확인하는 순간
- 테스트
- 개발 요구사항이 빠짐없이 모두 구현되어있는가(일이 끝났는가)
- 구현된 요구사항이 오류 없이 동작하는가 ( 일이 잘 끝났는가)
- 배포
- 깃헙 릴리즈 작성
이 프로젝트에서 해볼 테스트/배포
- 테스트
- JUnit
- 각종 테스트 라이브러리(Mockito,AssertJ)
- 스프린 부트 슬라이스 테스트 테크닉
- 깃헙: 테스트 / 빌드 자동화
- 배포
- 클라우드 서버에 배포(헤로쿠)