ポイント: データベース DevOps は、データベース管理を DevOps フレームワーク内に統合することで効率を向上させ、自動化とベストプラクティスに焦点を当てています。ソース管理を中央集権化し、CI/CD プロセスと同期させることを目指し、データベースデプロイメントにおける一般的な課題に対処します。
- 90% 以上の利害関係者がデータベースデプロイメントを加速しようとしています。
- ベストプラクティスには、アジャイル原則の採用と繰り返し作業の自動化が含まれます。
データベース DevOps は、DevOps メソッド論の新興領域です。データベース管理と DevOps コンセプトを適用した場合に何が起こるかを見てみましょう。
データベースのための DevOps?
DevOps は、近年のアプリケーション開発における公式な ソフトウェア開発ライフサイクル (SDLC) フレームワークです。継続的運用 と 自動化 は、成功した DevOps 環境で実践される DevOps 哲学 の重要な特徴として浮上しています。しかし、継続性と自動化の原則は、ソフトウェアアプリケーションのすべての側面を完全には包含していません。データベース (コード) の継続的な管理、変更、更新、開発、および処理は、多くの DevOps 組織にとってボトルネックとして浮上しています。これにより、エンジニアは、スムーズな DevOps SDLC パイプラインに期待される継続的なリリースサイクルをサポートするためのデータベース開発の再作業に無数の時間を投資せざるを得なくなっています。データベースの変更と開発は、SDLC の中で最もリスクが高く、遅いプロセスの 1 つと見なされているため、データベースコード開発のために特に継続的運用と自動化の原則を適用することは、データベースの問題に対する潜在的な解決策と見なされています。最近の調査報告:
- アプリケーションの利害関係者の 90% 以上が、データベースのデプロイメントと管理手順の加速に向けて取り組んでいます。
- すべてのアプリケーション変更の半数以上が、対応するデータベースコードの修正をさらに必要とします。
DevOps におけるデータベースの課題
データベース DevOps が DevOps SDLC パイプラインを効率的にする方法を議論する前に、DevOps 組織が直面しているデータベース特有の課題を議論しましょう:
- 手動変更。従来の データベース管理 は、コードレビューや承認などの手動プロセスに従います。これら全てがリリースサイクルを遅らせます。
- データプロビジョニング。セキュリティおよび規制の制約により、本番データは早期のアプリケーションビルドをテストするためにしばしば利用できません。したがって、データは必要な規制要件を満たすために処理され、暗号化されます。
- データベースのための CI/CD。データ永続性は、継続的インテグレーション/継続的デプロイメント (CI/CD) パイプライン のために管理されるコード永続性と同じ方法では維持できません。新しいデータベースバージョンの継続的な統合とデプロイメントは、データベースの一般的な構造とスキーマを尊重する必要があります。これがまさに手動介入が必要になる理由です。
- 統合の課題。ツールとアーキテクチャの多様性により、データベースシステムが一貫して機能することが難しい場合があります。標準化の欠如により、DevOps チームはデータベースシステムのプロビジョニングと管理のために継続的かつ自動化されたインフラ運用を完全に実行することができません。
そして、さらに大きな、対処が難しい課題があります: 不十分な DevOps の注意。多くの実世界の DevOps 実装は、データベースとアプリケーション開発プロセスを統一された包括的な SDLC フレームワークポリシーに統合することに失敗しています。データベース管理プロセスは従来の経路を踏み続け、データベースの変更規模の増大により、エンジニアはアプリケーション開発の他の部分とデータベース開発の努力を標準化および調整することが難しくなっています。(データストレージが増加するにつれて、これらの課題がどのように大きくなるかをご覧ください。)
データベース DevOps とは? プロセス
では、データベース DevOps に関与する主なタスクを見ていきましょう。実際には、これによりアプリケーションコードの DevOps フレームワークを採用するのと同様のプロセスになります:
1. ソース管理の中央集権
すべてのデータベースコードが保存、マージ、変更される 中央集権型バージョン管理システム を使用します。静的データ、スクリプト、構成ファイルをすべて統一されたソース管理システム内に保存することで、変更を元に戻し、データベースコードの変更をアプリケーションコード開発と同期させることが容易になります。(詳細については、CI/CDをご覧ください。
2. CI/CD との同期
アプリケーションリリースと並行して実行されるビルド操作を自動化します。これにより、アプリケーションとデータベースコードのデプロイメントプロセスを調整しやすくなります。データベースコードは、新しいソフトウェアビルド統合が行われる際に、基盤となるデータベースの依存関係に従ってテストおよび更新されます。
3. テストと監視
データベースとアプリケーションコードの両方に対して中央集権型バージョン管理システムを使用する CI/CD アプローチにより、新しいビルドがリポジトリにチェックインされ、コンパイルされるたびにデータベースの問題を特定しやすくなります。
- 開発者は、早期に問題を特定し対処することができます。これは、迅速な DevOps フレームワークの継続的な デプロイメントとリリースサイクルに従います。
- それに対して、従来のデータベース管理操作は、対応するデータベースコードのための遅く手動のレビュー、テスト、および承認プロセスを必要とします。
データベース DevOps のベストプラクティス
DevOps フレームワークに整合する追加のベストプラクティス:
- データベースコードへの小さく、段階的、頻繁な変更を行うという DevOps およびアジャイルの原則を採用します。小さな変更は元に戻しやすく、SDLC プロセスの初期段階で潜在的なバグを特定するのが容易です。
- すべての段階的な変更時に、依存関係を監視および管理します。 マイクロサービスベースのアプローチをデータベース開発に従います。
- アプリケーションコード開発プロセスと同様に迅速なフィードバックループを採用します。しかし、重要なフィードバックは、ネットワークの各ノードで生成されるログメトリックデータとアラートの洪水の中に隠れている可能性があります。
- データベースコードに加えられたすべての変更を追跡します。早期かつ頻繁にテストし、ビジネスへの影響とユーザーエクスペリエンスに基づいてメトリクスのパフォーマンスを優先します。
- 実世界のユースケースを再現するためにテスト環境を設定します。データベースの信頼性を確保するためのテストをステージングするために、プロダクション環境を確立します。
- 可能な限り自動化します。繰り返し可能で予測可能なデータベース管理タスクを特定し、新しいビルドが Continuous Integration サーバーでコンパイルされたときにデータベースコードを更新するスクリプトを書きます。
最後に、すべての DevOps 実装は、フレームワークを採用する組織に特有であることに注意してください。データベース DevOps は、アプリケーションコード DevOps プレイブックからいくつかのガイドラインを概念的に取り入れ、データベースコード開発と管理をアプリケーションコードと統合して、同様の SDLC パフォーマンスと効率の向上を図ることができます。
関連する読み物
DevOps ガイド
- DevOps とは何か? 包括的な紹介
- DevOps の簡単な歴史
- DevOps アーキテクチャの紹介
- DevOps における自動化: DevOps プラクティスを自動化する理由と方法
- CI/CD とは何か? 継続的インテグレーションと継続的デリバリーの説明
- Jenkins を使用して CI/CD パイプラインを構築する方法
- CI/CD パイプラインを最適化するための DevOps メトリクス
- 継続的デリバリーメトリクス
- 継続的インテグレーションから継続的デプロイメントへの進行は進行か?
- 継続的インテグレーション (CI)、デリバリー (CD)、およびデプロイメントの違い
- DevOps におけるソースとバージョン管理
- 継続的テストとは何か?
- テスト自動化フレームワーク: 究極のガイド
- DevOps におけるリリース管理
- 説明: DevOps におけるモニタリングとテレメトリー
- DevOps におけるアプリケーションパフォーマンス管理
- SDLC における DevOps オーケストレーション
- データベース DevOps の紹介
- DevOps におけるマイクロサービスの役割
- DevOps における仮想化の役割
- コンテナと DevOps: コンテナが DevOps デリバリーパイプラインに適合する方法
- コンテナパイプラインとは何か?
- DevOps ツールチェーンとは何か?
- DevOps のためのコンテナとコードの管理
- DevOps におけるアジャイルの役割
- DevOps におけるクラウドの役割
- FinDevOps とは何か?
- 2022 年のトップ DevOps トレンド
- DevOps の価値と原則
- DevOps メトリクスと KPI
- 小規模、中規模、大規模組織のための DevOps アドバイス
- DevOps チーム構造
- 今日読むべきトップ DevOps 本
- 『The Phoenix Project: DevOps For Everyone』の書評
- DevOps インフルエンサー: Twitter でフォローすべき 11 人の DevOps エキスパート
- GitHub、GitLab、Bitbucket & Azure DevOps: 何が違うのか?
- ベストプラクティス: Kubernetes のためのアプリケーション設計方法
- DevOps における構成管理
- DevOps のブランチ戦略の説明
- DevOps の職務名、役割、責任
- DevOps におけるテスト: 概念、ベストプラクティスとその他
- 2022 年の完全な DevOps 認定ガイド
- Kubernetes オペレーターパターンとは何か?
これらの投稿は私自身の意見であり、必ずしもBMCの立場、戦略、または意見を表すものではありません。