Fly Launch로 앱 만들기
이 가이드는 Fly Launch를 사용해 앱을 만들고 구성하는 방법을 자세히 설명해요. Fly Launch는 앱을 하나의 단위로 구성하고 오케스트레이션하도록 도와주는 Fly.io 플랫폼 기능 모음이에요. fly launch의 구성 요소, 프레임워크 스캐너, 커스텀 런치 방법, 배포 후 확장 방법까지 살펴볼 수 있어요.
출처: 문서
본문
이 가이드는 Fly Launch로 앱을 만들고 구성하는 방법을 좀 더 자세히 다뤄요. 더 빨리 시작하는 방법은 Getting Started를 참고해 보아요.
Fly Launch는 앱을 하나의 단위로 구성하고 오케스트레이션하는 데 도움을 주는, 의견을 담은 Fly.io 플랫폼 기능 모음이에요.
Fly Launch로 앱 만들기
Fly.io에서 완전히 새로운 앱을 만들려면 프로젝트의 소스 디렉토리에서 다음 명령을 실행해요:
fly launch
급하다면 초간단 데모 앱도 시도해 볼 수 있어요. 아니면 선호하는 언어나 프레임워크로 시작해 보아요.
성공적인 fly launch의 재료
성공적인 런치, 즉 첫 배포 준비가 된 상태를 만드는 구성 요소는 다음과 같아요:
- 앱을 Machine에서 실행하게 할 Docker 이미지를 얻을 방법이에요.
fly launch가 만들거나 여러분이 제공한fly.toml파일로, 앱의 Fly.io 특유의 구성을 담고 있어요.- 공개 IP 주소, 앱 시크릿, 데이터베이스와 스토리지 같은 선택적 리소스. Fly.io 또는 확장(extension) 파트너로부터 가져와요.
프레임워크 런치 스캐너
프로젝트에 따라 fly launch는 앱의 소스 코드를 보고 그 재료 목록을 통과해 바로 배포 준비가 된 Fly App까지 갈 수 있어요. 이는 Fly.io에 전담 인력이 있는 프레임워크에서 가장 잘 동작해요. 현재는 Elixir/Phoenix, Laravel, Rails, Django이고, 다른 언어와 프레임워크에 대한 런치 가이드도 있어요.
최상의 스캐너는 앱 이미지를 빌드할 Dockerfile을 제공해요. 오래되고 형편없는 스캐너 중 일부는 buildpacks을 호출할 수도 있는데, 이는 느리고 깨지기 쉬운 경향이 있어요.
작동하는 Django 앱(우리 Django getting-started 예시의 그것)이 있는 디렉토리에서 fly launch를 실행하면:
Scanning source code
Detected a Django app
Creating app in /flyio/hello-django
We're about to launch your Django app on Fly.io. Here's what you're getting:
Organization: MyName (fly launch defaults to the personal org)
Name: hello-django (derived from your directory name)
Region: Amsterdam, Netherlands (this is the fastest region for you)
App Machines: shared-cpu-1x, 1GB RAM (most apps need about 1GB of RAM)
Postgres: <none> (not requested)
Redis: <none> (not requested)
? Do you want to tweak these settings before proceeding? Yes
...
flyctl Django 스캐너가 런치를 담당했어요. Fly Launch 웹 페이지에서 기본 설정을 조정한 다음 fly deploy를 실행해 새 앱을 배포할 수 있어요. 그 이야기가 어떻게 끝나는지 보려면 Django 가이드를 방문해 보아요. (스포일러: 해피엔딩이에요.)
커스텀 런치
fly launch를 프로젝트에 더 잘 맞게 조정할 수 있어요.
이미지 지정 또는 Dockerfile 사용해 빌드하기
--image 또는 --dockerfile 옵션을 사용하거나, 프로젝트 소스 디렉토리에 Dockerfile이 있다는 것을 이용해 Dockerfile 런치 스캐너의 관심을 끌면서, Docker 이미지를 얻는 방법을 fly launch에 알려 보아요. Dockerfile 스캐너는 구성은 많이 하지 않지만 다른 스캐너가 인수하지 못하게 막아요.
Fly App의 실제 Docker 이미지 빌드(또는 이미지 pull)는 배포 중에 이루어져요. fly launch는 어떻게 이미지를 빌드하거나 얻을지 기록해 무대를 준비하고, 첫 배포와 이후 모든 배포가 그 정보를 사용해요.
구성 파일 커스터마이즈하기
자신만의 fly.toml을 제공하면 fly launch가 그 구성을 새 앱에 복사하겠다고 제안해요. fly.toml은 앱 구성의 시작점을 설정하고, 어떤 경우에는 프레임워크 런치 스캐너가 일부를 덮어쓸 수도 있어요.
fly launch 명령에는 앱이 어떻게 생성되고 프로비저닝되는지 제어하는 데 사용할 수 있는 옵션이 많아요.
fly launch에 앱을 자동으로 설정해 줄 스캐너가 없다면, 그래도 Fly.io 조직에 새 Fly App을 초기화하고 단순한 웹 앱에 합리적인 시작점이 되는 기본 앱 구성을 제공해요.
Fly App의 이름이 Fly.io 전체에서 고유한지 확인해야 해요. 기본적으로 Fly Launch는 현재 디렉토리 이름에서 앱 이름을 유도해요. "hello-world"처럼 흔한 이름이라면 런치가 실패할 확률이 높아요. --name 플래그를 사용해 처음부터 고유한 이름을 지정할 수 있어요.
fly apps create, 손으로 만든(또는 복사한) fly.toml, 단계별 리소스 프로비저닝을 사용한 뒤 fly deploy를 실행해, 모든 런치 스캐너와 풀서비스 리소스 프로비저닝을 건너뛰는 완전히 수동적인 "런치"를 수행할 수도 있어요.
fly launch 이후
fly launch를 실행했지만 아직 배포하지 않았거나(fly launch --no-deploy로 할 수 있어요), 배포했지만 변경하고 싶다면 다음을 할 수 있어요:
- 구성을 변경하기
- 앱 소스를 업데이트하기
- 공개 IP 주소, 앱 시크릿, 데이터베이스와 스토리지 같은 플랫폼 리소스를 변경하거나 프로비저닝하기
그런 다음 fly deploy로 배포(또는 재배포)해요.
성장과 확장
Fly.io로 가용성, 용량, 성능을 높일 수 있는 몇 가지 방법을 확인해 보아요:
- 더 복원력 있는 앱을 위한 여분 Machine에 대한 blueprint를 따라가 보아요
- App availability and resiliency를 읽어 보아요
- 로드나 커스텀 메트릭을 기반으로 Machine 자동 확장
- Machine CPU 및 RAM 확장
- Machine 수 확장