BizDevOpsとは
BizDevOpsは一般的に、サービス(Biz)、開発(Dev)、運用保守(Ops)それぞれの部門が連携を強め、ビジネスの推進を行なう概念です。サービス側(Biz)がビジネス上の仕様をまとめ要求化し、開発側(Dev)が要求を要件に落とし込み実装を行い、運用保守側(Ops)がシステムの安定稼働を守ります。これらの部門が垣根を超え、BizとDevとOpsがお互いのプロセスを把握し、お互いを尊重し、進めることでビジネスを強力に推進することができます。
しかし、実際に概念に沿ってサイトを開発し運用してみると、設計段階において運用面を考慮して開発しなければいけないことや、ビジネス面での目的を達成するために運用面で考慮すべき点が多々発生します。
いくつかの注意するポイントについてまとめていきます。
耐障害性の向上
クラウド化が推進される昨今、耐障害性の向上は切っても切り離せないものです。基本的には「障害は必ず発生する」ということを前提に開発する必要があります。
サービスの停止はビジネスの損失に直結します。そのため様々な冗長化により高い可用性をもたせ、サービスを停止させることなく稼働し続けられるよう設計する必要があります。
また万が一、WEBサービスやバッチ処理などがネットワーク障害などで中断しても、トランザクションを正しく管理できるよう開発することは必須です。障害時の自動復旧も考慮した開発を行なうべきです。例えば、デーモン処理においてエラーが発生しても、次回起動時には自動で復旧するなどを実施することで、復旧における保守対応への負荷が軽減されます。
監視
システム監視により障害が発生していることを確認できることは、非常に重要です。
モニタリングツールやオブサーバビリティツールを用いて、稼働中のWEBシステムの状態を監視する、またRDSに対するSQLの性能劣化や外部APIの呼び出しにともなう遅延などを早期に検知することは、サイトの高い信頼性につながります。
一方で、ユーザ視点での監視も非常に重要です。例えば、主要機能の実行数や平均レスポンスタイムなど、ユーザ側の目線で問題が起きていないかを確認し早期に検知することで、ユーザへの影響を瞬時に対応できます。アラートの検知も重要ですが、アラート自体が増えるとノイズとなり保守効率が落ちるので注意が必要です。日々の運用から最適なアラート検知を模索するべきです。
障害の発生を確認できることも非常に重要ですが、保守の観点では、障害が発生していない状態(正常な状態)をモニタリングできることも重要です。
運用の自動化
ビジネス側におけるデータ活用のために、データ抽出依頼などの手作業で行なう運用業務が多く発生します。このような作業は、ツールなどの開発により自動化を図ることで、作業の効率化、ひいては生産性の向上につながります。また、分析用にデータ統合を行なうことで、ビジネスのビッグデータによるデータ分析など高度なデータ活用にもつながります。
プログラムの可読性
開発者の視点では、プログラムは可能な限り可読性を高め、自分で保守することを考えて作成し、「明日の自分は他人」として、誰にでもわかるように記述することが非常に重要です。仕様上どうしても複雑になってしまう処理についてはコメントを残すようにします。
また、使わなくなったソースは、使っていないことを明確にするか、削除することをおすすめします。これらを怠ると、保守において問題が発生した際に調査が非常に困難なものになるからです。これらはソフトウェアの継続的な信頼につながります。
このように、開発者と運用者、サービス提供者は連携してサービスの開発・運用保守を実施していくことになります。このような具体化されたアプローチは、SRE(Site Reliability Engineering:サイト信頼性エンジニアリング)の考え方につながります。
SRE(Site Reliability Engineering:サイト信頼性エンジニアリング)とは
SREはGoogle社が提唱したシステムの信頼性を確保するためのソフトウェアエンジニアリングの方法論です。従来は、開発と運用保守とは役割が完全に分離していることが一般的でした。俗にいうシスアド型のシステム管理です。シスアド型は実例も多く実践しやすく、メンバも集めやすいのが利点です。しかし、変更管理、イベント管理を手作業で行っているものは、コストがシステムの成長に比例して増大してしまいます。
SREでは、ステム管理者が手作業で行っていた作業について、システムを構築し自動化することで解決を試みます。この試みは直接的なコスト低減につながります。SREを担当するメンバは、サービスの可用性、レイテンシ、パフォーマンス、効率性、変更管理、モニタリング、緊急対応、キャパシティプランニングに責任を負います。また、変化をコントロールし、闇雲に100%の信頼性を目指すことなく、最適なサービス目標を立て、システム対応の迅速化を追求します。これにより、リスクを取ってリリースしたい開発側と、信頼性を保ちたい運用保守側の対立を解決しています。
またサービスの提供者及び運用保守のために、システムの健全性と可用性を追求するためのモニタリングを提供します。これらはアラートなどの検知にも用いられ、サイトの信頼性の向上に利用されます。またこれにより検知したインシデントを最善のプロセスで対応し、解決に導きます。これらの考えから、SREは開発から運用部門の橋渡しを実践するプラクティスとして非常に注目されています。
この他SREには様々なプラクティスが存在します。一方、サイトの規模、状況などにより最適なアプローチも異なります。開発運用保守におけるプラクティスについては、ぜひ富士ソフトに問い合わせください。