マネージドサービスの活用で「Time to Market」を実現する
コンピューティングの進化とともに、アーキテクチャのトレンドは変化してきた。2010年からクラウドの時代となり、分散やDevOps、プラットフォームベースといったキーワードが注目を集め、アーキテクチャはモノリシックからマイクロサービスへと移行している。
こうした変化の背景にあるのが、「Time to Market」、つまり「すばやく、効率的かつ安定的に市場に価値を届けるという目的を達成するためだ」と川崎氏は説明する。クラウドネイティブも、切り口は違えど目指すところは同じで、「Time to Market」を実現するためだという。経済産業省の調査によると、人口減少に伴い、IT関連産業への入職者数は2019年を減少していくという。だからこそ、「クラウドネイティブの技術を使って、効率的かつ安定的に市場に届けることが重要になる」と川崎氏は言う。
IaaSやCaaS、PaaS、FaaSなど、現在、さまざまなマネージドサービスが登場している。数多くの選択肢を前に、どう選べば良いのか、頭を悩ませているエンジニアも多い。川崎氏は「各サービスの抽象度を意識して、選択してほしい」と語る。
マネージドサービスにおいて、抽象度と相反する価値が自由度である。ベンダーの管理レベルが下がると自由度が上がるが、ベンダーの管理レベルが上がると、それだけ自由度は低くなり、抽象度は上がる。「ベンダーの管理レベルが上がるメリットは、いろいろなベストプラクティスやテクノロジーを使って管理が行われるため、開発やデプロイの迅速性、生産性が上がることだ」と川崎氏。もちろん、自由度が低く、ブラックボックスが増えるというデメリットはある。「学習カーブや制約度合い、アーキテクチャ・運用方式の変更最適化に伴うコストを考慮する必要はあるが、高付加価値を求めるのなら、CaaSやPaaS、FaaSを選択するのがおすすめだ」と言い切る。
ではマイクロサービスの開発運用の複雑さをシンプルにするにはどんなプラットフォームを活用すれば良いのか。マイクロサービスアーキテクチャでは、複数のコンテナを連携する必要が生じるため、それを管理するオーケストレーション機能が必要になる。コンテナ・オーケストレーターの事実上の標準が、Kubernetesである。これは昨年12月に開催されたCNCFの主催イベント「KubeCon + CloudNativeCon North America 2018」で、サーベイに参加した企業の58%がKubernetesを本番環境で利用しているといった調査結果からもわかる。
Kubernetesは多くのメリットをもたらす半面、自前でクラスタ構築・運用管理をするのはなかなか難しい。本番運用において欠かせないマスターの可用性設定などはその代表例だ。ノード、ストレージ層の考慮、etcdのデータバックアップや同期、API Serverのバランシング、その他のコンポーネントとの協調など、さまざまな作業が必要になる。「こういった作業はオフロードしたいはず。そこでぜひ、使ってほしいのがAzure Kubernetes Service(AKS)だ」と川崎氏は力強く語る。
「Time to Market」を実現するサービスはAKSだけではない。AzureサービスにはAKSのほか、Visual StudioやVisual Studio Code、Azure DevOps、Azure Container Registry(ACR)といったサービスがある。これらのサービスを活用することで、「コンテナアプリのデリバリサイクル全体を効率化・簡略化できるようになる」と川崎氏は語る。
例えばAzure DevOpsは次の通りさまざまな便利な機能を持つ。チームの垣根を越えて作業を計画、追跡や相談したりできる「Azure Boards」、あらゆるプラットフォーム、クラウドに対応したCI/CDを使用して、ビルド、テスト、デプロイができる「Azure Pipelines」、プライベートGitリポジトリの入手により、プル要求と高度なファイル管理で、優れたコードを協力してビルドできる「Azure Repos」、手動の探索的テスト ツールを使用することで、テストと公開が自信を持って行える「Azure Test Plans」、パッケージを作成、ホストした後、チームで共有、ワンクリックでCI/CDパイプラインに成果物を追加できる「Azure Artifacts」などがその代表例だ。
さらにAzure DevOpsではこれらの機能のうち、ある程度の部分をテンプレート化して提供している。それが、「Azure DevOps Projects」である。「テンプレートはGitHubに載せている。興味のある人はぜひ、使ってほしい」(川崎氏)