DX Column

2021年9月3日

#デグレード – 知ったかテックワード!君もIT博士

カテゴリー:

タグ:, ,

解説

デグレードとは、一定の段階まで進んだ開発プロジェクトやシステムの更新で、前よりも品質が下がった状態になることだよ。

英語で「Degrade」と書く。「デ・グレード」(De-Grade)で品質のグレードが下がるという意味になる。「リグレッション」「後戻り」「先祖返り」といった言い方もするよ。ちなみに、前と同じ問題が出ていないか確認する作業のことを
「リグレッションテスト」(Regression Test)・「回帰テスト」というのでややこしい。

システム開発していると、コードを修正した個所以外で不具合が発生することがある。そういうときエンジニアは「デグレした」と言ったりする。窓を閉めたか確認しに帰宅して、玄関のカギを閉め忘れる、みたいな感じかな。

デグレードのパターン

デグレードにはいくつかのパターンがある。

  1. プログラムの機能追加やアップグレード時の考慮漏れ
  2. インフラ環境の変化
  3. 作業ミス

プログラムの機能追加やアップグレードしたとき、本来は影響がないはずなのに問題がおこる原因のひとつは、充分な分離ができていないこと。1つのモジュールが複数の役割をもっていたり、複数の外部から更新可能になっていると、こういうことが起こりやすい。

インフラ環境の変化では、稼働しているインフラやミドルウェアの変化が原因だったりする。アプリケーションが、これまで使っていなかったミドルウェアの機能を呼び出した場合にも問題が起こりやすい。

プログラミングや設計に問題がなかったとしても、作業ミスで古バージョンのコードを統合してしまい問題が起こることもある。前に直したはずのバグが復活していたり。

こうした事故を防ぐために、作業手順書を事前に作成して、開発環境やステージング環境で予行演習・リハーサルをするなんて場合もある。でも結局人間がやることだから、バージョン管理や自動デプロイなどを徹底しておきたい。

デグレードを防ぐには

デグレードが起きてシステム品質が下がると、利用者に迷惑をかけたり、業務に支障が出ることがある。だから、システムをアップグレードしたときは、品質が下がっていないか、すばやく確認しておきたい。

  1. ステージングによる動作確認
  2. テストの自動化
  3. デプロイ・リリースの自動化

そのために、ステージング環境を用意して、事前に似たような環境で動作検証をおこなう。ステージングとは。本番環境とほぼ同じ構成になっていて、動作や表示の最終確認をおこなう環境のこと。ステージジグ環境を使うことで、事前にデグレードが起きていないか動作確認する機会を増やすんだ。

でも、動作確認を手動でやっていると、ものすごく大きな手間がかかるし、頻繁に機能追加できなくなってしまう。そこでシステムの品質が落ちていないか、動作確認(テスト)を自動的におこなう仕組みとテストコードを用意する。これがテストの自動化だよ。

現在は、システムを自動テストするための専用ツールも充実してきている。わざわざテスト用のコードを書く必要があるけれど、これらを使うことで手間をかけずに何度でも動作確認を実施できるようになる。

自動テストの目的は、以前は正常に動いていた個所が現在も問題なく動いているか確認することにある。未知のバグは検出してくれないから注意が必要だ。

デプロイとは、ソフトウェアを本番環境に配備して利用可能にする作業のこと。これを手動でやっていると、やはり手間がかかるし人間の作業ミスも起こりうる。そこで、デプロイ作業自体を自動化してしまうんだ。

このようなデグレード対策をすることで、安心して何度でも機能アップが可能になる。そして、システム開発とシステム運用を密接に連携させられるようになる。このようなシステム開発・運用の体制や手法をDevOpsと呼ぶよ。

関連ページ

おまけのコント

うさぎ:我こそは悪の魔法使い。よくも、わしの宝物を盗んだな!
ただではおかぬ。グダグダのボコボコにしてやるゾ。
くらえッ、必殺!デグレードの術っ!

カエル:うぁー、やられたぁ。デグレしたぁ・・・って、なるかーい。

うさぎ:な・・・なに、ワシの魔法が効かぬのか。カエルの面に小便か。