Herokuとは何か? 開発者向けPaaSの元祖
Herokuは、dynoと呼ばれるマネージドコンテナ内でアプリケーションを実行するPaaSであり、サーバーを管理することなくシンプルなgit pushからデプロイします。
Herokuは、モダンなPaaSの開発者体験を広めました。コードをpushすれば実行され、設定すべきサーバーはありません。buildpackで言語を検出し、releaseをビルドして、dynoと呼ばれる軽量コンテナで実行します。add-onがデータベースやその他のサービスを提供します。開発者にやさしいデプロイのベンチマークであり続けています。
dynoとbuildpack
dynoは、アプリのプロセスを実行する軽量コンテナです。buildpackが言語を検出し、ソースから実行可能なslugを組み立てます。dynoの数とサイズを変更することでスケールし、管理すべき基盤サーバーはありません。
git pushのworkflow
従来はgit push heroku mainでデプロイします。Herokuはコードを受け取り、buildpackを実行し、releaseを作成し、dynoを起動します。Procfileがどのプロセス(web、worker)を実行するかを宣言します。デプロイとしてはほぼ最もシンプルなものです。
add-onと設定
- データベース、cache、loggingのためのマネージドadd-on。
- 環境ベースの設定のためのconfig vars。
- 新しいreleaseが公開される前にマイグレーションを行うrelease phases。
現在のHerokuの位置づけ
Herokuは、プロトタイプ、小規模チーム、そしてきめ細かい制御よりもシンプルさを重視するアプリに最適です。非常に大規模なスケールや特定のインフラ要件がある場合、チームはしばしば生のクラウドやKubernetesへ移行しますが、HerokuのDXは今なお新しいプラットフォームに影響を与えています。
CI/CDにおける役割
単純なgit pushにとどまらず、pipelineはCLI、container registry、またはHeroku API経由でHerokuにデプロイし、多くの場合GitHub Actionsでテストを実行した後に行います。Review appはpull requestごとに一時的なappを立ち上げ、pipelineはbuildをstagingからproductionへと昇格させます。
重要なポイント
- Herokuはアプリをdynoで実行し、git pushからデプロイするPaaSです。
- buildpackが言語を検出し、add-onがデータベースやサービスを提供します。
- pipelineは、多くの場合CIテストの後、CLIまたはcontainer registry経由でデプロイします。