14章クラウドとGo

クラウドサービス向けにアプリケーションを作成する場合、アプリケーションをコンテナイメージとしてビルドしてからデプロイする方法が一般的になりつつあります。

KubernetesやGoogle CloudのCloud Run、AWSのApp RunnerやLambdaなど、コンテナイメージをデプロイ可能なクラウドサービスは続々と増えています。これまでも、作成したアプリケーションをパッケージにしてパッケージ管理サーバーに置いて管理したり、Gitのリポジトリに置いてそこから直接インストールするような管理も行われてきましたが、クラウドベンダーの提供するインフラを利用して、コンテナイメージの管理からデプロイまで管理できるようになります。

このようなクラウドサービスとコンテナの活用が広がる中で、Goのシェアも拡大しています。Goはクロスコンパイルが簡単でビルドも早く、またランタイムも内蔵したシングルバイナリが生成できるため、コンテナを簡単に作成できます。Goが「クラウドネイティブ言語」と呼ばれることがあるのは、このコンテナとの親和性によるものです。

コンテナは最終的なデプロイが簡単というだけでなく、ローカルの開発環境でも活用しやすいというメリットがあります。クラウド時代だからといって、1人ごとに実行環境を作ってもらえるかと言うとそんなことはなく、「コスト削減のためにクラウドの利用量を減らして欲しい」と言われたりもするでしょう。ローカルの開発環境をきちんと作れることは大切です。

クラウドではないオンプレミスの環境でも、コンテナを活用できます。しかし、自前でKubernetesクラスタなどを運用する必要があり、技術的なボトルネックはコンテナの作成よりも、むしろクラスタの運用にあります。自前の運用でクラウドサービスを利用する以上のコストパフォーマンスを出すには、かなりの大規模なシステムである必要があります。 ...