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

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

2021年01月06日 08時00分 公開

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

 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倍以上に増えている。

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

Copyright © ITmedia, Inc. All Rights Reserved.

新着ホワイトペーパー

製品資料 株式会社ジャストシステム

ノーコードで基幹システム運用を改善、解決できる課題やツール選びのコツを解説

基幹システム運用の課題を解消すべく、ノーコード開発ツールを導入する動きが加速している。数あるツールの中からどのようにツール選定を進めたらよいのか、またどのような課題を解決できるのか、具体的なツールも含めて解説する。

事例 株式会社ジャストシステム

ベンダーに依存しないシステムを自社で開発、東亜建設工業に学ぶその推進方法

老朽化したシステムの刷新に向けノーコード開発ツールを導入した「東亜建設工業」。その活用により、ベンダーに依存することなく柔軟性と持続可能性の高いシステムの構築を推進できる体制を実現している。同社の取り組みを詳しく紹介する。

事例 株式会社ジャストシステム

ノーコード開発で大幅な業務効率化を実現、「八千代工業」の取り組みとは?

社内業務の徹底的な効率化を目指す「八千代工業」。最初に導入したRPAでは、紙に依存した業務への対応は難しかったが、これらをデジタル化するためにノーコード開発ツールを使ってアプリを開発し、大きな成果を挙げている。

製品資料 株式会社ジャストシステム

IT人材不足を補うノーコード開発、全社DXにつながるツール選定の4つのポイント

IT技術の重要性が高まる一方、IT人材不足が加速している。その不足を埋めるため、自社の業務システムをノーコードで開発する動きが広がっているが、ノーコード開発を導入する際には、将来的な全社DXを考慮してツールを選ぶ必要がある。

製品資料 株式会社ジャストシステム

プロコード/ローコード開発による業務のシステム化、作業の属人化をどうする?

業務効率化に有効なシステム化だが、プロコードやローコードによる開発では場合によって複雑なコーディングが必要となり、かえって新たな課題を生みかねない。そこで登場したのが、スキル不要で使えるノーコード開発ソリューションだ。

From Informa TechTarget

お知らせ
米国TechTarget Inc.とInforma Techデジタル事業が業務提携したことが発表されました。TechTargetジャパンは従来どおり、アイティメディア(株)が運営を継続します。これからも日本企業のIT選定に役立つ情報を提供してまいります。

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

news026.png

「パーソナライゼーション」&「A/Bテスト」ツール売れ筋TOP5(2025年4月)
今週は、パーソナライゼーション製品と「A/Bテスト」ツールの国内売れ筋各TOP5を紹介し...

news130.jpg

Cookieを超える「マルチリターゲティング」 広告効果に及ぼす影響は?
Cookieレスの課題解決の鍵となる「マルチリターゲティング」を題材に、AI技術によるROI向...

news040.png

「マーケティングオートメーション」 国内売れ筋TOP10(2025年4月)
今週は、マーケティングオートメーション(MA)ツールの売れ筋TOP10を紹介します。