10年前あるいは20年前は、システムの「堅牢性」がすなわち信頼性でした。MTBF(=Mean Time Between Failure:平均故障間隔)至上主義で、多重化や高度なエラー検知と訂正機能などを持つサーバが作られ、その高価な機器を10年保守や20年保守で大切に使っていました。
その価値観がこの10年で大転換しました。十分な性能や帯域を持つシステムが安価に手に入るようになって、これらを入れ替えながら、信頼性はソフトウェアで構成しましょうという世界になりました。
技術の変化と共に設計思想も変化していきます。堅牢性を設計する「Design for Robustness」から、障害を前提とする設計の「Design for Failure」になったわけです。そして今、ここからさらに進化して「Design for Resiliency」、回復性設計の時代に来ています。これは障害から回復して、動作を続行する能力を持つシステムを設計するものです。
NoOpsの鍵は「高い復元力」です。取り回しの軽さと言ってもいいかもしれません。例えば、ChefでWordPress環境を構築する時間が240秒、これがコンテナであれば14秒で済みます。
アプリケーションのタイムアウトは大体30秒くらいですから、アプリケーションが壊れても30秒以内に検知し、再構築してReadyになるのならば、ユーザーから見れば壊れていない、つまり「サービスが続いている」という状態を実現できます。
コンテナやOSをできるだけ小さくしようというのは、こういう状態を目指しているのです。「壊れない」システムから、「いつでも回復できる」システムへの価値観の転換です。
今まで、復元力は低いけれど高い可用性が欲しい場合、冗長構成が必要でした。しかしいまは高い復元力も簡単に手に入る。つまり一人でも「高い可用性」が手に入るようになったのです。しかもそれだけではなく、障害発生時の自己回復やオンザフライでのインスタンス変更、秒単位のスケールアウトやスケールインなどができるわけです。
Copyright © ITmedia, Inc. All Rights Reserved.