한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
Cloud Run을 위한 Firebase Hosting를 소개합니다
2019년 6월 18일 화요일
Patrick Martin (
디벨로퍼 어드보케)
<블로그 원문은 이곳에서 확인하실 수 있습니다>
Google Cloud의 새로운
Cloud Run
서비스를 위한
Firebase Hosting 통합
을 소개합니다. Cloud Run은 개발자가 자신이 선택한 언어와 프레임워크로 된 HTTP 요청을 통해 호출할 수 있는 상태 비추적 컨테이너를 실행할 수 있도록 지원하는 완벽한 관리형 컴퓨팅 플랫폼입니다. Firebase Hosting 통합을 통해 이 아키텍처를 Firebase 프로젝트의 웹 앱 또는 마이크로 서비스를 위한 백엔드로 사용할 수 있습니다.
Firebase Hosting은 이미 사이트와
마이크로 서비스
를 편리하고 안전하게 호스팅하는 방법으로 쓰이고 있습니다. Firebase Hosting은 직접 업로드하는 정적 페이지를 제공할 수 있고,
firebase.json 파일
에서 적절한 구성을 통해 수신 요청을 Cloud Functions for Firebase로 보내 동적 콘텐츠를 제공할 수 있습니다. NodeJS 환경에서 작업하고자 한다면 이 워크플로는 완벽한 대안입니다. 사용자 수요에 부응하기 위해 자동으로 수평적으로 확장하면서 동적 콘텐츠을 가진 빠른 사이트는 이미 빌드할 수 있습니다.
하지만 모든 개발자가 NodeJS로 작업하고 싶어 하는 것은 아닙니다. 다수의 개발자는 이미 다른 언어와 프레임워크에 대한 기존 지식을 가진 대규모 팀을 두고 있습니다. Go, Ruby, Java와 같은 언어는 서버 시장에서는 그 비중이 상당하지만, 현재 Firebase의 기존 클라우드 백엔드 솔루션에서는 사용되지 않습니다.
Google Cloud Platform에서는 현재 Kubernetes를 위한 인프라를 빌드하는 Google 고유의 경험과 Knative 오픈소스 프로젝트의 산물을 활용하여
상태 비추적 서버를 배포
할 수 있습니다. 유일한 요구 사항은 Kubernetes를 위한 $PORT 환경 변수에 지정된 포트를 통해 HTTP 요청에 대응하여 상호작용 가능한 Docker 이미지를 생성할 수 있고 Firebase Hosting에 대해 60초 내에 응답해야 한다는 점입니다. 그렇지만 이것이 Firebase Hosting과는 어떤 연관이 있는 걸까요?
Hosting을 처음 접하는 분이라면 정적 호스팅이나 무료 SSL 인증서만 알고 계실지 모르겠습니다. 동적 콘텐츠를 용이하게 제공하기 위해, 재작성을 통해 우리가 Cloud Run도 지원하기 위해 확장한 클라우드 함수에 도달할 수 있습니다. 다음과 같이 firebase.json 파일을 약간 변경하면 컨테이너에 이르는 특정 경로를 가리킬 수 있습니다.
{
"hosting": {
"public": "public",
"rewrites": [ {
"source": "/cloudrun",
"run": {
"serviceId": "my-awesome-api",
// Optional (default is us-central1)
"region": "us-central1",
}
} ]
}
}
또는 와일드 카드를 사용해 전체 API를 노출할 수도 있습니다.
{
"hosting": {
"public": "public",
"rewrites": [ {
"source": "/api/**",
"run": {
"serviceId": "my-awesome-api",
// Optional (default is us-central1)
"region": "us-central1",
}
} ]
}
}
그다지 자주 업데이트되지 않는 동적 사이트가 있는 경우에는 Firebase Hosting의 전역
CDN(콘텐츠 전송 네트워크)
을 이용해 사이트의 응답 시간을 향상해 보세요. 예를 들어 ExpressJS와 NodeJS를 사용 중이라면, 다음과 같이 Cache-Control 헤더를 사용하여 캐싱 동작을 구성하세요.
res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
위 코드는 브라우저에서는 5분간(max-age), CDN에서는 10분간(s-maxage) 요청 결과를 캐시하는 코드입니다. 캐시 설정을 올바로 조정해두면 사용자가 페이지를 열 때마다 서버 로직을 실행할 필요가 없는 빠르고 유연하며 동적으로 렌더링되는 사이트를 가질 수 있습니다.
Cloud Functions for Firebase와는 달리,
Cloud Run을 사용
하면 언어와 프레임워크를 임의로 조합한 이미지를 빌드하여 이러한 요청을 처리할 수 있습니다.
Ruby 개발자가 Sinatra를 쉽게 끌어오거나
, 사용자가
자바 팀을 위한 Spring 프레임워크
를 실행하거나,
Shelf를 사용하는 서버 측 Dart
를 체크아웃하여 콘텐츠를 제공할 수 있습니다. 공식적인 언어 지원을 기다릴 필요가 없습니다. Docker 컨테이너를 만들 수 있으면 백엔드 코드를 작성하여 배포할 수 있습니다. 고성능 컴퓨팅 환경에서 작업 중이고 엔지니어링 팀이 Fortran으로 교육을 받았더라도, Google이나 Firebase의 공식 지원을 기다릴 필요 없이 기존 지식만 활용해 Fortran.io로 웹 대시보드를 만들 수 있습니다.
Cloud Functions와 비슷하게, Cloud Run은 사용자의 수요를 충족시키기 위해 자동으로 컨테이너를 수평 확장합니다. 클러스터 또는 노트 풀을 관리할 필요가 없습니다. 당면 과제를 완수하기 위해 특정 시점에만 리소스를 사용하기 때문입니다. 한 가지 절충점은 Cloud Run 이미지 역시 Cloud Functions와 같이 상태 비추적 이미지라는 사실입니다. 하지만 Cloud Functions와는 달리, 각 컨테이너가 최대 80명의 사용자를 동시에 처리할 수 있어 콜드 부팅 빈도를 줄이는 데 도움이 될 수 있습니다.
Firebase Hosting을 Cloud Run과 함께 사용하여 개발자 여러분이 과거 그 어느 때보다도 빠르게 더 나은 웹 앱을 빌드하실 수 있기를 바랍니다. 이제는 프런트엔드 및 백엔드 개발자가 진정으로 단 하나의 언어를 사용할 수 있고, 심지어는 코드 베이스를 공유할 수도 있습니다. 지금 바로 시작하려면
단계별 안내
를 따르십시오. Cloud Run은 Firebase 콘솔이 아니라 Google Cloud 콘솔에 존재하지만, Firebase 프로젝트를 가지고 있다면 이미
Google Cloud Platform 프로젝트
도 가지고 있는 것입니다.
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed