特別な注意
この記事では、研究ノートの概要であり、本を読んだり、元のコンテンツへの変更の数が少ないが存在し、そしていくつかの情報を追加しますが、一般的に元の式には影響を与えません。
「DevOpsチームのエントリーと実践」:この本のコンバインはDevOpsチームの開発サイトを導入する方法のプロセスの例を詳細に説明。
- ISBN:978-7-115-51256-7
- https://www.ituring.com.cn/book/2407
個人的なコメント
適切なものは構造的な櫛を作るために、スタッフの実装における実務経験、既存の知識とスキルを持っています。
DevOpsチームは理解し、基本的な概念を確立できるようにするには、適切な人材の欠如します。
外国語の図書翻訳理由導入の時間差があるため、欠点があり、現在主流のシナリオの背後にあるブックに関与ツールと方法のいくつかの例、。
また、唯一の現在の主流のビジネスニーズに対するデモ処理の原則を満たすために、ブックの構造の最終的な実現をDevOpsチーム、単純すぎる、大きな実用的な価値を持っていません。
どのように変化するためDevOpsチームの枠組みは、DevOpsチームの成功の実装を中心に?
DevOpsチームのコア要素
- 土壌---「組織---」建物や人材の育成
- ---意識し「---文化」を形成すると考えられ
- 方法---「プロセス---」ルールを確立するために、
- ツール---「操作と設定---」自動化、インテリジェント進化
1--アプリケーション
1.1既存の練習パターンから学びます
DevOpsチームの土壌では、現在のビジネスとDevOpsチームのアイデア、手法やツールは、実践を導くために、既存のベストプラクティスモデルへの最高の参照を結合します。
これは主に時間とエネルギーが別の問題に費やすべきではありません、可能性のある問題の回避一部を実現することになります。
十二ファクターのApp
- https://12factor.net/zh_cn/
- ソフトウェアは通常サービスとして提供され、12-ファクターは、任意の言語サービスやバックエンドアプリケーション(データベース、メッセージキュー、バッファ、等)の開発のためとして、SaaSアプリケーションを構築するための方法論を提供します。
- 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。
- 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性。
- 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源。
- 将开发环境和生产环境的差异降至最低,并使用持续交付实施敏捷开发。
- 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展。
1.2マイクロサービス
マイクロサービスアーキテクチャは、小規模なサービスのセットを開発するための方法として、単一のアプリケーションです。
9機能マイクロサービス:事業組織チームの中心、製品を行うことの態度、サービスエンドポイント、分散制御、分散データ管理、インフラの自動化と耐障害性と進化の設計などの機能へのサービスコンポーネント、。
各中小企業のサービスは、異なるプロセス間の通信に軽量のHTTP APIリソースと他の方法を使用して、別のプロセスとしてビルドにユニット、独立した展開のための自動展開メカニズム、および実行などの機能にあります。
互いの各プロセス独立最小に維持しながら、そう集中管理では、各サービスを実現するために、異なるプログラミング言語およびストレージを取ることができます。
複数のより小さなプロセスに大きなサービスとして機能する事業単位を有する短い、マイクロサービスアーキテクチャでは、容易に小さな処理機能に追加することができ、これらの小さなプロセスによって提供されるサービスの完全なセットを構成します、改変および操作を再利用します。
組織構造に対応して、個々のプロセスは、スタッフのさまざまなスキルを備えたチームによって実装されています。
2 - インフラストラクチャ
2.1不変インフラ(インフラ不変)
名前が示すように、その主な意味が完了した後に、もはやインフラ整備の変化はありません。
あなたが環境を操作したい場合は、我々は既存のインフラを破壊し、新しいインフラストラクチャを作成する必要があります。
換言すれば、既存のインフラストラクチャを放棄し、最初から元のインフラと同様に再構築することができます。
主な利点
- 防止事故:根本原因の構成と動作のミスを避けるために、環境のクリーンな状態を保ちます
- 管理のしやすさ:動作環境の設定およびステータスを管理する必要はありません。
- インフラストラクチャへのこれまでのコードまでのリアルタイムのフィードバック:インフラストラクチャは、コードを強制します
- トラブルシューティングと統一設定することは、作業手順を変更します。自動化された「再構築」に沸きます
どこ特に懸念されます
- 一般的に、インフラストラクチャは、DBサーバと同様、このような状態を持たない、(データまたは構成を変更することなく)のみステートレスサーバに変更することができません。
- 特別なニーズのインフラを維持する必要があるの下では、例えば、故障解析の原因を調査
- インフラを再構築する場合、監視サーバーの構成に関連し、対応する操作が必要
- ツールを選択し、特定のアプリケーションシナリオに基づいた実践的なソリューションを開発
2.2青緑色の展開(ブルー・グリーンの展開)
青緑色の展開は、従来の出版および新興の問題を解決することです。
- サービスがリリースされたときに一時停止する必要があり、可用性に影響を与えます
- リリース後は失敗し、修理に時間がかかります
原則的には、青緑色の展開は、冗長性を通じて問題を解決することです。
- 同時に環境の青と緑のコンポーネントにより、本番環境では、一つだけを使用することができます
- 使用およびビジネステスト動作を発行されていない環境では、試験は迅速コンテキストスイッチを完了するためになど、ルーティング、DNS、ロードバランサ、リバースプロキシを介して通過します。
- 障害が発生した場合、それはまた、すぐに以前のバージョンにフォールバックするバランサ、リバースプロキシ、ルーティングなどをロードすることができます
ファストバックのバージョンは、それが簡単にロールすることができ、障害が発生した場合でも、高速に青緑色の展開を切り替え、ほとんどのユーザーには影響を与えません。
しかし、いくつかの制限がありますが、二重のインフラを維持する必要があることである、と状態サーバーには適用されません。
2.3オンプレミスとクラウド
DevOpsチームの実装では、環境の特定のタイプを必要とするが、地域の状況に応じた条件をお勧めしません。
ローカルの展開
- 購入またはデータセンターに配置されたハードウェアリソースのリース、ほとんどすべての作業を維持する責任は、社内で完成されています
- 独立と強い、あなたは機器やサービスの完全な制御を持っています
- 構築し、維持するために十分な人間、材料や財源を投資する必要が
パブリッククラウド
- クラウドによってのIaaS(サービスとしてのインフラストラクチャ、サービスとしてのインフラストラクチャ)マネージドクラウドサービスプロバイダを計算します
- 高負荷に対処するためのリソースへのクイックアクセス、
- 容易な管理、現在主流のプラットフォームはAPIを提供し、コマンドラインツール、およびその他のツール管理コンソール
- サービスプロバイダや計画に従って構築して使用する必要があります
- トラブルシューティングは、仮想マシンレベルのパブリッククラウドプラットフォームに限定されています
プライベートクラウド
- そのようなクラウドコンピューティングプラットフォーム不変インフラとしてローカル環境での使用OpenStackの展開、
- 今、地元のIaaSデプロイメント環境のインフラストラクチャを構築する必要の前提は、困難達成するために、だけでなく、時間とお金を費やします
サービスとしてのソフトウェア2.4(ソフトウェアサービスとして、SaaS型)
非中核機能やサービスに直接関連しないためには、インターネットベースのサービス、コスト削減の完全に非コア部分を実装することを選択することができます。
例えば、継続的な統合の範囲で、存在CircleCIとトラビスCIなど。
SaaSのサービスは機能がより重要に提供している場合は、より大きな前厳格な検証の必要性を使用すると、適切な危機管理計画(災害、対応計画の失敗)を開発します
SaaSのメリット
- この責任サービスプロバイダによって出荷Wikiのサーバ
- 直感的でシンプルな操作と設定
- 関連サポートミドルウェアのタイムリーな提供
SaaSの欠点
- SaaSサービスは、失敗を制御できません
- カスタマイズを提供することは困難
- サービスプロバイダやサービスによって価格設定
2.5ログ収集
また、積極的分析に使用しなければならないDevOpsチームでは、ログが収集・保管に加えています。
不変インフラの場合、最も理想的な方法リアルタイムのログ収集、処理および出力ショーです。
使用ELKテクノロジ・スタック(Elasticsearch、LogstashとKibana)、素早く分析し、(数値とグラフ情報)を視覚化し、ログを転送することができ、客観的決意をするのに役立ちます。
継続することで、解析や可視化をログに記録すること、慎重な思考と反射を現在の状況に、反復を改善することにより、最終的には長期的な目標を達成します。
- Elasticsearch:、コアELKとして集中データストレージを優れたリアルタイム性能とスケーラビリティJSONベースの分散検索・分析エンジンを持っています
- Logstash:様々な方法で様々な形態及び出力伝送における収集及び処理データへの動的データ収集導管、データを視覚化にインポートすることができます
- Kibana:ELKユーザーインターフェース、集約、およびデータ分析及びLogstash ElasticSearchを提供し、視覚化、検索、設定するインターフェイスを提供し、ELKを管理
3 - チーム
3.1アジャイル開発(アジャイル開発)とDevOpsチーム
アジャイル開発方法およびチーム構造、最終的な結果の継続的な改善を改善することによって開発された方法です。
開発の成功は、タイムサービスに予定通りにリリースするかどうかではなく、サービスの開発は、商業的価値かどうかにかかわらず、変化に対応できるかどうか。
完全に小さなチームによるアジャイル開発をターゲットに、企画、設計、開発、テスト、および公開およびその他の関連作業の変化に迅速に対応するためです。
したがって、仕事のこのシリーズを繰り返すことによって、短期的には引き続き改善し、サービスや製品の外のフィードバックを受け付けます。
すべてのメンバーは、サービスや製品を担当する、お互いのビジネスを理解する必要があり、自然にDevOpsチームが必要とするパターンを形成しました。
3.2チケット・ドライブ
使用JIRA、RedmineのとTracのとユーザーストーリーを管理するためのチケットの問題、欠陥やアジャイル開発手法とのユニットなどの他のバグ追跡システムやソフトウェア開発プロセスにおける問題追跡システムが、あります。
DevOpsチーム慣行文書管理情報の問題を解決するには良い補完が散乱されると、それはスクラム開発に滝から開発を支援することができます。
DevOpsチームで、チケット情報の共有やタスク管理を通じてユニットは、内部および外部の情報と容易に一元管理間の調整が容易になります。
特定の実装では、すべてのタスクは、コードの変更は、特定の事項と関係者、同期ステータスの更新に関連付けられる、方法チケット管理で行われる含むことです。
これは、チケットの日付、情報、詳細、ディスカッション・レコードの担当者のすべての種類を含めることができます。
これは、ダッシュボード(ダッシュボード)を提供し、プロジェクト管理、工数見積もりとスケジュール管理の観点から、開発の全体的な状況を把握することがあります。
3.3サイトの信頼性工学(サイト信頼性工学、SRE)
Googleの長期運用・保守プラクティスに運用・保守に焦点を当て、提案基づき、SREはDevOpsチームの運用・保守のより具体的な説明であると言うことができます。
サイトの信頼性の低下は直接、商業的価値の実現を妨げるが、混乱のリスクが大幅に増加する可能性はありませんが。
SREチームは改善スキルを要求し、限られた資源のSREの条件の下で、技術は非常に困難であることを確認します。
SREの主流のアプローチとビューの改善
- システムの最適化:可用性、レイテンシーとパフォーマンス
- 監視:サービス、キャパシティ
- 内蔵品質:自動化、変更管理
- トラブルシューティング:復旧メカニズム
3.4 ChatOps
チームのメンバーは、現在の状況とオペレーティングシステムを他の人を理解することができることを保証するために、インスタントメッセージング、リアルタイムを通じて効率を向上させるためのさまざまなタスクのために。
コミュニケーションツールは、このようなCI&CDツール、Webサービスなどあらゆる種類の情報の統合を行うことができます。
スラック、(チャットツール、サードパーティ製のツールを統合することができる)とHubot(ボット)ChatOpsは、代表的な組成物を得ます。
- ユニファイドコミュニケーションの難しさ、通信チャネルを簡素化し、情報の作成及び送信を減らします
- インテリジェントかつ効率的な運用は、例えば、唯一の割り当てられた作業を完了するために、コミュニケーションツールでコマンドを入力するか、特定の情報を入手する必要があります
- プロセスと結果(リアルタイムの可視性、記録見える)すべてのユーザーに表示
- ビューとレビューへの通知を助長し、例えば、瞬時に重要な情報、統一されたタイムラインを示し、関連するすべての情報、通信、記録管理などを送信
使用ChatOpsの自動化と効率化
- タスク操作:アプリケーションの構築と展開、テスト、
- ビューシステムリソース
- 重要な情報(主な変更点、障害アラームなど)の通知
- 操作や時間指定リマインダ
ChatOps組成
- 通信のためのチャットシステム
- チャットシステムから情報を読み取り、ロボットシステムの対応する動作を行います
ChatOps段階
- 通知を受信するには、チャットツールは、チームメンバーが通信するための通知に基づいて(システム - 「のチャット - 」の人)
- チャットによって発行された運転指令、実施形態の具体的な動作(アル - 「のチャット - 」システム)