전체 프로젝트 구성도
"스프링 부트와 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 도입을 고려한다
'#Project > L.E.Assemble' 카테고리의 다른 글
[L.E.Assemble] nginx 로드밸런싱 적용과 배포 스크립트 수정 (0) | 2021.09.28 |
---|---|
[L.E.Assemble] 소셜 로그인 (카카오, 구글) (0) | 2021.09.28 |