본문 바로가기

Spring Boot 프로젝트

Spring Boot 프로젝트 (11.06) - Fly.io설치, 배포

Fly.io

Fly.io는 서버(컴퓨터)를 제공하여 웹 애플리케이션을 배포할 수 있게 해주는 플랫폼

  • 서버에는 공인 IP가 부여되어 있으며, 도메인(fly.dev)을 통해 접근 가능
  • Fly.io CLI 도구인 flyctl을 설치하고 로그인하면 명령어로 Fly.io를 제어
  • 웹 서버 (nginx) : 웹 서비스를 제공하는 서버로, 80번 포트 사용

Fly.io 설치 및 프로젝트 디렉토리 생성

  1. PowerShell을 관리자 권한으로 실행한 후 Fly.io를 설치
# git bash에서 Fly.io 설치 확인
fly

# Fly.io에 로그인
fly auth login

# 프로젝트 폴더로 이동하여 필요한 디렉토리 만듦
cd projects/
mkdir fly.io
cd fly.io/
mkdir ssa-nginx-1
cd ssa-nginx-1/

 

Fly.io 프로젝트 초기화

fly launch --no-deploy

Dockerfile 생성

vim Dockerfile

# Dockerfile에 아래 내용 추가

From nginx:latest

Copy index.html /usr/share/nginx/html/index.html 

Expose 80

cmd ["nginx", "-g", "daemon off;"]



# index.html 파일 생성 
vim index.html

<h1>Hello World</h1>

Fly.io에 배포

fly deploy
  • 모든 파일이 Fly.io 앱으로 복사되어 빌드가 진행
  • 도커 이미지 생성 후 Fly.io 내 2개의 머신에 각각 컨테이너가 배치된다.

부하분산

  • 두 개의 컨테이너 중 하나가 선택되어 요청을 처리
  • 요청이 많은 경우 서로 다른 컨테이너로 분산 처리된다.
  • 구조를 통해 높은 트래픽에도 안정적인 서비스 제공이 가능
    Rolling Update
  • Fly.io는 무중단 배포 방식으로, 기존 컨테이너를 순차적으로 새로운 이미지로 교체한다.
  • 고객이 웹 서비스를 이용하는 중에도 서비스가 중단되지 않고 업데이트가 가능

수정 후 다시 배포

# index.html 파일 수정한다면 
vim index.html

# 애플리케이션을 다시 배포
fly deploy  # 또는 `flyctl deploy`

배포 자동화 (CI/CD)

소스 코드가 변경되면 재배포를 통해 업데이트를 반영

  • 자동 배포 (CI/CD) 설정 시 소스 코드 변경 시마다 자동으로 배포가 이루어진다.
  • GitHub Actions를 이용하여 지속적 통합 및 배포(CI/CD)를 설정할 수 있다.

Fly.io 도메인 및 서버 구조

https://앱_이름.fly.dev 형태로 자동 할당된다.