- MSA (Microservices Architecture): 서비스를 작은, 독립적인 부분으로 분리하여 각각을 독립적으로 배포 및 확장 가능하게 만드는 아키텍처 패턴입니다. 각 서버를 따로 배포합니다.
- DDD (Domain-Driven Design): 소프트웨어의 복잡성을 관리하기 위해 모델을 중심으로 설계하는 방법론입니다. (마이크로서비스 설계에 있어 중요한 기준을 제공)
- GitLab: 소스 코드 관리(SCM)와 CI/CD 도구를 제공하는 플랫폼입니다. Git 리포지토리 관리와 함께 파이프라인의 자동화를 지원합니다.
- Jenkins: 자동화 서버로, 다양한 플러그인을 통해 빌드, 테스트, 배포 등의 과정을 자동화하는데 사용됩니다. git lab에서 clone하여 이를 빌드하고, 커밋마다 테스트 후 docker hub로 전송합니다.
- EC2 (Amazon Elastic Compute Cloud): AWS에서 제공하는 확장 가능한 컴퓨팅 용량으로, 애플리케이션 서버를 호스팅하는 데 사용될 수 있습니다. 하나의 컴퓨터
- Docker: 애플리케이션을 컨테이너화하여 의존성과 환경 설정을 일관되게 유지할 수 있도록 합니다. Spring은 jar 파일 생성후 이미지에 넣습니다.
- Docker Hub: Docker 이미지를 저장하는 레지스트리 서비스로, 이미지를 공유하고 관리할 수 있습니다. deploy를 보내거나 실행중, 중단… 확인 가능합니다.
- Nginx: 웹 서버, 리버스 프록시, 로드 밸런서 등 다양한 역할을 수행할 수 있는 소프트웨어입니다.
- 리버스 프록시 : 클라이언트의 요청을 받아서 하나 이상의 서버로 전달하고, 서버로부터 응답을 받아 클라이언트에게 전달하는 서버입니다.

nginx로 jenkins를 라우팅 할 생각
만약 cdn 서버를 따로 쓴다면 nginx를 통해서 관리할 생각
아니면 S3로 관리해도 됨
이것도 nginx를 통해서 관리 가능
리버스 프록시