2021年01月06日 08時00分 公開
特集/連載

マイクロサービスの複雑性を解決する方法モダンなソフトウェア開発の課題【後編】

マイクロサービスはシステムの複雑性を増大させる。これを解決するにはどうすればいいのか。

[Adrian Bridgwater & Cliff Saran,Computer Weekly]
iStock.com/alphaspirit

 前編「モダンなソフトウェア開発のための開発チーム運営方法」では、開発チームを運営する勘所を紹介した。後編ではマイクロサービスの複雑性の解決方法と効果的なテスト方法を解説する。

 PagerDutyのエンジニアリング担当上級ディレクターを務めるアラップ・チャクラバーティ氏は、「マイクロサービスはこれまでよりもずっと、顧客エクスペリエンスにフォーカスできるようになる」と語る。

 ただしチャクラバーティ氏の経験では、マイクロサービスの利用は爆発的な複雑性と、それに伴うあらゆる課題をもたらすこともある。

 Bloombergは一部のモノリシックアプリケーションをコンテナ化したマイクロサービスに分割した。だがこのアーキテクチャは独自の課題をもたらした。特に、何が起きているのかを開発者が完全に把握するのが難しくなった。

 Bloombergの開発エクスペリエンスチーム上級エンジニア、ピーター・ウェインライト氏によると、分散トレースは、サービスの依存関係を把握するのに役立つ。どのアップストリームサービスがダウンストリームサービスに依存しているかを把握できる。

 「その代表例が証券計算サービスだ。証券の世界を中心とした計算は、多数の場所で行われる。そうした計算のためのリクエストをどこにルーティングすべきか判断するのは簡単ではない。われわれはリクエストのための『ブラックボックス』ルーターとなる一種のスマートプロキシを利用する」。ウェインライト氏はそう説明する。

 「サービスは、誰が要求しているのかを知らなくてもリクエストされたデータを提供する。残念ながら、性能問題があるときにこれが障壁となる。分散トレースは、かつてモノリシックがエンジニアに暗黙のうちに与えていた『自分が誰を呼び出しているのか』『誰が自分を呼び出しているのか』の可視性を復元する」

 エンジニアが確実に自分のアプリケーションに集中できるよう、Bloombergは「Kubernetes」「Redis」「Kafka」「Chef」といったOSS(オープンソースソフトウェア)を使って拡張可能なプラットフォームを構築した。ウェインライト氏によると、これで開発者は自分たちのアプリケーションの重量化や軽量化のために、ターンキーインフラを利用できるようになった。

モダンなソフトウェア開発におけるテスト

 バグを減らすことに関しては、オープンソースコードのテスト方法から学べることが多数ある。

 SUSEのCTO(最高技術責任者)、ジェラルド・ファイファー氏は「『GCC』(GNU Compiler Collection)のような成功したOSSは、パッチを提出する前のテストを何十年も義務付けてきた」と話す。

 「LibreOffice」などは、「Gerrit」などのツールを使って変更を追跡して「Jenkins」などの開発&テスト自動化ツールと緊密に連携させている。

 「統合テストの効力を長期的に保つためには、それを真剣に受け止める必要がある。それを飛ばしたりリグレッション(訳注:機能・性能が低下すること)を無視したりすることがあってはならない」とファイファー氏は言う。

 集中的な自動化は、ポリシーの徹底とコードの品質の保証が成功の要因だと同氏は考える。「自分のワークフローがコードの検証と承認を伴うのであれば、検証プロセスが始まる前から自動化されたテストを行うアプローチが望ましい」

 ファイファー氏によると、LibreOfficeやGCCには品質を重視して成功を収めた他のプロジェクトと共通する重要な特性がある。「バグが修正されるたびに、リグレッションテストスイートに新しいテストが加わる。それによって古い問題が再び忍び込む事態を防止できるだけでなく、新しい問題が入り込む事態も防止できる。同じことは新機能にも当てはまる」

 Bloombergのサービスメッシュアーキテクチャのテスト方法について、ウェインライト氏はこう形容する。「変更を固定されたスケジュールにまとめるのではなく、テストを向上させれば変更のペースを速めることができる。小さな変更であれば失敗が少なくなり、対策もシンプルになる」

 コードの品質は欠陥率やエラー予算などで測定されることもある。ウェインライト氏の考えでは、テストを簡単にすることの真のメリットは精神状態にある。「自分たちのツールに自信を持っているチームの方が短期間で進歩する。つまり、顧客に価値を提供する速度を速めることができる」

 ただしPagerDutyのチャクラバーティ氏が指摘する通り、ここ数年で最大の変化は性能に関して不完全なものが顧客に容認されなくなったことにある。「エンジニアには取り組むべき『100ミリ秒ルール』があると考える人が多い。『後で』という反応はもはや受け入れられなくなった」

 チャクラバーティ氏によると、Webスケールアプリケーションを構築するというアイデアは、コロナ禍の中ではごく当然のことと受け止められている。PagerDutyの統計によれば、新しいコードとトラフィック量の増大はインシデントの増加につながっており、業界によっては11倍以上に増えている。

 「われわれは顧客エクスペリエンスに影響を与えずに修正することをもっとうまくできるようにならなければならない。自動修正はまだ初期の段階だが、われわれが技術に委ねるコントロールは増え始めている。機械学習がさらに進歩すれば、過去のイベントに基づく自己修復を一部のシステムに教えられるようになるだろう。それがたとえめったに起きない状況だったとしても」(チャクラバーティ氏)

ITmedia マーケティング新着記事

news023.jpg

「6G」の特許出願レースは中国がリード、日本は追い付けるか?
2020年台後半には実用化が始まるといわれる6Gの技術。日本は世界で存在感を示せるでしょ...

news016.jpg

「パーソナライゼーションエンジン」 売れ筋TOP10(2021年9月)
今週はパーソナライゼーション製品の売れ筋TOP10を紹介します。

news018.jpg

アフリカFinTech事情 初のキャッシュレス大陸への勢いが止まらない
FinTechのユニコーンが続々と生まれるアフリカ大陸。砂漠の南が燃えています。