[L.E.Assemble] Spring Boot 프로젝트 구성
#Project/L.E.Assemble

[L.E.Assemble] Spring Boot 프로젝트 구성

 

 

전체 프로젝트 구성도

 

 

"스프링 부트와 AWS로 혼자 구현하는 웹 서비스" 서적을 참고하여 프로젝트를 구성하였고 필요에 따라 기술을 선택하여 프로젝트에 사용하였다.

 

 

Front-end : Mustache

Back-end : Spring Boot

Server : AWS EC2

 - Reverse proxy : nginx

 - Load Balancing : nginx

CI : Travis CI

CD : AWS S3, AWS CodeDeploy

DB : AWS RDS - Maria DB

Storage : AWS S3

Cache: AWS ElasticSearch redis

 

그 외 도구

Build : Gradle, npm

Testing : JUnit, NGrinder, Postman

Authentication : OAuth2를 통한 구글, 카카오 소셜로그인

 

 

 

기술 선택 이유

✔ Spring Boot 

스프링 부트는 스프링보다 간편하게 프로젝트 설정을 구성할 수 있어 이를 선택하였다

 

 React

평소에 관심이 있던 기술이었고 컴포넌트 단위로 화면을 구성할 수 있는게 매력적이다. 생태계가 넓어서 참고할 자료가 많다. 이를 최대한 활용하여 생산성을 높이고 싶었다. View의 역할에 집중해서 사용할 것이다

 

React 학습 부족으로 mustache 사용

 

 CI

Travis CI와 Jenkins 중 고민했는데 Jenkins는 독립적인 서버 한 대를 추가로 필요로 하여 Travis로 선택하였고, Github와 연동이 너무 편해서 좋았다.

 

 CD

무중단 배포 자동화를 구현하여 서버에 다시 들어가서 빌드하고 배포하고 하는 수고스러움을 덜어주었다.

서비스가 끊기지 않으면서 배포가 가능하다. AWS 끼리 배포가 쉬움

 

서버 확장성을 높이기 위해 Docker 도입을 고려한다

728x90