CI/CD 기본 개념
·
Infra/CI CD
현대 소프트웨어 개발에서 코드를 작성하고 배포하는 과정은 매우 복잡하고 반복적입니다. 개발자가 코드를 작성한 후 테스트하고, 다른 개발자의 코드와 통합하고, 최종적으로 실제 서버에 배포하는 모든 과정을 수동으로 진행한다면 많은 시간과 노력이 소모됩니다. CI/CD는 이러한 반복적인 과정을 자동화하여 개발 효율성을 크게 향상시키는 핵심 개념입니다.CI/CD란CI/CD는 Continuous Integration(지속적 통합)과 Continuous Deployment(지속적 배포)의 줄임말로, 소프트웨어 개발 과정에서 테스트, 통합, 배포의 과정을 자동화하는 개발 방법론입니다.전통적인 개발 방식의 문제점기존의 수동 배포 방식에서는 다음과 같은 문제점들이 있었습니다. 개발자가 코드를 완성한 후 직접 테스트를 실..
AWS EC2에서 Docker를 활용한 배포
·
Infra/Docker
이번 글에서는 AWS EC2와 Docker를 조합하여 Spring Boot 애플리케이션을 효율적으로 배포하는 방법을 단계별로 알아보겠습니다. 특히 AWS ECR(Elastic Container Registry)을 활용한 이미지 관리부터 Docker Compose를 통한 멀티 컨테이너 환경 구축까지 다룰 예정입니다.EC2 환경 준비하기Docker와 Docker Compose 설치먼저 Ubuntu EC2 인스턴스에 Docker 환경을 구축해야 합니다. 다음 명령어로 한 번에 설치할 수 있습니다.sudo apt-get update && \sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \c..
AWS EC2에 서버 배포
·
Infra/Docker
로컬 환경에서 완성한 웹 애플리케이션을 실제 사용자들이 접근할 수 있도록 만드는 것, 바로 배포입니다. 도커를 활용한 배포를 학습하기 전, 이번 글에서는 AWS EC2를 활용하여 서버를 배포하는 전 과정을 단계별로 살펴보겠습니다.배포의 본질과 필요성배포란 무엇인가배포(Deployment)는 우리가 개발한 애플리케이션을 다른 사용자들이 인터넷을 통해 접근할 수 있도록 만드는 과정입니다. 로컬 환경에서만 동작하던 서버를 외부에 공개하여 전 세계 어디서든 접속 가능하게 만드는 것이죠.배포가 완료되면 애플리케이션은 고유한 주소를 부여받게 됩니다. IP 주소(예: 124.16.2.1)나 도메인(예: www.example.com) 형태로 제공되는 이 주소를 통해 사용자들은 우리의 서비스에 접근할 수 있습니다.개인 ..
Docker Compose 2
·
Infra/Docker
현대 애플리케이션은 단일 서비스로만 구성되는 경우가 드뭅니다. 대부분 웹 서버, 데이터베이스, 캐시 서버 등 여러 컴포넌트가 함께 동작하여 완전한 시스템을 구성합니다. 개발 과정에서 이런 복잡한 환경을 매번 수동으로 설정하는 것은 매우 비효율적입니다. Docker Compose는 이런 문제를 해결해주는 도구로, 여러 컨테이너를 하나의 설정 파일로 관리할 수 있게 해줍니다.Docker Compose의 필요성다중 컨테이너 관리의 복잡성실제 웹 애플리케이션을 개발할 때를 생각해보겠습니다. Spring Boot로 개발한 백엔드 서버가 있고, MySQL 데이터베이스가 필요하며, 성능 향상을 위해 Redis 캐시 서버도 함께 사용한다고 가정해보겠습니다.Docker 없이 이런 환경을 구성한다면 각각의 서비스를 개별적..
Docker Compose 1
·
Infra/Docker
Docker를 사용하다 보면 필연적으로 마주치게 되는 문제가 있습니다. 단일 컨테이너만으로는 실제 서비스를 구성하기 어렵다는 점입니다. 웹 애플리케이션을 운영하려면 프론트엔드 서버, 백엔드 API 서버, 데이터베이스, 캐시 서버 등 여러 컨테이너가 함께 동작해야 합니다. 각각의 컨테이너를 개별적으로 관리하는 것은 복잡하고 비효율적입니다. Docker Compose는 이러한 문제를 해결하여 여러 컨테이너를 하나의 서비스로 정의하고 통합 관리할 수 있게 해주는 도구입니다.Docker Compose의 핵심 가치복잡성 제거와 표준화Docker Compose의 가장 큰 장점은 복잡한 Docker CLI 명령어들을 YAML 파일 하나로 대체할 수 있다는 점입니다. 긴 옵션들과 매개변수들로 가득한 docker run..
Dockerfile
·
Infra/Docker
Docker를 사용하다 보면 기존에 제공되는 이미지만으로는 우리의 요구사항을 충족하기 어려운 경우가 많습니다. 특정 애플리케이션을 실행하거나, 개발 환경에 맞는 커스텀 설정이 필요할 때가 그런 상황입니다. Dockerfile은 이러한 문제를 해결해주는 강력한 도구로, 우리만의 맞춤형 Docker 이미지를 생성할 수 있게 해줍니다.Dockerfile의 개념과 필요성Docker 이미지 커스터마이징의 한계Docker Hub에서 제공하는 기본 이미지들은 범용적으로 설계되어 있어 특정 프로젝트의 요구사항을 완벽하게 만족하기 어렵습니다. 예를 들어, Node.js 이미지를 다운로드받아도 우리의 애플리케이션 코드는 포함되어 있지 않고, 필요한 의존성 패키지도 설치되어 있지 않습니다.매번 컨테이너를 실행할 때마다 수동..