https://github.com/dadadamarine/DailyNotificationServer

위 프로젝트를 진행하면서 적용할 수 있는 기술들을 나열하였고, 이에 대해 차근차근 학습해가면서 프로젝트를 진행한다.

관련기술은 크게

  1. 배포자동화 : 도커, 젠킨스, Nginx
  2. Spring Framework
  3. Spring Batch
  4. git-flow
  5. 모니터링 ( 개인적으로 꼭 해보고싶다 )
  6. Push Server 등이 있다.

단계

CI학습 및 CI 환경 구축

  • Jenkins를 통한 빌드,테스트 자동화
  • Jenkins + nginx 를 통한 무중단 배포

스테이징 서버

여러개의 서버를 갖기 부담이되는 환경 등의 이유로 스테이지 서버를 따로 두지 않고, 로컬 개발환경을 프로덕션 환경과 유사하게 가져감으로써 스테이지 서버의 부재를 보완한다. 또한 nginx를 통해 프로덕션 환경에서 에러가 발생하더라도 다른 서버를 바로 띄울 수 있기 때문에 제한된 환경속에서 최적의 CI방법으로 판단된다.

Docker 컨테이너

Docker 컨테이너로 로컬과 서버의 환경을 똑같게 구성하여 배포 하는 방식이 있으나, 도커 컨테이너를 통한 서비스는 많은 서버를 생성할때 필요한 방식이므로 이 프로젝트에서는 적합하지 않다고 판단된다. 다만 현 프로젝트에서 따로 db서버를 두지 않는다. 대신 한 서버에서 도커 컨테이너로 된 db서버와, 어플리케이션 서버를 같이 구동하도록한다.

DB분석 및 선정