본문 바로가기
GD's IT Lectures : 기초부터 시리즈/스프링부트(Spring Boot) 기초부터 ~

[스프링 부트(SpringBoot) : 중급] 클라우드 환경에서의 배포

by GDNGY 2023. 5. 5.

7. 클라우드 환경에서의 배포

 

7.1. 도커를 사용한 컨테이너화 및 배포

도커(Docker)는 애플리케이션과 의존성을 패키지화하는 데 사용되는 컨테이너 플랫폼입니다. 도커를 사용하여 애플리케이션을 컨테이너로 패키지화하면, 동일한 환경에서 어디서나 실행할 수 있습니다. 먼저 Dockerfile을 작성해야 합니다.

 

FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

 

위 Dockerfile을 프로젝트 루트에 작성한 다음, 터미널에서 다음 명령어를 실행하여 도커 이미지를 빌드하고 실행합니다.

$ docker build -t my-spring-boot-app .
$ docker run -p 8080:8080 my-spring-boot-app

 

7.2. 쿠버네티스를 활용한 배포

쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 플랫폼으로, 다수의 컨테이너를 관리 및 조율합니다. 쿠버네티스를 사용하려면 먼저 쿠버네티스 클러스터를 설정해야 합니다. 

 

스프링 부트 애플리케이션을 쿠버네티스에 배포하려면, 먼저 애플리케이션을 도커 이미지로 빌드한 다음, 쿠버네티스 매니페스트 파일을 작성해야 합니다. 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-spring-boot-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-spring-boot-app
  template:
    metadata:
      labels:
        app: my-spring-boot-app
    spec:
      containers:
      - name: my-spring-boot-app
        image: my-spring-boot-app
        ports:
        - containerPort: 8080

 

매니페스트 파일을 작성한 후, kubectl 명령어를 사용하여 쿠버네티스 클러스터에 애플리케이션을 배포합니다.

$ kubectl apply -f deployment.yaml

 

7.3. 클라우드 플랫폼을 이용한 배포 (AWS, Azure, GCP)

클라우드 플랫폼을 사용하여 스프링 부트 애플리케이션을 배포하려면 각 클라우드 제공 업체마다 제공하는 서비스와 도구를 활용하여 배포할 수 있습니다. 여기서는 AWS, Azure, GCP를 예로 들겠습니다.

 

  • AWS (Amazon Web Services)
  1. AWS 계정 생성 및 로그인: 먼저 AWS 공식 웹사이트에서 계정을 생성하고 로그인합니다.
  2. Elastic Beanstalk 애플리케이션 생성: AWS 관리 콘솔에서 'Services' 메뉴에서 'Elastic Beanstalk'을 선택한 후, 'Create New Application' 버튼을 클릭하여 애플리케이션을 생성합니다. 
  3. 환경 생성 및 설정: 생성한 애플리케이션에 들어가서 'Create a new environment' 버튼을 클릭하고, 웹 서버 환경 또는 작업자 환경 중 하나를 선택한 후, 원하는 설정으로 환경을 구성합니다. 
  4. 애플리케이션 배포: 환경이 생성되면 'Upload and Deploy' 버튼을 클릭하여 애플리케이션의 JAR 또는 WAR 파일을 업로드하고 배포합니다. 배포가 완료되면 Elastic Beanstalk이 자동으로 인스턴스, 로드 밸런서, 오토 스케일링 그룹 등의 리소스를 생성하고 관리합니다. 

 

  • Microsoft Azure
  1. Azure 계정 생성 및 로그인: 먼저 Azure 공식 웹사이트에서 계정을 생성하고 로그인합니다. 
  2. Azure App Service 생성: Azure Portal에서 'Create a resource'를 선택하고, 'Web App'을 찾아서 선택한 후, 'Create' 버튼을 클릭합니다. 
  3. 애플리케이션 설정: 웹 앱 이름, 구독, 리소스 그룹, 운영 체제, 자바 버전 등의 설정을 선택하고, 'Review + create'를 클릭한 후, 'Create'를 클릭하여 애플리케이션을 생성합니다. 
  4. 애플리케이션 배포: 생성된 웹 앱에 들어가서 'Deployment Center'를 선택한 후, 원하는 배포 방식(GitHub, Bitbucket, Local Git 등)을 선택하고, 애플리케이션 소스 코드 또는 빌드 결과물을 배포합니다. 

 

  • Google Cloud Platform (GCP)
  1. GCP 계정 생성 및 로그인: 먼저 GCP 공식 웹사이트에서 계정을 생성하고 로그인합니다.
  2. Google App Engine 애플리케이션 생성: GCP 콘솔에서 'App Engine'을 선택한 후, 'Create Application' 버튼을 클릭하여 애플리케이션을 생성합니다.
  3. 애플리케이션 설정: 리전을 선택한 후, 사용할 런타임(Java, Python, Go 등)을 선택하고, 'Create' 버튼을 클릭하여 애플리케이션을 생성합니다.
  4. 애플리케이션 배포: 생성된 애플리케이션에 대한 app.yaml 파일을 작성하고, gcloud 명령어를 사용하여 애플리케이션을 배포합니다. 예를 들어, gcloud app deploy app.yaml 명령어를 실행하여 애플리케이션을 배포할 수 있습니다.

 

위에서 설명한 각 클라우드 플랫폼의 배포 방법은 기본적인 예시입니다. 실제 상황에 따라 각 서비스의 고급 기능을 활용하여 더욱 효율적인 배포 전략을 구축할 수 있습니다.

 

 

 

2023.05.05 - [프로그래밍/스프링부트(Spring Boot) 기초부터 ~] - [스프링 부트(SpringBoot) : 중급] 테스트 전략 및 심화

 

[스프링 부트(SpringBoot) : 중급] 테스트 전략 및 심화

6. 테스트 전략 및 심화 6.1. 테스트 주도 개발(TDD) 테스트 주도 개발(Test-Driven Development, TDD)은 테스트를 중심으로 개발하는 방식으로, 테스트 케이스를 먼저 작성한 후 코드를 작성합니다. 이를 통

gdngy.tistory.com

 

반응형

댓글