サービス仮想化ツールによるシフトレフトで、品質と生産性の両立を実現
「Parasoft SOAtest/Virtualize」は、API テスト自動化ツール「SOAtest」と高性能なスタブを作成するサービス仮想化ツール「Virtualize」で構成されている。「Virtualize」は本物のサービスの代わりとなり、テストに必要な疑似環境の役割を果たす。具体的には、並行開発している他チームのサービスや外部サービスの代わりとなり、これらを利用するサービスを開発の初期段階からいつでも、なんどでもテストできるようにする、品質活動を加速させるソリューションだ。
細江氏のプロジェクトで品質活動を加速させ、スケジュール通りのリリースを可能にしたもう一つのポイントは「SOAtest」によるAPIテストの自動化である。サービス単体の検証からシステム全体のトランザクションの検証に至るまで、品質活動の前倒し(シフトレフト)を実現するうえで、「Virtualize」によるサービス仮想化と、「SOAtest」によるAPIテスト自動化の両方を活用してAPIテストを継続的に実行する仕組みを整えることが有効なテスト戦略となった。
開発の初期段階から充実したテスト環境を準備することは非生産的に思えるかもしれないが、実はそうとも限らない。確かに、設計や製造工程から全体の整合性や影響を常に確認すること、稼働後の運用でも外部環境や接続先システムの変化などに対して継続的に影響を確認することは、品質保証のうえで重要なことだが、その仕組みを構築する労力やコストが懸念される。しかし、細江氏は、シフトレフトについて、増えると懸念される労力はツールで解消できると提言する。
「『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」の情報はこちらから!