최근 Docker를 활용한 이미지 배포와 클라우드 환경에서의 VM 구축 경험을 통해, 인프라 및 미들웨어 설정이 얼마나 간소화되었는지 체감하고 있습니다. 이전보다 훨씬 수월하게 개발 및 배포 환경을 구성할 수 있게 된 덕분에, 이번 프로젝트에서는 **기본 인프라(혹은 인프라 기반)**를 탄탄하게 만든 후, 실제 서비스 구동에 필요한 웹 서비스 환경을 구축해보려고 합니다.
프로젝트 개요
이번 프로젝트의 주요 목표는 다음과 같습니다.
- 인프라 구성:
- GCP 혹은 Azure의 무료 티어를 활용하여 VM을 생성합니다.
- 해당 VM 위에 Docker를 설치해 컨테이너 기반 환경을 구축합니다.
- 서비스 구성:
- Docker 컨테이너 내에서 nginx와 tomcat을 활용해 웹 서비스를 운영합니다.
- 백엔드는 Spring Boot, 프론트엔드는 React를 사용하여 개발합니다.
- CI/CD 파이프라인 구축:
- 개인 GitHub 저장소를 이용해 코드 관리를 하고, 이를 통해 CI(Continuous Integration)를 구성합니다.
- GitLab과 같은 다른 CI 도구도 고려해봤지만, 서버 리소스 사용량이 많아 클라우드 환경에 부적합하다고 판단하여 GitHub 방식으로 진행할 예정입니다.
Docker로 인프라 구축하기
Docker를 도입하면서부터 인프라 관련 설정이 크게 간소화된 것을 느낍니다.
기존에는 직접 VM에 서버 설정을 하고, 필요한 미들웨어를 하나하나 설치하며 시간을 많이 소비했지만, 이제는
Docker 이미지로 배포를 통일하여 빠르고 일관된 환경 구성이 가능해졌습니다.
예를 들어, Nginx와 Tomcat을 각각 컨테이너로 운영한다면, 다음과 같은 장점이 있습니다.
- 일관성:
개발 환경과 운영 환경의 차이를 줄일 수 있습니다. - 유연성:
컨테이너 단위로 손쉽게 배포 및 스케일 아웃할 수 있습니다. - 효율성:
리소스 사용 최적화와 빠른 배포가 가능합니다.
웹 서비스 구현 기술 스택
프로젝트의 서비스 부분은 상대적으로 가장 익숙한 환경인 Spring Boot와 React를 활용할 예정입니다.
이 조합은 백엔드와 프론트엔드 모두 빠르게 개발할 수 있는 강력한 도구임은 물론,
다양한 커뮤니티 자료와 템플릿 덕분에 초반 개발 부담을 줄이는 데 도움이 됩니다.
무료 웹 템플릿, 어디서 구하지?
프론트엔드 쪽은 전문성이 깊지 않기 때문에, 무료로 사용할 수 있는 웹 템플릿 제공 사이트가 있다면 큰 도움이 될 것 같습니다.
우선은, 아래의 사이트를 참고할 예정이고 다음에 무료 리소스 관련 정리를 추가로 하려합니다.
- Start Bootstrap:
Bootstrap 기반의 다양한 무료 템플릿을 제공하여, 빠른 프로토타이핑에 유용합니다. - HTML5 UP:
현대적이고 세련된 디자인의 템플릿들을 무료로 제공합니다. - Colorlib:
여러 가지 카테고리의 무료 HTML 템플릿을 다운로드할 수 있습니다. - FreeHTML5.co:
다양한 레이아웃과 디자인의 템플릿을 무료로 제공합니다.
이 외에도 여러 무료 리소스들이 있으니, 자신의 프로젝트 스타일에 맞는 템플릿을 찾아보시면 좋겠습니다.
CI/CD와 GitHub를 통한 배포 전략
초기에는 GitLab을 통한 CI/CD 구축을 고려했지만, 서버 리소스 사용량이 예상보다 많아 클라우드 환경에 적합하지 않을 수 있다는 판단 하에, 개인 GitHub 저장소를 통해 코드를 관리하고 clone하여 배포하는 방식을 택할 예정입니다.
이 방식은 다음과 같은 이점이 있습니다.
- 경량화:
클라우드 자원의 효율적 사용이 가능합니다. - 유연성:
개인 저장소를 통해 손쉽게 코드 배포 및 버전 관리를 할 수 있습니다. - 확장성:
추후에 필요시 다른 CI/CD 도구로의 전환도 고려할 수 있습니다.
앞으로의 계획
이번 글에서는 전체 프로젝트의 개요와 주요 목표, 그리고 사용 기술 스택에 대해 소개드렸습니다.
앞으로는 각 구성 요소에 대해 더 구체적인 내용과 설정 방법, 배포 전략 등을 하나씩 상세하게 다루는 글들을 연재할 계획입니다.
- 인프라 설정: GCP/Azure의 무료 티어 VM 구축 및 Docker 설치
- 컨테이너 구성: nginx와 tomcat Docker 컨테이너 구성 방법(혹은 Jenkins와 같은 CI도구까지)
- 웹 서비스 개발: Spring Boot와 React를 이용한 기본 서비스 구현
- CI/CD 파이프라인 구축: GitHub를 활용한 자동화 배포 전략
프로젝트 진행 과정에서 얻은 경험과 팁들을 공유하면서, 비슷한 고민을 하고 계신 분들께 도움이 될 수 있기를 바랍니다.
'DevSecOps > 컨테이너(K8s)' 카테고리의 다른 글
도커(Docker) 필수 명령어 정리 (0) | 2025.02.07 |
---|---|
Ubuntu 22.04에 Docker로 GitLab CE 설치 및 root 비밀번호 초기화 (0) | 2025.02.05 |
GCP VM에서 Docker, GitLab 설치 후 리소스 증설 & NAS 자동 마운트 삽질기 (0) | 2025.02.05 |
GCP VM에 Docker 설치하기: 설정하며 배운 팁 (0) | 2025.02.05 |