Fly.io
Fly.io는 서버(컴퓨터)를 제공하여 웹 애플리케이션을 배포할 수 있게 해주는 플랫폼
- 서버에는 공인 IP가 부여되어 있으며, 도메인(fly.dev)을 통해 접근 가능
- Fly.io CLI 도구인 flyctl을 설치하고 로그인하면 명령어로 Fly.io를 제어
- 웹 서버 (nginx) : 웹 서비스를 제공하는 서버로, 80번 포트 사용
Fly.io 설치 및 프로젝트 디렉토리 생성
- 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 형태로 자동 할당된다.
'Spring Boot 프로젝트' 카테고리의 다른 글
Spring Boot 프로젝트 (11.11) - Fly.io PostgreSQL 클러스터 접근 (0) | 2024.11.11 |
---|---|
Spring Boot 프로젝트 (11.11) - 프록시 (0) | 2024.11.11 |
Spring Boot 프로젝트 (11.06) - 도커 파일 생성, 도커 이미지 생성, 도커 컨테이너 생성 (4) | 2024.11.07 |
Spring Boot 프로젝트 (11.05) - Jackson, Lombok, Docker (3) | 2024.11.05 |
Spring Boot 프로젝트 (11.04) - surl_project (3) | 2024.11.05 |