ベルリンで開催された、マイクロサービスに関するmicroXchgカンファレンスにおいて、Adrian Cockcroft氏はマイクロサービスのファンクションへの縮小”という講演を行った。この講演の主題は以下の点である。通信速度が高速化し、バイナリプロトコル・設定管理とコンテナ技術が使用できるようになったことで、複数の(マイクロ)サービスから構成されるアプリケーションが配置できるようになった。更に'サーバレス'技術により、データセンター内、エッジサーバ上、もしくはオンプレミスサーバ上で素早く開発されるfunctions-as-a-service (FaaS)を実行するための潜在能力を持つことができるようになった。現代の組織は、事業価値を効率よく提供するために、アプリケーションのプロトタイプや構築を高速に行うことを求められている。そして、現在のエンタープライズソフトウェア開発の最も大きな課題は、組織の中の人々とプロセスに関連している。
AWSのクラウドアーキテクチャ戦略部長であるCockcroft氏は、今日エンジニアが利用可能な能力に関連し、10年前のソフトウェアデリバリの状況について議論することから講演を始めた。1990年代と2000年代には、物理ハードウェアの手動での準備に際し、オペレーションチームが配置プロセスに関わる成果物を可能な限り少なく(潜在的には単一の'モノリシック'なアプリケーションと)するよう最適化することが課題であった。このことはしばしばアーキテクチャアンチパターンである‘巨大な泥団子’を作成する状況を生んだ。
ソフトウェア開発業界が2000年代にサービス指向アーキテクチャ(SOA)を持ち上げ、結果として数々のWS-*標準を規定した。それにも関わらず、先ほど述べた配置できる成果物の数を最小化する傾向と1Gbit/sに制限されるLAN速度のために、少数のSOAP/XMLメッセージによりやりとりを行う粗粒度のAPIを使用する大規模サービスの開発が支持された。対照的に、現在のLAN通信は最大25Gbit/sの速度で行うことができ、Avro、gRPCそしてsimple binary encodingのような効率的なバイナリエンコーディングプロトコルを活用することで、最低でも二桁のオーダでメッセージ交換の効率的が改善された。
最新世代のAWSのインスタンスは 1Gbit/sではなく25Gbit/sのネットワークで接続され、これをAvroやgRPC(そしてもし本当に他を出し抜きたいならsimple binary encoding)のようなバイナリ通信プロトコルの使用と組み合わせることで、(中略)現代的なマイクロサービスアーキテクチャスタイルを採用することを可能とした。
約5年前に''第1のDevOpsツールの活用の波'が発生し、ChefやPuppetなどにより自動化されたプロビジョニングとハードウェア設定、継続的デプロイメントとソフトウェアの更新が可能となった。Cockcroft氏は、Netflix在籍中にはこのスタイルの"自動化されたシステム管理"は採用されず、代わりにNetflixのチームはimmutable infrastructureの採用を選択したと考察した。Netflixでは、あらかじめ用意されたAmazon Machine Images (AMIs)のような粗粒度のアプリケーション成果物は、プログラムにより仮想マシン(VM)インスタンスと関連づけることができ、ロードバランサの背後にある動的にスケールする Auto Scale Group (ASG)に配置することが可能だった。このことは、オペレーティングシステム(OS)の要素の操作により配置や更新を行うよりもアプリケーション機能の"適切な更新"を可能とした。
より最近では、コンテナ技術のような"DevOpsの第二の波"の発生により、immutable infrastructureの使用を更に推進した。このOSレベルの仮想化の技術特性はソフトウェアシステム成果物の作成や初期化を比較的に高速にすることを可能し、配置に必要な時間は分単位から秒単位となった。コンテナ技術が広く採用され、Dockerのデファクト標準化のイメージを開発したことで、標準化されたリソースが作成される道へと進んだ。例えば、多くのデータストアとミドルウェアのベンダは製品をあらかじめパッケージ化し、一般的な使用のために設定した公式のDockerイメージを提供している。
Cockcroft氏は、‘サーバレス’もしくは‘function as a service’ (FaaS)技術に関する最近の傾向により、ソフトウェア開発の更なる革新が始まっていると主張した。’配置を高速化しずっと実行する’ためのVMとコンテナを用いた以前のモデルは、現在'素早く配置し必要に応じ実行(支払い)する'ためにサーバレスの使用に変更されつつある。
AWS LambdaやServerlessyのようなFaaSによって単純化されたプログラミングモデル、配置の柔軟性、そして構成可能性により、Cockroft氏はシステム全体を素早くプロトタイプして構築することが可能となったと述べた。AWS Greengrassのような、AWS Lambda関数をLinuxベースのIoTデバイス上でオフライン実行することのできる技術によって、サーバレス技術の"データセンターからエッジサーバ、オンプレミスサーバでも"という応用可能性の更なる拡大が約束されている。
AWS Lambdaのようなサーバレス技術の勃興により、システム全体がその日のうちに構築できるようになり、'リフトとシフトオペレーションに投資すべきか? それとも現在のアプリケーションを再構築すべきだろうか?'と自問せざるを得なくなった。。
講演の締めくくりとして、Cockroft氏は現代的なエンタープライズソフトウェア開発に関する多くの問題が、組織内の人々とプロセスに関連しているということを示唆した。‘逆Conway作戦’のようなアプローチや、Pheonix ProjectやDevOps Handbookのような資料が変化を主導するために役立つ可能性がある。マイクロサービスアーキテクチャスタイルは、機能横断的で自立し、事業単位に高度に沿った体制に良く適合する。
マイクロサービスはサイロ組織ではうまく機能しない。マイクロサービス開発では各サービスの境界内の開発活動に高度な信頼が必要である。サービスプロバイダ間で起こりうる潜在的な信頼の低さはよく設計されたAPIとSLAによって緩和されるべきである。
Adrian Cockcroft氏のmicroXchgでの講演である"マイクロサービスのファンクションへの縮小"の動画はカンファレンスのYouTubeチャンネルで見つけることができる。また、この話題に関する追加の詳細は Cockroft氏の最近のブログ投稿である“モノリスからMicroserviceと通じたファンクションへのビジネスロジックの進化”で確認することができる。
Rate this Article
- Editor Review
- Chief Editor Action