SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

キーパーソンインタビュー(AD)

レガシーシステムのモダナイゼーション成功の秘訣とは? 事例で学ぶ、品質と生産性を両立するシフトレフトな開発

  • このエントリーをはてなブックマークに追加

 「レガシーシステムの老朽化を経営者が課題として認識してきているのをリアルに感じています」と話すのは、伊藤忠テクノソリューションズ(CTC)にてサービスモダナイゼーションを数多く実現している細江勝俊氏だ。サービスの最新鋭化にはAPIでマイクロサービス化していくことが欠かせない。その過程にはどのような課題があり、具体的にどのように解決していくのか。細江氏に、現場で直面した課題や解決していくうえでのポイントをお伺いした。

  • このエントリーをはてなブックマークに追加

システムのモダナイゼーションで採用が進むマイクロサービス

 細江氏は、当初からIT新規事業企画に携わり、DevOpsやPaaSなど最先端技術を使いこなす開発で経験を積んできた。大規模プロジェクトのマネジメントも歴任し、近年ではマルチチャネルでのメッセージ配信の開発に携わるほか、10月からはクラウドネイティブやマイクロサービスといった先進Webシステム開発を担当するエンタープライズシステム開発事業部/アドバンストWebビジネス推進部の課長に就任したところだ。

 細江氏によると、システムのモダナイゼーションに取り組む企業の背景には、レガシーシステムの高額な運用維持コストや技術者の高齢化などによる運用リスクの高まりと、市場動向に合わせたシステムの導入や顧客満足度を向上させるUXの改善といったサービスの利用促進のための攻めのIT投資が重要視されてきている、という2つの部分があると言う。

 昨今では多くの企業がレガシーシステムのモダナイゼーションに取り組み始め、その手段としてマイクロサービスの採用が進んでいる。

 従来のモノリシック(複雑に絡み合う一体化した構造)なアプリケーション機能をポータビリティーに優れた小さいサービス単位に分割して、再利用するアーキテクチャがマイクロサービスである。ユーザーニーズや市場動向の変化が激しいビジネス環境においても、高い柔軟性と対応スピードを実現できるため、このマイクロサービスの導入が加速度的に進んでいる。

マイクロサービス化の特性、API連携とは? 

 マイクロサービス化の特性は、各サービスがAPIで連携することだ。マイクロサービスにより機能をサービス単位で切り出し、その集合体をシステムとして運用することや、サービスをAPI化して他のサービスと連携することで、新しいビジネス価値を創出する可能性が広がる。しかし、マイクロサービス化は、API連携で変化に柔軟に対応できる反面、全体的な整合性の確保が困難になったり、運用上の複雑度が増したり、性能やセキュリティなどの非機能面での品質リスクが高まるといった危険性がある。こうしたことについて、細江氏は「テスト手法が確立されていない、あるいは全体の整合性をとることの重要性が見落とされている可能性があります」と指摘する。

伊藤忠テクノソリューションズ株式会社 エキスパートエンジニア 細江勝俊氏

伊藤忠テクノソリューションズ株式会社 エキスパートエンジニア 細江勝俊氏

API連携を伴う開発、品質活動に潜む落とし穴とは?

 細江氏が携わった近年のプロジェクトでは、レガシーシステムのマイクロサービス化と外部サービスの利用を行い、さまざまなAPI連携を伴うシステムを開発してきた。しかし、このようなシステム開発を進めていくうえで、開発スケジュールの各マイルストーンで、予定通りに品質を確保していくことが難しいかもしれないとも感じていた。

開発スケジュール概略
並行開発するシステムのスケジュール概要

 その理由は、マイクロサービスの特性に起因する。巨大なレガシーシステムをサービス単位で切り出しての並行開発や、API化により外部のサービスと連携してのシステム構築では、接続先の都合で結合テストが先送りとなったり、後工程で品質課題が顕在化することで手戻りが発生したりして、品質保証活動が容易ではない。

 このように、API連携を伴う開発では、片方のサービスの開発の遅延や、好きなタイミングで外部サービスと接続できないといった事象が発生し、スケジュールの遅延やコスト増加などのリスクが付きまとう。加えて、急な外部環境の変化により、機能面だけでなくセキュリティや性能といった非機能面での影響調査を求められる可能性も高くなる。細江氏は、こうした開発における落とし穴を回避するために、サービス仮想化ツール「Parasoft SOAtest/Virtualize」を採用した。

関連情報

 「SOAtest/Virtualize」の情報はこちらから!

サービス仮想化ツールによるシフトレフトで、品質と生産性の両立を実現

 「Parasoft SOAtest/Virtualize」は、API テスト自動化ツール「SOAtest」と高性能なスタブを作成するサービス仮想化ツール「Virtualize」で構成されている。「Virtualize」は本物のサービスの代わりとなり、テストに必要な疑似環境の役割を果たす。具体的には、並行開発している他チームのサービスや外部サービスの代わりとなり、これらを利用するサービスを開発の初期段階からいつでも、なんどでもテストできるようにする、品質活動を加速させるソリューションだ。

 細江氏のプロジェクトで品質活動を加速させ、スケジュール通りのリリースを可能にしたもう一つのポイントは「SOAtest」によるAPIテストの自動化である。サービス単体の検証からシステム全体のトランザクションの検証に至るまで、品質活動の前倒し(シフトレフト)を実現するうえで、「Virtualize」によるサービス仮想化と、「SOAtest」によるAPIテスト自動化の両方を活用してAPIテストを継続的に実行する仕組みを整えることが有効なテスト戦略となった。

他サービスからのリクエストをSOAtestでシミュレーションし、APIテストを自動化
並行開発における「Parasoft  SOAtest/Virtualize」の利用イメージ

 開発の初期段階から充実したテスト環境を準備することは非生産的に思えるかもしれないが、実はそうとも限らない。確かに、設計や製造工程から全体の整合性や影響を常に確認すること、稼働後の運用でも外部環境や接続先システムの変化などに対して継続的に影響を確認することは、品質保証のうえで重要なことだが、その仕組みを構築する労力やコストが懸念される。しかし、細江氏は、シフトレフトについて、増えると懸念される労力はツールで解消できると提言する。

 「『Parasoft SOAtest/Virtualize』のようなツールを使えば、OpenAPIなどの設計ドキュメントや、トラフィックのキャプチャから疑似サービスやAPIテスト資産を自動生成できます。さらにテスト資材として継続して再利用することができるため、開発でも稼働後の運用でも有効な対応であると感じました。テストの準備作業でコストを多く消費するように懸念されるかもしれませんが、後で十分取り返せます。APIに特化して効率的にテストができるところが『Parasoft SOAtest/Virtualize』の大きな選定理由でした」と細江氏は言う。

サービスライフサイクルを考慮した継続的なAPIテストの重要性

 品質活動のポイントとして、細江氏は「API提供元がAPIの仕様を変更したり、サービスの機能や仕様を変更したり、ユーザー数の増減でサービスの稼働状況が変わることもあります。こうした外部要因の影響も念頭において設計しておく必要があるかと思います。もしそうしたことを考慮しないと、開発したサービスが廃れる、または維持継続できなくなるという問題を抱えてしまうことになりかねません。そのため、外部サービスがもたらす影響を確認できるようなアプローチが必要になります」と話す。

 あるとき、細江氏らは外部のメールサービスを利用するメールの送受信サービスを開発していたところ、リリース直前で性能問題が発覚した。細江氏らが開発していたのは外部のメールプロバイダサービスを利用するサービスであり、メールサーバーの性能管理は管轄外だ。とはいえ性能において問題が発覚したため、急きょシステムの構成を変更することになった。リリース直前だったため、痛い手戻りである。しかし細江氏は「『Parasoft SOAtest/Virtualize』で作成したAPIのテスト資産があったので、すぐにテストを開始することができました。結果的には予定していたスケジュールでシステムをリリースできました」と話す。

 細江氏はサービスモダナイゼーションに関して「開発よりもその後の運用も含め、ライフサイクルをどううまく回していくかを重視しています。『Parasoft SOAtest/Virtualize』ではテスト資産の再利用により、機能テストで作成した資産をそのまま性能テストに流用したり、シナリオ中のパラメータをDBの値やExcelデータなどから変更したりすることができるため、性能テストなどにも再利用することができます。また、JenkinsなどのCICDの仕組みとも連動することができるため、開発時だけでなく、稼働後の運用においても継続して品質保証やコスト、納期の圧縮を図ることができるツールだと思います」と話す。巨大なレガシーシステムをサービス単位で切り出して並行開発を進めたり、APIで連携した外部のサービスで接続先の仕様変更などの都合により後工程に品質課題が顕在化したり、急な外部環境の変化によって、セキュリティや性能といった非機能面の課題が発生するリスクがあるため、継続した品質課題や運用課題に対するアプローチが必要となる。「Parasoft SOAtest/Virtualize」で継続的なテストを自動化することは品質の面ではもちろん、コストや納期を圧縮するうえでも非常に重要なポイントとなる。

開発者が「サービス価値向上やイノベーションにどれだけ注力できるか」が企業競争力に

 開発者の立場だとスピード感を持ってモダンなサービスを構築していくことに目を向けてしまいがちだが、細江氏は次のように諭す。「昨今では技術仕様の変化など外部で起きた変化に対応することに忙殺されてしまいがちです。あるいはレガシーの煩わしい運用業務に翻弄されてしまい、先に進めなくなることもあります。しかしこういうことからはいち早く解放されて、開発者は本来目指すべきサービス価値の向上であるとか、ユーザーや経営から求められていることに集中していく必要があると考えています」

 今後ますます、IT技術の進歩や外部環境の変化が進んでいく中で、それらの変化に追随してサービスも継続して変化していく必要がある。技術仕様の変化や外部環境に対する影響確認といった煩わしい運用業務から開発者を解放するために、自動化できるものはできるだけ自動化するのが得策である。そうすることで、サービス価値の向上など、ユーザーや経営側から求められている部分に最大限のリソースを集中して、新たなビジネス価値を生みだすデジタルトランスフォーメーションを実現することが企業競争力の源泉になっていくだろう。

関連情報

 「SOAtest/Virtualize」の情報はこちらから!

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15033 2022/02/15 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング