순서

  1. 서비스 기획
  2. 기능분석 및 설계
  3. 구현
  4. 빌드
  5. 배포
  6. 운영

기획 및 설계

기능분석 및 설계

  • 지원 플랫폼 : 웹, 아이폰, 안드로이드
  • 개발언어 : 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

+ Recent posts