본문 바로가기

SpringBoot from Laravel

Spring Boot vs Laravel: CI/CD (자동 배포) 구축 비교

반응형

CI/CD(Continuous Integration / Continuous Deployment)는 개발된 코드를 자동으로 테스트하고 배포하는 자동화 프로세스입니다.

Spring Boot와 Laravel 모두 CI/CD를 통해 배포를 자동화할 수 있지만, 사용하는 도구와 설정 방식이 다릅니다.

 

이번 글에서는 Spring Boot와 Laravel의 CI/CD 구축 방식을 비교합니다.

 

1. CI/CD 개념 및 필요성

2. Laravel 배포 (Laravel Forge, GitHub Actions, Envoyer 활용)

3. Spring Boot 배포 (Jenkins, GitHub Actions, GitLab CI/CD 활용)

4. 자동 테스트 & 배포 파이프라인 비교

1️⃣ CI/CD 개념 및 필요성

 

📌 CI/CD란?

CI(Continuous Integration, 지속적 통합) → 코드가 변경될 때마다 자동으로 빌드 & 테스트 실행

CD(Continuous Deployment, 지속적 배포) → 테스트를 통과하면 자동으로 운영 서버에 배포

 

📌 CI/CD의 장점

✅ 코드 배포 속도 향상 🚀

✅ 버그 발생 시 빠르게 롤백 가능 🔄

✅ 코드 품질 유지 & 안정적인 서비스 제공 📈

2️⃣ Laravel 배포 (Forge, GitHub Actions, Envoyer 활용)

 

🔹 1. Laravel Forge를 활용한 배포

 

Laravel Forge는 Laravel 공식 배포 서비스로, AWS, DigitalOcean, Linode 등의 서버에 배포 가능

 

📌 Laravel Forge 설정 과정

 

1️⃣ 서버 연결 (DigitalOcean, AWS 등)

2️⃣ Laravel 프로젝트 연동 (git clone)

3️⃣ 자동 배포 스크립트 추가 (deploy.sh 설정)

4️⃣ SSL 인증서 & 도메인 설정

 

Forge는 GUI 기반으로 배포가 쉬움, 서버 관리도 편리!

🔹 2. GitHub Actions을 활용한 Laravel 배포

 

GitHub Actions를 사용하면 GitHub에 Push할 때마다 자동으로 테스트 & 배포 가능

 

📌 .github/workflows/deploy.yml (Laravel 배포 자동화)

name: Laravel CI/CD

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.1'

      - name: Install dependencies
        run: composer install --no-dev --optimize-autoloader

      - name: Run Migrations
        run: php artisan migrate --force

      - name: Restart server
        run: sudo service php8.1-fpm restart

코드 푸시 → GitHub Actions 실행 → 배포 자동화 완료!

3️⃣ Spring Boot 배포 (Jenkins, GitHub Actions, GitLab CI/CD 활용)

 

🔹 1. GitHub Actions을 활용한 Spring Boot 배포

 

Spring Boot 프로젝트를 AWS EC2 서버에 배포하는 GitHub Actions 예제

 

📌 .github/workflows/deploy.yml (Spring Boot 배포 자동화)

name: Spring Boot CI/CD

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Set up JDK
        uses: actions/setup-java@v2
        with:
          java-version: '17'
          distribution: 'temurin'

      - name: Build project
        run: mvn clean package -DskipTests

      - name: Deploy to Server
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          source: "target/*.jar"
          target: "/home/ec2-user/app/"

Spring Boot는 .jar 파일을 서버에 전송하고 실행하여 배포!

🔹 2. Jenkins를 활용한 Spring Boot 배포

 

Jenkins는 가장 널리 사용되는 CI/CD 도구 중 하나

 

📌 Spring Boot + Jenkins 배포 과정

1️⃣ Jenkins 설치 (sudo apt install jenkins)

2️⃣ GitHub & Maven 연결

3️⃣ Spring Boot 빌드 스크립트 작성 (mvn clean package)

4️⃣ Jenkins에서 자동 배포 설정

#!/bin/bash
cd /home/ec2-user/app
java -jar target/myapp.jar --server.port=8080

Jenkins는 강력하지만, 설정이 조금 복잡할 수 있음

4️⃣ 자동 테스트 & 배포 파이프라인 비교

비교 항목Laravel (PHP)Spring Boot (Java)

자동 배포 도구 Laravel Forge, Envoyer, GitHub Actions GitHub Actions, Jenkins, GitLab CI/CD
배포 방식 PHP 코드 푸시 후 php artisan deploy 실행 .jar 파일 빌드 후 서버에서 실행
테스트 자동화 PHPUnit 실행 (php artisan test) JUnit 실행 (mvn test)
롤백 (Rollback) 지원 ✅ 가능 ✅ 가능

Laravel은 Laravel Forge & Envoyer를 통해 배포가 쉽고, Spring Boot는 GitHub Actions & Jenkins로 확장성이 높음

📌 결론: Spring Boot vs Laravel CI/CD 구축 비교

 

✅ Laravel은 Laravel Forge, Envoyer를 사용하면 쉽게 배포 가능

✅ Spring Boot는 Jenkins, GitHub Actions 등을 사용하여 강력한 CI/CD 구축 가능

둘 다 GitHub Actions을 활용하면 CI/CD를 손쉽게 구축 가능!

 

📌 결론:

Laravel은 간단한 프로젝트에서는 Forge, 복잡한 프로젝트에서는 GitHub Actions 사용

Spring Boot는 확장성이 뛰어난 Jenkins, GitHub Actions 활용이 적합 🚀

 

🔥 다음 글에서는 “Spring Boot vs Laravel: 서버 운영 및 배포 환경 비교”를 다룰 예정! 😊

반응형