モダンなソフトウェア開発の課題【後編】
マイクロサービスの複雑性を解決する方法
マイクロサービスはシステムの複雑性を増大させる。これを解決するにはどうすればいいのか。
前編「モダンなソフトウェア開発のための開発チーム運営方法」では、開発チームを運営する勘所を紹介した。後編ではマイクロサービスの複雑性の解決方法と効果的なテスト方法を解説する。
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日本語版
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
“攻撃者優位”なサイバーセキュリティ、全ての「穴」をふさぐ方法とは? -
製品資料
実際に悪用される脆弱性は4%前後 優先的に対処すべき脆弱性を把握するには? -
製品資料
HubSpotの機能を拡張する法人データ活用法 -
製品資料
面倒で非生産的な「名寄せ」作業 高精度&高効率に実施するには? -
製品資料
名刺管理には「その先」がある 成果のでない営業活動から脱却する秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
Netflixのバックエンドは「ほぼJava」 3000超のアプリを支える開発基盤の裏側
-
2
ISMSの“コンサル丸投げ”が招く数千万円の無駄 NTTドコモビジネスの脱出劇
-
3
「Microsoft 365」が乗っ取られる 跡形もなくMFAを破る手口
-
4
「WSUS」終了の時限爆弾 “本命”移行先ツールとMicrosoft提唱の新管理手法
-
5
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
6
ベッドでの使用が「PC騒音」を悪化させる? Dellが推奨する冷却ファンの鎮め方
-
7
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
8
「企業内サーバ環境の利用実態」に関するアンケート
-
9
IT製品の導入に関するアンケート「サーバ&ストレージ」編
-
10
アラート47%削減 オープンハウスが捨てた「全部メール通知」の監視体制
ホワイトペーパーランキング PR
-
1
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
2
財務・会計はAI活用でどう変わる? 調査で見えた変革の道筋
-
3
AIが「わざわざ使うツール」になっていない? 業務で自然に使う導線にする秘訣
-
4
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
5
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
6
「結局、一部の人しか使わない」 AI活用が業務に定着しない根本的な理由
-
7
コスト分析で見る「デバイス復旧」の代償 損失額から導きだされた投資戦略とは
-
8
Macの安全神話は崩壊? 最新の脅威動向から見えた攻撃のトレンドと有効な対策
-
9
ゼロトラストにおける「IDaaSの課題」と補完すべき重要機能とは?
-
10
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー