モダンなソフトウェア開発の課題【後編】
マイクロサービスの複雑性を解決する方法
マイクロサービスはシステムの複雑性を増大させる。これを解決するにはどうすればいいのか。
前編「モダンなソフトウェア開発のための開発チーム運営方法」では、開発チームを運営する勘所を紹介した。後編ではマイクロサービスの複雑性の解決方法と効果的なテスト方法を解説する。
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.
Computer Weekly日本語版
この記事の著者
関連記事
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
2
「Microsoft 365のセキュリティ運用」に関するアンケート
-
3
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
4
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
5
221人調査で分かった「情シス最大のストレス」は?
-
6
「Salesforceのテスト自動化ツール」に関するアンケート
-
7
「データストレージの活用方法」に関するアンケート
-
8
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
9
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
10
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー