Googleクラウドアカウント販売: GCP Cloud Run 5分でサーバーなし (Serverless) でWebアプリケーションを導入
開発者や設計者として、普段は優れたWebアプリケーション (Node.js、Python Flask、Go、Java Spring Boot) を書き終え、最も抵抗しているのはバグを変えるのではなく、バグを変えるのではない
デプロイ
。
従来の導入プロセスは時間を過ごすことです。まずvm仮想マシンを購入して、オペレーティングシステムをセットアップして、Docker環境をセットアップして、さまざまなセキュリティグループのインバウンドルールをセットアップしてください。流量が大きくなったら、どうやって負荷の均衡とクラスターの弾みを考えなければならない。流量がなくなったら、サーバーの空転を見て、カードの中でお金を無駄にしなければならない。K8sクラスタを建設するのは確かに高いが、その高い運送のしきい値とハードウェア予算は、小さなチームを直接消耗することができる。
Google Cloud(GCP、Googleクラウド) の生態の中で、開発生産力を解放するために生まれた次元を下げる打撃がある
Cloud Run
。
その核心的な論理は極めて純粋である
Serverless (サーバーレス) コンテナ化
。アプリケーションを標準的なDockerミラーにパッケージ化して投げるだけでそれは5分以内にあなたのためにHTTPS証明書を持っています。
最も無敵なのは課金モデルです
完全に必要に応じて課金し、0までの縮小をサポートします。
。これは、誰もあなたのサイトにアクセスしていなければ、CPUとメモリを占有せず、グーグルはお金を払っていないことを意味します。
今日私たちは公式概念を背にせず、でたらめを拒絶する。あなたのコードを持って、私たちはコアアーキテクチャから直接話して、手であなたを連れて5分以内にあなたの最初のServerless Webアプリケーションをシームレスにオンラインにします。
第一段階: 深さ分解、Cloud Runの「極めてシンプルな世界モデル」
導入を始める前に、Cloud Runの基礎となる物理的な運転論理を頭の中ではっきりさせなければならない。そうでなければ、コンソールに入って様々な同時性、メモリパラメータに直面すると必ず盲目になる。
システム全体の基礎データストリームは、次の3つのコアコンポーネントによってシームレスに溶接されています
コンテナ・ミラー・ライブラリ: コード・コンテナ・ドック。これはGCPの次世代のミラー倉庫で、古いGCRに取って代わる。あなたのアプリケーションはDockerミラーにパッケージ化されてここに保存されます。
Cloud Runサービス (Service): あなたのServerlessスケジュール脳。鏡像を見つめています。パブリックネットワークにHTTPリクエストが入ってくると、稲妻のようにミラーをコンテナインスタンスにして接客します。
自動伸縮エンジン: あなたの交通警官。一万人が同時に要求を出した場合、それは瞬時にバックグラウンドで数十個の容器を引き上げてストレスを分担する数分連続して誰もアクセスしなければ、すべての容器を物理的に破棄します
0コスト休眠状態に入る。
第二段階: 実戦演習 ― 5分速通オンラインライン
基本的なNode.jsまたはPython Webアプリケーションがローカルに書かれており、DockerとGCPコマンドラインツール (gcloud CLI) がローカルにインストールされているとします。
ステップ1: ローカルコードの「コンテナ化」 (Dockerfile)
プロジェクトのルートディレクトリの下に、標準の
Dockerfile
ファイル。ここでは、最も簡単なNode.jsアプリケーションを例にしてみましょう
# 公式軽量Nodeミラーリングを使用
FROM node:18-slim
# 作業ディレクトリの設定
WORKDIR /usr/src/app
# 依存構成のコピーとインストール
COPYパッケージ *.json ./
RUN npm install --ly = プロダクション
# パッケージコード全体をコピーします
COPY ..
# ポートを公開します (注:Cloud Runはデフォルトで、コンテナにPORTという環境変数を注入します。通常は8080です)
Exポーズ8080
# コマンドを起動するには、39.0.0を傍受する必要があります
CMD [ "node", "server.js"]
コアピットガイド: あなたのアプリケーションコードでは、IPを傍受することは絶対に127.0.0.1に書かないでください。0.0.0を傍受しなければなりません。Pythonの場合、起動コマンドはCMD ["gユニコーン" 、 "-bind" 、 "39.0.0: 8080" 、 "main:app"] と書かれます。傍受が間違っていると、Cloud Runの起動時にコンテナのハートビート応答が得られないため、直接エラーが発生します。
手順GCPでミラードックを作成する
あなたの端末を開いて、利用します。
Gcloud
命令はあなたに一番近い地域にDocker倉庫を作る。中国の台湾地域を選ぶとします。
Asia-east1
) 、プロジェクトIDは
My-serverless-project
:
Gcloud artifacts引き分けcreate my-docker-repo \
--リポジトリ・フォーマット = docker \
-- Location = asia-east1 \
--Description = "My
Serverless App Repo"
ステップ3: ローカルにパッケージ化してクラウドにストリーミングする
ローカルDockerを使用してミラーをコンパイルし、名前に完全なGCP倉庫パスを付けます。
整列暗号 (Docker認証証明書の構成): bashg cloud auth configure-docker asia-east1-docker.pkg.dev
コンパイルパッケージ: Bashdocker build -t asia-east1-docker.pkg.dev/my-serverless-project/my-docker-repo/web-app: v1.0.
全力プッシュ: Bashdocker push asia-east1-docker.pkg.dev/my-serverless-project/my-docker-repo/web-app:v1.0
端末でよく知っているプログレスバーを見て、あなたのコンテナはグーグルの分散安全なクラウドに安定して横たわっています。
ステップ4: 最も爽快な瞬間 -- ワンクリックでCloud Runをアクティブにする
戻る
GCPコンソール
、検索してアクセスする
クラウドラン
ページ。
上部をクリックしてください
「サービスの作成 (Create Service) 」
、コア構成戦場に入る:
リビジョンを導入する: 選択をクリックして、あなたがプッシュしたweb-app:v1.0ミラーを正確に選択します。
サービス名: 名前はmy-web-serviceです。
地域 (Region): ミラー倉庫と一致し、asia-east1(台湾) を選択することを強く推奨し、国内アクセスネットワークの遅延は極めて低い。
自動スケーリング: 最小インスタンス数: 0を入力します。最大事例数: テストを始めたばかりで10を入力すれば、悪意のあるブラシ流量による費用超過を防ぐことができる。
認証: 一般向けのWebアプリケーションとして、「認証されていない呼び出しを許可する」にチェックを入れることを躊躇しない。チェックしないと、外の人があなたのwebサイトにアクセスすると、グーグルから403に直接拒否されます。
一番下のをクリックします
「作成(Create)」
。
第三段階: オンライン検証と「コールドスタート」の現場
クリックして作成した後、画面上の小さな輪を見つめます。Cloud Runは、バックグラウンドでロードバランシング、ドメイン名マッピング、SSL暗号化トンネルを自動的に構成します。
通常は
30秒から1分
、コンソールの上部に大きな緑のフックが点灯し、あなたのためにhttのような形を吐き出します
Ps: //
My-web-service-xxxx-de.a.run.app
の公式HTTPS永久url。
このwebサイトをクリックすると、webページが瞬時に開く! おめでとうございます。あなたのServerless Webアプリケーションは完全に有名になりました。
ハードコア内部者実験: 「コールドスタート」とは?
「0に縮こむ」の威力を検証するために、webページを閉じ、キーボードから両手を離して静かに15分間待ってください。
このとき、コンソールの監視指標 (集計) を見ると、バックグラウンドのアクティブなインスタンス数 (アクティブインスタ) が完全にゼロになっていることがわかります。この時、
何の例も走っていないので、あなたの請求書砂時計は完全に静止しています。
今、もう一度クリックしてそのパブリックネットワークのwebサイトを開きます。Webページはさっきのように瞬間的に開くのではなく、わずかに詰まっていることがわかります
1から2秒
その後やっと印刷されました。
技術内部者: これがストリーミングとServerless業界の有名な「コールドスタート」です。15分前に誰も訪問しなかったので、グーグルはあなたの容器を完全に空にしました。もう一度クリックすると、システムはバックグラウンドで一時的に物理マシンリソースをスケジュールし、Dockerミラーを再ダウンロードし、メインプログラムを解凍し、起動しなければならない。この1秒から2秒の遅れは、お金を節約するために必要なわずかな代償である。
第四段階: 商業級構造のピット血涙史と大工場指標の調整
このServerlessの枠組みはとても爽快であるが、真の企業クラスの高合併生産環境では、運送設計者はすぐにデフォルトのパラメータを「微細化外科手術」しなければならないそうでなければ、うっかりして次の2つの血だらけの大きな穴を踏んでしまいます
1.バックエンドデータベースの「ゾンビ同時壁」を爆発させる
多くの初心者開発は、Cloud Runが無限に自動的に拡張できる以上、最大インスタンス数を1000に設定したと考えています。その結果、黒五の販売促進が到着すると、トラフィックが急増し、Cloud Runは非常に敬業的に瞬間的に500個の容器を持ち上げて接客した。
災害発生: 500個のコンテナが起動した瞬間に、バックエンドのCloud SQLリレーショナルデータベースに接続要求を開始しました。従来のMySQLデータベースの最大接続数は200しかない可能性があり、その結果、データベースは突然のトラフィックで直接崩壊し、全面的な業務が麻痺した。
大工場標準解法: Cloud Runに入る「コンテナ、接続、セキュリティ」の詳細設定: 「最大同時実行数」をデフォルト値から引き上げます。これは、コンテナインスタンスが同時に80の同時HTTP要求を処理できることを表します。この80個のピットがいっぱいになっただけで、グーグルは新しい容器を引っ張ることができる。バックエンドデータベースの前に接続プールを設置します。
Pool) 、死死ロック最大拡張上限、脆弱なバックエンドのコア資産を保護する。
2.「コールドスタート」の破局に耐えられない神技
もしあなたの業務が非常に核心的なオンライン電気商支払、あるいは遅延に敏感なAPIインタフェースであれば、ユーザーは支払い時に2秒のコールドスタートに遭遇すると、直接支払いを断念する可能性がある。
設計者が優れた奥の手を調整する: 世界には無料の昼食はない。コールドスタートを完全に殺したいなら、縮小設定で「最小インスタンス数」を0から1に変更してください。
コストと収益: 1に変更した後、夜中に誰も訪問しなくても、グーグルは機械室であなたのために低配容器を常駐しています。これは少量の固定最低料金 (約1ヶ月数ドル) が発生しますが、世界中のユーザーが24時間の訪問はいつまでもミリ秒レベルで行われていますコールドスタートによる体験欠陥を徹底的に解消した。
まとめ
GCP Cloud Runを利用してServerlessの導入を行います。核心的な工業レベルの精髄は16文字にあります。
ミラーパッケージ、必要に応じて拡張、伸縮制御、カード死同時処理
。
貴重な時間をosの設置やファイアウォールの修理などの些細なシステム輸送に浪費する必要はありません。あなたのコードがローカルでDockerコンテナに入ることができれば、Cloud Runは無限の柔軟性、災害を自動的に許容し、予算が非常に抑えられた企業レベルのフロントエンド防御線を提供します。主導権をコード自体に返すことは、現代のクラウド原始時代で最も本格的で優雅な開発姿勢である。
