Go言語チームとGoogleが「Go Cloud」プロジェクト発表。同一コードでAWSやGoogle Cloudなどに対応できるポータブルなクラウドアプリの実現へ
Go言語チームとGoogleは、オープンソースの新プロジェクト「Go Cloud」を発表しました。
Go Cloudは、さまざまなクラウドの一般的な機能を共通のAPIで利用できるようにすることで、Go言語のソースコードを書き換えることなくポータブルなクラウドアプリケーションの実現を目指すというものです。
Go言語はGoogleが中心となってオープンソースで開発されているプログラミング言語で、シンプルにコードを記述できるため学習コストが小さく、タイプセーフかつメモリセーフにできているため安全なプログラムを記述しやすく、並列処理の記述も容易、コンパイルや実行が高速などの特長があります。
また、WindowsやmacOS、Linux、FreeBSD、iOS、Androidなど、さまざまなOSやCPUに対応したバイナリを生成でき、最近ではWebAssemblyへの対応も発表しています。
Go Cloudは、こうしたマルチプラットフォームへの対応をクラウドへも広げたものといえるでしょう。
共通APIとGo言語でクラウドの違いを吸収する試み
Go Cloudが具体的にどのようなものなのか、Go言語のブログにポストされた記事「Portable Cloud Programming with Go Cloud」(Go言語でポータブルクラウドプログラミング)から、一部を引用します。
We have identified common services used by cloud applications and have created generic APIs to work across cloud providers. Today, Go Cloud is launching with blob storage, MySQL database access, runtime configuration, and an HTTP server configured with request logging, tracing, and health checking. Go Cloud offers support for Google Cloud Platform (GCP) and Amazon Web Services (AWS). We plan to work with cloud industry partners and the Go community to add support for additional cloud providers very soon.
私たちはすでに、クラウドアプリケーションで使用される一般的なサービスを特定し、クラウドプロバイダ間で動作する汎用のAPIを開発しました。そして今日、Go Cloudとしてまず、Blobストレージ、MySQLデータベースへのアクセス、ランタイムコンフィグレーション、HTTPサーバとそのロギング、トレーシング、ヘルスチェックなどを立ち上げました。
Go Cloudは現時点でGoogle Cloud PlatformとAWSに対応しています。私たちは今後、クラウド業界のパートナーやGo言語コミュニティとの協力により、まもなくさらに多くのクラウドプロバイダへの対応を計画しています。
これまでもクラウド間の違いをライブラリなどで吸収しようという試みは何度か行われてきました。例えば「2016年6月にバージョン1.0に到達した「Apache Libcloud」などはその代表例でしょう。
しかし残念ながらこれが普及することはありませんでした。果たして今回はどうでしょうか?