DigitalOcean App Platformは、ポイント・アンド・クリックによるアプリケーション開発を実現することによって、DigitalOcean DropletとKubernetesベースのインフラストラクチャ・アズ・ア・サービスの間にあるギャップを埋めることを目的とした、特に開発者向けの新サービスである。
単にコードを書いてボタンをクリックすれば、自分の書いたコードが自動的にデプロイされて起動し、数百万、さらには数十億のユーザ規模にスケールできるというのは、すべての開発者にとっての夢だ。
DigitalOcean App Platformはアプリケーションの構築、デプロイ、管理、スケールアップを行う、完全マネージドなソリューションである。PythonやNode.js、Go、PHP、Rubyといった、多数のポピュラーな言語を使って開発されたサイトに加えて、静的なサイトもサポートしている。
同社はビデオを使って、アプリケーションのGitHubリポジトリのURLを指示するだけで、App Platformが構築に使用された環境を自動的に認識する様子を公開している。それ以降は、DigitalOceanによれば、簡単なコンフィギュレーションを行うだけで、App Platformがアプリケーションの動作に必要なインフラストラクチャ、データベース、オペレーティングシステム、アプリケーションランタイム、その他すべての依存関係のプロビジョニングと管理を行ってくれる。
同社VPのApurva Joshi氏から詳しい話を聞くことができた。
InfoQ: なぜDigitalOceansがアプリケーションプラットフォームを、このタイミングで提供するのでしょうか?
Joshi: DigitalOcean App Platformを使えば、ただGitHubリポジトリを指示するだけで、アプリケーションや静的サイトの構築、デプロイ、スケールアップを迅速かつ簡単に行うことができます。当社は独自のインフラストラクチャを保持しているので、他のプロバイダに比較してコストが安く、可搬性にも優れています。DigitalOcean Kubernetes上に構築されていますが、ユーザはKubernetesの複雑さを体感することもなく、そのパワー、スケール、フレキシビリティを活用することが可能です。さらに、App Platformはオープン標準をベースとしているので、通常のクローズドなPaaS環境に比較して、下位インフラストラクチャに対する可視性にも優れています。
一方で当社は、他のPaaSプロバイダとは違い、特にこれまで十分なサービスを得られていなかったグループ、すなわちスタートアップやSMBの開発者たちのニーズに合うようなプラットフォームを作りたいと思っていました。最新のCurrents(同社が公開している年次レポート)によると、企業創設者の65パーセントが、新たなビジネスに参入する上での最大の障害として、インフラストラクチャの維持をあげています。App Platformにおける当社の目標は、開発者の抱えるインフラストラクチャ管理の負担を軽減することでした。それによって開発者は、DigitalOceanが提供する簡便性というバリュープロポジションや、安価で予測性のある価格設定といったものに依存しながら、素晴らしいコードの開発にもっと時間を集中することができるのです。
InfoQ: DigitalOcean App PlatformとDigitalOcean Kubernetesの関係性について、詳しく説明して頂けますか?どのような時に、どちらを選ぶべきなのでしょう?企業のスケーリングに対するニーズの拡大に伴って後者が必要になった場合、App PlatformからKubernetesへのアップグレードパスは提供されるのでしょうか?
Joshi: App PlatformはDigitalOcean Kubernetes上に構築されているので、Kubernetesから継承されるすべてのメリット — パワー、スケール、フレキシビリティ — はすべてユーザに提供されます。当社のユーザからは、Kubernetesを使用したクラウドネイティブなテクノロジが最適なツールであるという声を耳にしているので、App Platformではオープンソースを基盤として持ちたいと強く望んでいました。さらに証明書管理やDDOS防御、グローバルなロードバランシング、自動ビルド、CDN、Security Isolationといった付加的な抽象化レイヤやターンキー機能も、追加コストなしで提供します。
DigitalOcean App PlatformとDigitalOcean Kubernetesのどちらを選ぶかは、基本的には簡便さとコントロールの選択ということになります。クラウドへの移行に際して開発者は、当社の簡便さを評価する一方で、選択の余地に対する価値も認めている、ということを当社は学んでいます。その結論が、両方の要求に応える、ということなのです。App Platformの簡便さが生産性の向上を実現する一方で、Kubernetesでは完全なコントロールを提供しています。
すでに説明したように、アップグレードやダウングレードの議論は必要ありません。どちらもニーズに合わせて拡張可能だからです。コンテナの美点はその定義上、プラットフォーム非依存であるという点にあります。それにより、ひとつのプラットフォームから別のプラットフォームへの切り替え(さらにはクラウドプロバイダ間の乗り換え)が、開発者にとって極めて簡単になります。とは言うものの、将来的には、DigitalOceans App PlatformからDigitalOceans Kubernetesへの移行(およびその逆)をもっとスムーズにするような計画もあります。 InfoQ:基盤にあるインフラストラクチャの可視性を向上する上で、オープン標準をどのように活用しているのでしょうか?
Joshi: プラットフォームがオープンソース上に構築されていることによって、ユーザには自動的に、インフラストラクチャに関する柔軟性と可視性をより高いレベルで提供できるようになります。オープンソースコミュニティ全般から絶えずロールアウトされているイノベーションを活用することも可能になります。
App PlatformはマルチテナントKubernetes(DOKS)クラスタのフリート上で運用されています。ワークロードのアイソレーションにはgVisorを、ネットワークのアイソレーションにはCilliumを、それぞれ使用しています。自動ビルドにはBuild-packsとKanikoを使用し、CloudflareがグローバルCDN、SSL、DDOS防御を提供しています。パスベースのルーティングを備えたIngressには、IstioとEnvoyを使っています。
アプリケーションの監視と警告にはPrometheusを、ロギングにはFluent Bitを採用しています。このフレームワークとプラットフォームにより、オープンシステム上にアプリケーションを構築することが可能になると同時に、ベンダロックインの不安なく将来的なイノベーションを理解できるようになります。
基盤となるプラットフォームに関する前提は、そのすべてがコミュニティによって開放され、構築されたものであり、心理的な安心と信頼、アプリケーションパラダイムの基盤を損なうことなくプラットフォームを複製する能力を提供します。さらには、開発者が中核となるオープンソーステクノロジにコントリビュートして、特定のニーズに対応できるように、App Platformの能力をさらに拡張することも可能です(プラットフォームが最新バージョンで基盤テクノロジスタックをアップグレードすることにより)。 InfoQ: DigitalOcean App Platformのロードマップを教えてください。
Joshi: 当面は、より多くの開発者にApp Platformを使ってもらえるようにしたいと思っています。今のところプラットフォームは、3つの静的サイトを無償で構築可能な"Starter"、アプリのプロトタイプを開発する"Basic"、運用アプリをデプロイする"Professional"という3つのティアで提供しています。今後数か月については、カスタムドメインコンフィギュレーションの改善、GitlabおよびBitbucketからのコードデプロイメントのサポート、ユーザ提供コンテナのサポート、デプロイ後のジョブの自動スケーリング、メトリクス指向の警告、通知機能などを計画しています。
Digital Ocean App PlatformのStarterティアは静的サイト用で無償、BasicティアとProfessionalティアはそれぞれ5ドルおよび10ドルである。まずはdocsを読み、serviceを試してみるとよいだろう。