순서
- 서비스 기획
- 기능분석 및 설계
- 구현
- 빌드
- 배포
- 운영
기획 및 설계
기능분석 및 설계
- 지원 플랫폼 : 웹, 아이폰, 안드로이드
- 개발언어 : JAVA
- 개발도구 : IntelliJ
- 빌드도구 : Gradle or Maven
- 개발플랫폼 : 스프링 부트
- 운영플랫폼 : AWS
- 필요한 기능 : ~
- 소스버전 관리 시스템 : Git with Github
- 빌드 배포 시스템 : Jenkins / AWS code deploy
- 로그 수집
- 메일 발송 : Mail Chimp, SendGrid
- 앱 푸시 : AWS SNS, FireBase..
- 문자 반솔 : SMS, 알림톡
- 개발 환경 : local, test, dev, beta, pord
- 데이터베이스 : MariaDB
도메인(모델) 설계
- 판매상품은 책이다.
- 책은 유형별로 관리되야 한다.
- 책은 작가가 출판사를 통해 출간한다.
- 책은 서비스 관리자가 등록한다.
- 고객이 책을 주문한다
- 판매상품(Item)은 책(Book)이다.
- 책은 유형(Category)별로 관리되야 한다.
- 책은 작가(Author)가 출판사(Publisher)를 통해 출간한다.
- 책은 서비스 관리자(Administrator)가 등록한다.
- 고객(Customer)이 책을 주문(Order)한다.
- ...
개발방법론 - 애자일(Agile)
잦은 Release가 필요한 이유
- 프로토타이핑이라도 동작하는 것을 보여주어야,
기획자와 사용자가 무엇을 원하는지 명확히 확인하고 이른 시기에 수정하여 개발 비용을 줄일 수 있음
구현 및 빌드
소스코드 관리 (SCM, Source Code Management)
Git
- 리누즈 토발즈가 리눅스 소스코드 관리를 위해 만듬
- Git != Github
- Git은 소스코드 버전관리 시스템
- Github는 원격 저장소 및 개발 지원 플랫폼
- 5명 이하의 작은 규모인 경우 BitBucket 사용
프로젝트 모듈 구성
- common: 프로젝트에서 공통으로 사용하는 유틸리티, 예외 (Exception) 등
- core: 프로젝트 도메인(@Entity, @Repository)
- api: 외부에 정보를 제공하는 REST API 모듈
- admin: 서비스를 관리하기 위한 백오피스
- batch: 정기적으로 실행될 배치 프로그램 모음
- message: 알림톡, SMS, 메일 발송 등 담당
gitignore.io
https://www.toptal.com/developers/gitignore
gitignore.io
Create useful .gitignore files for your project
www.toptal.com
- 깃에 저장하지 않을 파일을 지정(.gitignore)
- java, gradle, idea, eclipse 정도면 적당
프로젝트 구성 시 필수조건
- README를 작성하자
- 실행절차를 설명
- 실행절차에 따라 빌드하고 실행되도록 하자
- 커밋 및 푸시는 테스트 및 빌드가 성공되었을 때 하자
- 자식이 작성한 코드가 충돌이 난다면 충돌을 해결하고 ( 지우지 말고 ) 올리자
- 코딩 컴벤션(Convention, 관례)는 팀원과 함께 만들자
- 이미 만들어져 있다면 코드리뷰를 통해 공유하고 적용하자
- One Source Multi Use
- 하나의 배포본 파일을 가지고 여러 곳에서 사용할 수 있어야 한다.
- 스프링 부트는 외부 구성 기능을 통해 이런 방향성을 제공한다.
프로파일 구성
- local : 개발자 로컬 실행환경
- 개발자가 자유롭게 초기화 및 구성을 수행할 수 있다.
- test : 통합 테스트 환경 ( 주로 빌드 전 실행 )
- 테스트 실행 때 마다 초기화된다.
- dev : 개발서버 실행환경
- 운영서버와 동일한 환경을 가지며 개발기능을 확인하는 용도로 사용된다.
- beta : 준 운영서버 실행 환경
- 운영서버와 동일한 환경으로 큰 배포에 앞서 운영서버의 데이터를 복제하여 정상동작 확인
- prod : 운영서버 실행 환경
- 가급적 손대지 않아야 할 환경
application-api.yml
application-datasource.yml
application.yml
배포
CI/CD
- 코드를 푸시하면 배포가 발생
- 기능을 정의하고 이를 관리하기 위한 이슈 발급
- 기능개발 하고 리뷰를 받고 확인이 완료되면 develop 브랜치에 푸시
- 개발서버 배포
- 개발서버에서 기능 확인
- 베타서버 배포
- 베타서버에서 기능관련자 (기획자)의 기능 확인
- develop 브랜치 코드를 master에 머지하고 푸시
- 운영서버 배포
- 운영서버 적용
배포 및 운영 공간
- Cloud Platform
- IDC (Internet Data Center)
개발 시작
기본적인 개발방식은 도메인 계층을 먼저 개발한다.
- @Repository
- @Entity
도메인간 서로 연계되는 부분이 있는 경우 서비스 계층에서 개발
- @Service
- @Transaction 트랜잭션 관리도 이 영역에서
외부에 노출되는 부분은 표현 계층에서 개발
- @Controller, @RestController + @VeiwController
- @RequestMapping
- ModelAndView
'Back-end > Spring Boot' 카테고리의 다른 글
스프링부트 프로젝트 만들기 (0) | 2021.07.12 |
---|---|
스프링 부트 소개 (0) | 2021.07.09 |
스프링 부트 - 배포 및 관리 (0) | 2021.06.16 |
스프링 부트 - 코딩 (0) | 2021.06.15 |
스프링 부트 - 빌드 (0) | 2021.06.15 |