本当に効果が得られるインフラ構築/運用の自動化を実現するには、クラウドやコンテナ技術を導入するだけでは不十分だ。プログラムの方式から運用管理ツールまで全体を見通した設計力がなければ部分的な自働化に終わり、結局は人手の作業が必要になってしまう。
ZOZOテクノロジーズ ソフトウェアアーキテクト 岡大勝氏は、6月9日に開催されたTECH+スペシャルセミナー「先進企業から学ぶクラウド活用事例 - DXを加速! 今始める攻めと守りの自動化2.0」にて、「クラウドネイティブ」の考え方をもとに大きな効果を発揮する自動化の手順について解説した。
人間にとって”嬉しくない”システム運用をなくす
クラウドネイティブと言うと、Kubernetesに代表されるインフラ技術をイメージしがちだが、岡氏は「Cloud Native Computing Foundation (CNCF)によるクラウドネイティブの定義」(https://github.com/cncf/toc/blob/main/DEFINITION.md)をもとに、「Kubernetesなどのクラウドプラットフォームをはじめとするモダンで動的な環境にスケーラブルなアプリケーションを組み合わせることで疎結合システムを構成する。さらにこのシステムを自動化技術と組み合わせることにより、影響が大きな変更でも最小限の労力で頻繁かつ予測どおりに行えるようにすること」と噛み砕いて説明する。
「コンテナ、サービスメッシュ、宣言的API、イミュータブルインフラストラクチャなどのクラウドネイティブの要素は、安全な運用/更改のための疎結合性/高凝集性パターンと言えます。これは、ソフトウエア設計で有効だったパターンをインフラにも適用しようという思想がベースにあります」(岡氏)
CNCFには世界の大手クラウドベンダーやソフトウエアベンダーも参画しており、今後ITのトレンドはクラウドネイティブの方向へシフトしていくものと見られる。岡氏によると、クラウドネイティブの目指す姿は、「何が起こっても人が落ち着いて対応できる状態」だという。そしてこの考え方は、夜間待機や監視、障害対応などといった、人間にとって”嬉しくない”システム運用をなくすという「NoOps(No Uncomfortable Ops)」の発想に近い。
実は岡氏は、NoOpsの実現に向けて、プラットフォームや技術を超えて知見と経験を共有するコミュニティ「NoOps Japan Community」の発起人でもある。同氏は、これまでの活動の経験も踏まえ、以下の3つをNoOpsのポイントに挙げた。
- ユーザーの体験を妨げないシステム運用保守の実現:障害時のダウン、計画停止、負荷集中時の性能低下などを避ける。
- システム運用保守で発生する「トイル」の最小化:リリース手続き、パッチの適用、リソース監視、待機などを自動化する。
- システム運用保守コストの最適化:余剰資源を持たない、適正品質の保持、時間外勤務の削減、人材活用。