도입 배경현재 Spring boot 프로젝트에 WAS(내장 톰캣)을 웹 서버로 사용 중이다. WAS(내장 톰캣)가 웹 서버의 역할까지 할 수 있지만, WAS는 비즈니스 로직만을 처리하고, 정적 리소스를 보여주는 부분은 Nginx가 담당하게 하여 WAS의 부하를 줄일 수 있도록 변경하려고 한다. 또한 Spring Boot 서버가 정상 작동하지 않을 경우, Nginx를 통해 사용자에게 에러 페이지를 표시함으로써 사용자 경험을 개선할 수 있을 것이다. 또한, 현재 SSL/TLS 인증서가 Spring boot에 직접 의존하고 있다. Nginx에 SSL 인증서 관리를 맡김으로써 WAS의 책임을 줄이고, 보안을 강화하고자 한다. 1. Docker Nginx 설치Nginx 이미지를 pull 해오고, 이미지가 잘 받아..
개인 프로젝트
도입 배경예전에 Spring boot를 공부하며 만들었었던 암호화폐 모의투자 개인 프로젝트는 배포를 수동으로 진행 중이다. 프로젝트에 수정이 있을 때마다 빌드 & 배포 과정을 수동으로 진행하는 것에 시간이 지속적으로 투자된다. 이 과정을 자동화하여 빌드 & 배포에 소요되는 시간을 줄여서 효율적으로 개발할 수 있도록 개선해 보자. 기존 배포 방식빌드부터 배포까지 직접 수동으로 진행. 프로젝트가 잦은 수정이 있다면 이 과정을 계속 반복해야 한다. 비효율적이라고 할 수 있다.로컬 IntelliJ 에서 개발github 레포지토리에 push오라클 클라우드(Ubuntu) ssh 접속레포지토리 git clone 후 gradle 사용하여 직접 빌드빌드 후 jar 파일 -> Dockerfile 기반으로 도커 이미지 생성..
인프라 개선현재 Spring boot는 도커에서 실행되고 있지 않다. MySQL만 도커로 실행 중이고, Spring boot 서버는 서버 로컬에서 직접 jar 파일로 실행해 둔 상태이다. 배포 서버(오라클 클라우드)가 프리티어 이기 때문에 추후에 클라우드 플랫폼 자체를 변경할 가능성이 있음. 추후에 이식성, 확장성, 일관성 등을 고려하여 서버 클라우드 플랫폼을 다른 곳으로 변경하더라도 쉽게 옮길 수 있도록 도커로 실행하는 것으로 변경하겠다. 📌 MySQL 컨테이너 데이터 보존 필요현재 도커로 실행중인 MySQL이 볼륨 설정이 되어있지 않다. 이는 컨테이너가 삭제되면 내부에 데이터들이 모두 날아간다는 의미이다. 호스트 서버에 MySQL 데이터가 저장될 수 있도록 마운트 설정을 추가해야 한다. 이미 실행..