HerokuからCode Engineへの移行を始めましょう
Heroku ユーザーを IBM Cloud® Code Engineに招待します。
Code Engine は、コンテナー化されたワークロードを実行する、完全に管理されたサーバーレス・プラットフォームです。Code Engine は、ソース・コードからコンテナー・イメージを作成することもできます。 Code Engine エクスペリエンスは、ホストに必要なインフラストラクチャーではなく、コードの作成に集中できるように設計されています。
Code Engineは、以下の主要な目標を考慮して設計されています。
- コードにフォーカスします。Code Engine は、簡素化された開発者エクスペリエンスを提供します。 基礎となるインフラストラクチャーについて学習したり管理したりする必要はありません。
- 最新のランタイム特性のサポート (自動スケーリング、アイドル時のゼロへのスケーリング、マネージド・サービスおよびセキュリティーとのシームレスな統合など)。
- 12 要素アプリ、イベント・ドリブン機能、実行から完了までのバッチ・ジョブなど、すべてのクラウド・ネイティブ・アプリケーションをサポートします。 コンテナー化できる場合は、Code Engineで実行できます。
- 実際に使用するリソースのみの支払い。
もしあなたがHerokuのバックグラウンドを持っているなら、これらの機能の多くは聞き覚えがあるだろう。 しかし、Code Engineには、Herokuが提供するものをも超えることができるいくつかの新しい機能も含まれており、ゼロにスケールして料金を発生させないアプリケーションも含まれている。 さらに、 Code Engine には、 無料層を含む従量課金 (PAYG) アカウントが必要です。 そのため、ユーザー・エクスペリエンスの構文上の違いを過ぎると、ユーザーとアプリケーションは Code Engineでしっくりくるようになります。
目標
- Code EngineとHerokuの類似点を学びましょう。
- Code Engineでアプリケーションをデプロイする一般的なプロセスについて説明します。
- Code Engineを使用して、ローカル・システム上のコードからアプリケーションをデプロイします。
前提条件
Code Engineを開始する前に、アカウントをセットアップして CLI をインストールする必要があります。
-
すべてのCode Engineユーザーは、従量課金 (PAYG) アカウントを持っている必要があります。
-
コンソールを介してCode Engineを使用できますが、本書の例では、コマンド行に焦点を当てています。 そのため、Code Engine CLI をインストールしなければなりません。
ibmcloud plugin install code-engine
詳しくは、『Code Engine CLI のセットアップ』を参照してください。 CLI について詳しくは、Code EngineCLI リファレンスを参照してください。
Heroku と Code Engine の用語を比較する
Code Engineでアプリのデプロイを始める前に、Code Engineの基本を学んでください。 以下の表は、Cloud Foundryと Code Engineのハイレベルな用語の違いを説明しています。
Heroku | Code Engine | 説明 |
---|---|---|
該当なし | リソース・グループとプロジェクト | ワークロードのグループ化。 どのワークロードを各グループに入れるかの具体的な選択は、ユーザーによって定義されます。 「リソース・グループ」はIBM Cloudの概念であり、「プロジェクト」はCode Engine 固有の概念です。 プロジェクトは、ワークロード間の分離レベルを提供します。 プロジェクトの管理を参照してください。 |
ディノス | Containers | ダイノは、ヘロク・コードを実行する軽量のコンテナーで、ユーザーの代わりに管理されます。 Code Engineでは、基礎となるコンテナーは Kubernetes に基づいており、自動的に管理されます。 |
アプリケーション | アプリケーション (APP) | 例えば、REST API からの HTTP 要求、Web ページ要求、イベントなどに応答するワークロード。 Code Engine では、アプリケーションに HTTP サーバーをコードの一部として組み込む必要があります。 Code Engine アプリケーションは、着信負荷に基づいて自動的に拡大/縮小します。 必要に応じて、最小スケールと最大スケールを構成できます。 デフォルトでは、アプリケーションはポート8080をリッスンする。 この動作は、コンソールまたは CLI
--port フラグを使用してオーバーライドできます。 Code Engineでのアプリケーションの操作を参照してください。 |
該当なし | ジョブまたはバッチ・ジョブ | ジョブは、あなたの実行コードの1つ以上のインスタンスを並列に実行します。 HTTP 要求を処理するアプリケーションとは異なり、ジョブは一度実行したら終了するように設計されています。 ジョブを作成するときには、ジョブの実行時に毎回使用するワークロードの構成情報を指定できます。 ジョブおよびジョブ実行の処理を参照してください。 |
heroku create および git push heroku main または heroku container:push web |
app create |
アプリケーションを作成するプロセス。 Heroku では、アプリを作成し、それにコードをプッシュします。 コードはビルドされ、その単一ステップでデプロイされます。 Code Engineを使えば、イメージリポジトリからコンテナイメージを取り出したり、GitHub,などのリポジトリからソースコードをビルドしたり、システム上のローカルファイルからコードを取り出したりすることが、すべて1つのコマンドでできる。 DockerfileやPaketo buildpackを使ってコードをビルドすることができる。 Code Engine コンソールからだけでなく、CLI の単一ステップからもビルドすることができます。 ビルドの計画を参照してください。 |
カスタム・ドメイン | カスタム・ドメイン・マッピング | どちらのサービスでも、ワークロードに対する外部 URL を定義および管理できます。 Code Engine は、コンソールから カスタム・ドメイン・マッピング をサポートします。 IBM Cloud Internet Services または任意のその他のドメイン・プロバイダーを使用して、 カスタム・ドメイン を追加することもできます。 |
Code Engineのその他の用語と機能については、 Code Engineの詳細 を参照してください。
IBM Cloud にログインします。
IBM Cloud アカウントにログインしてリソース・グループをターゲットにするには、以下の手順を実行します。
-
IBM Cloud CLI にログインします。
ibmcloud login
-
以下のコマンドを実行して、リソース・グループをターゲットに設定します。 リソース・グループのリストを取得するには、**
ibmcloud resource groups
**を実行します。ibmcloud target -g <resource_group>
出力例
Targeted resource group default
プロジェクトの作成
Code Engine "project" は、関連するワークロードを論理コレクションにグループ化します。 企業の組織構造、ワークロード間の依存関係、開発環境とテスト環境と実稼働環境の比較など、意味のある基準に基づいて、ワークロードをさまざまなプロジェクトにグループ化できます。 その後、 これらのプロジェクトへのアクセスを構成 できます。 単一プロジェクト内のワークロードはプライベート・ネットワークを共有し、プロジェクトのセキュリティー境界内で分離されることに留意してください。 プロジェクト内のすべてのワークロードは、クラスター外部のワークロードによって認識されることを気にすることなく、相互に自由に対話できます。 異なるプロジェクトのワークロードが相互に通信するようにしたい場合は、通信にインターネットまたは内部 IBM プライベート・ネットワークのいずれかを使用しなければなりません。 詳しくは、 Code Engine アプリケーションの可視性のオプション を参照してください。
sample-proj
という名前のプロジェクトをCode Engineに作成します。
ibmcloud ce project create --name sample-proj
出力例
Creating project 'sample-proj'...
ID for project 'sample-proj' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'.
Waiting for project 'sample-proj' to be active...
Now selecting project 'sample-proj'.
OK
プロジェクトがコンテキスト用にも選択されていることに注意してください。したがって、後続のすべてのアプリケーション関連コマンドは、この新規 sample-proj
プロジェクトのスコープ内にあります。
アプリケーションのデプロイ
このサンプル・アプリケーションは、 サンプル GitHub リポジトリーからコードをプルします。 このコードは、 application create
コマンドを使用してコードを Code Engine に簡単にプッシュします。 アプリケーションの名前とソース・コードの場所を指定する必要があります。
以下の例では、buildpack
ストラテジーを使用する「myapp
というアプリケーションを作成し、カレント・ディレクトリー .
にソースコードの場所を提供している。
ibmcloud ce app create --name myapp --build-source https://github.com/IBM/heroku-to-code-engine
出力例
Creating application 'myapp'...
Packaging files to upload from source path '.'...
Submitting build run 'myapp-run-220999-210706331'...
Creating image 'private.us.icr.io/ce--6ef04-khxrbwa0lci/app-myapp:220418-0207-askql'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220000-210706331' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK
https://myapp.abcdbwa0lci.us-south.codeengine.appdomain.cloud
完了です。 これで、インターネット向けアプリケーションが作成されました。 アプリケーションのコード自体は、Herokuアプリケーションで使われているものと同じで、Code Engineコマンドが少し違うだけです。
前の**app create
**コマンドについて詳しく見てみましょう。 app create
の出力は、アプリが作成されデプロイされる前のビルド実行の進行に関する情報を提供していることに注目してほしい。
- Code Engine は、(イメージから直接プルするのではなく) ソース・コードからアプリケーションを作成する要求を受け取ります。
- Code Engineは、選択したプロジェクトに関連付けられているIAMサービスIDとAPIキーをチェックします。 このサービスIDは、IBM Cloud Container Registryへの読み書きが許可されていなければならない。 サービス ID が存在しない場合は、Code Engine によって作成されます。 このサービス ID は、同じプロジェクトから実行される後続の Code Engine ビルド依頼に使用されることに注意してください。
- この例では、GitHubの公開リポジトリ
--build-source https://github.com/IBM/heroku-to-code-engine
)からコードをビルドします。ソースコードはアーカイブファイルにまとめられ、アカウントのIBM Cloud Container Registryインスタンス内の管理ネームスペースにアップロードされます。 ローカル・ビルドのターゲットにできるのは IBM Cloud Container Registry のみであることに注意してください。 IBM Container Registry について詳しくは (割り当て量制限およびアクセス権についての情報を含む)、IBM Cloud Container Registry の概要を参照してください。 - Code Engine は、ソース・コードをイメージにビルドします。 ソース・イメージは、ソース・アーカイブ・ファイルと同じ名前空間に作成されます。
- ビルドが完了すると、アプリケーションがデプロイされます。 提供された URL からアプリケーションにアクセスできます。
Code Engineを使えば、自動スケーリングや更新のブルーグリーンロールアウトなど、Herokuと同じ機能の多くを自動的に利用できますが、アプリケーションがアクティブでない場合に課金されないことを保証するダウン・トゥ・ゼロのスケーリングなど、より新しい機能のメリットも享受できます。
ソース・コードを作成するためのオプションについて詳しく説明します。 application create
およびjob create
コマンドを参照してください。
アプリケーションとジョブについて詳しく知りたいですか? Code Engine でのアプリケーションの操作およびジョブおよびジョブ実行の処理を参照してください。
クリーンアップ
このチュートリアルを完了すると、以下のコマンドを使用して作成したリソースをクリーンアップできます。
アプリケーションの削除
ibmcloud ce app delete --name myapp
アプリを削除すると、関連付けられたビルド・ファイルも削除されます。
最後に、ビルドが IBM Cloud Container Registry から作成したイメージを削除します。
- IBM Cloud コンソールで レジストリー にナビゲートします。
- アプリケーション名を検索して、アプリケーションに関連付けられているアーカイブとイメージを見つけます。
- アーカイブとイメージを選択して削除します。
動画の文字起こし
こんにちは。私の名前は JJ Asghar で、 IBM Cloudの開発者アドボケートです。 最近では、ヘロクが自由層の政策を変えるという話を聞いたことがあるかもしれない。 多くの開発者にとって課題となっています。ここでは、ほんの少しのステップで IBM Cloud から Code Engine に Heroku を移行する方法を説明します。 では始めましょう。これを使って、どれだけ早くシステムを作動させることができるかを見てみましょう。
まず、これを見たことがない場合、2022 年 11 月 28 日からヘロクの公式ブログ内の実際の行については、無料の製品プランを提供することを中止し、無料のディノスとデータ・サービスをシャットダウンすることを計画しています。 影響を受けるユーザーに一連の E メール通信を送信します。 初心者向けの多くの初心者向け Web アプリケーションでは、これは困難です。 最初はヘロクを使ったという事実を知っているので、これは多くの人にとって非常に大きなヒットで、ヘロクから Code Engineへの変換がいかに簡単かをお見せしたいと思います。
まず最初に、私が作成した素晴らしい小さなアプリケーションを見てみましょう。 ここでアプリケーションを起動すると、小さなフラスク・アプリが用意されています。 Python が何であるか分からない場合は、Python が標準ポートでアプリケーションを実行できるようにするための形式です。 このアプリケーションに「Hello World!」というメッセージがあるとします。 既にデプロイしています。ここで確認できます。 heroku.comには、素晴らしい実動アプリケーションが用意されています。 「ハロー・ワールド」と書かれています私たちはそれを変えたいと思っています これを更新したいので、先に進み、すぐに「Hello Moving from Heroku to Code Engine」に更新します。
先に出て行きましょう git add .
git commit -m “update hello line”
次に、コードをヘロクにプッシュする通常の方法と同じように、プッシュします。 これが Code Engine内のまったく同じプロセスであることをお見せします。 ここでは、新しいプロジェクトを作成します。まず IBM Cloud にログインし、そこから新しいプロジェクトを作成します。次に、プロジェクトをデプロイして、プロジェクトが機能することを確認します。
そこで先に進み、最初にヘロクにデプロイしました。すべての作業コードがあることを確認するために先に進み、これを再ロードします。そこで、ヘロクから Code Engine に移動し、コードが機能することを確認します。 これは素晴らしいです。
ここでは、実際に Code Engine をこの一部として取得します。まず、 IBM Cloud にログインする必要があります。 そのため、 IBM Cloudにログインしてみましょう。 IBM Cloud ビデオをセットアップしていない場合、または IBM Cloud アカウントをセットアップしていない場合は、上記を見るとこのビデオへのリンクが表示されます。これをビデオに挿入します。
ここで自分の名前をコピーして、パスワードを受け取り、問題なくログインします。これは素晴らしいことですが、 次に、 ibmcloud ce project create —name amazing product production app
を実行します。 これで私たちの素敵な小さな ... 最初にターゲットを指定してください。 デフォルトのリソース・グループを取得します。次に、プロジェクトを作成します。 -行くぞ ほんの一瞬だけでいい。 これで、名前を任意の名前に変更できます。
これは、プロジェクトの包括的なものにすぎません。これは有用です。 次に、次のコマンド ibmcloud ce app create —name pythonbackend — build-source . —strategy build packs
を実行します。
requirements.txtが既にあるため、このアプリケーションは十分にスマートになっているので、「これは Python アプリケーションです。 さあ、さあ、それを作りましょう!」いい感じですね。 ご覧のとおり、ここではステップ 1 を実行しています。 ビルドを実行しています。これは良いことです。 私たちにとっても良いプライベート・イメージを生み出します。これは役に立ちます。 少し時間がかかります。 ここでは、待機せずにこれを実行したい場合 ( -nw
)、実際にこれをバックグラウンドに配置して、それが起動するのを待ってから、この
build run get
実際の名前を使用して確認できます。 私たちはこのライブを見ているので、ここでこれを実行します。
完璧 ! ここでこの URL を開いてみましょうご覧のようにこの URL がここに来ました
「hello moving from Heroku to Code Engine」
完了です。 私はヘロクと全く同じコードを取った 新しいプロジェクトを作成してからアプリケーションを作成し、それをプッシュしました。自分で何ができるかを想像してみてください。 これは、 Code Engine の能力を示しています。無料層では、本当に無料です。これは、Heroku のように、将来のことではなく、将来のことでもないことを示しています。 Code Engine は永久に無料です。これは非常に優れており、できれば、お客様の生活を少し楽にすることができます。
ご視聴いただきありがとうございます。ご質問がございましたら、Twitter のハンドルは @jjasghar になります。または、 awesome@ibm.com. 私の仕事は、決して手を差し伸べることをためらわずに、人格的なオタクになることです。
どうもありがとう。
さようなら。