Infrastructure as Code (IaC) に注意を払わないと、失敗します。

Infrastructure as Code (IaC) に注意を払わないと、失敗します。

[[406325]]

これまで、IT インフラストラクチャの管理は困難な作業でした。システム管理者は、アプリケーションの実行に必要なすべてのハードウェアとソフトウェアを手動で管理および構成する必要があります。

しかし、近年、状況は劇的に変化しました。クラウド コンピューティングなどのトレンドにより、組織が IT インフラストラクチャを設計、開発、保守する方法に革命が起こり、改善されました。

このトレンドの重要な要素の 1 つは、Infrastructure as Code (IaC) と呼ばれ、今日はこれについてお話します。

Palo Alto Networks の Prisma クラウド担当シニア バイスプレジデントである Varun Badhwar 氏によると、Infrastructure as Code はクラウド セキュリティの 3 つの柱の 1 つになりつつあり、DevOps とセキュリティを組み合わせて DevSecOps 市場を推進しています。

インフラストラクチャ・アズ・コード (IaC) の定義

Wikipedia では、インフラストラクチャをコードとして次のように定義しています。

  • Infrastructure as Code は、物理的なハードウェア構成や対話型構成ツールではなく、機械が読み取り可能な定義ファイルを通じてコン​​ピューティング データ センターを管理および構成するプロセスです。

簡単に言えば、コードとしてのインフラストラクチャとは、構成ファイルを使用して IT インフラストラクチャを管理することを意味します。

次に、「なぜこれをやっているのか?」と疑問に思うかもしれません。さて、Infrastructure as Code はどのような問題を解決するのでしょうか?

IT インフラストラクチャ管理の問題点

IT インフラストラクチャの管理は長い間、手動のプロセスでした。人々は物理的にサーバーを設置し、構成します。これらの担当者は、オペレーティング システムとアプリケーションに必要な正しい設定でマシンが構成された後にのみ、アプリケーションを展開します。当然のことながら、この手動プロセスは多くの問題を引き起こすことがよくあります。

最初の大きな問題はコストです。ネットワーク エンジニアからハードウェア メンテナンス技術者まで、プロセスの各ステップで必要なタスクを実行するには、多数の専門家を雇う必要があります。当然のことながら、これらの人全員に給与を支払い、管理する必要があり、その結果、管理コストが増加し、組織内の内部コミュニケーションの複雑さが増します。その結果、資金は投入されたものの、会社は独自のデータセンターを構築して維持することができず、コストが数桁も増加しました。

もう一つの大きな問題は、スケーラビリティと可用性です。これはすべて「速度」の問題に起因すると考えられます。手動構成は時間がかかりすぎるため、アプリケーションのトラフィックが急増することが多く、システム管理者は負荷を管理するために必死にサーバーをセットアップしようとしていました。これは必然的にユーザビリティに影響を及ぼします。組織にバックアップ サーバーやデータ センターがない場合、アプリケーションが長期間使用できなくなる可能性があります。

3 番目の大きな問題は、監視とパフォーマンスの可視性です。インフラストラクチャがすべて揃ったら、それが最適に動作していることを確認するためにどのように監視しますか?問題が発生した場合、インフラストラクチャのどこで問題が発生しているかをどのように特定しますか?それはネットワーク、サーバー、それともアプリケーションでしょうか? Netreo のようなツールを使用すると、IT インフラストラクチャ全体のパフォーマンスを包括的に把握できます。 Netreo の自動デバイス検出および構成により、環境内に死角がないことを確認でき、プラットフォームのトポロジ マッピング、イベント相関、および自動化された根本原因分析により、問題が発生している場所を正確に特定できます。

最後の問題は矛盾です。複数の人が手動で構成を展開する責任がある場合、不整合は避けられない問題になります。

クラウドコンピューティング:その解毒剤?

クラウド コンピューティングは、データ センターの構築と維持の必要性とそれに伴う高額なコストを排除することで、上記の問題の一部を解決するのに役立ちます。

しかし、クラウド コンピューティングは万能薬からは程遠いものです。インフラストラクチャのニーズを迅速に設定できるため、高可用性やスケーラビリティなどの深刻な問題を解決できますが、不整合に対処することはできません。複数の人が設定を実行すると、必ず違いが生じます。

コードとしてのインフラストラクチャは、パズルの欠けているピースです。

先ほど説明した Infrastructure as Code の定義をもう一度見てみましょう。Infrastructure as Code とは、構成ファイルを使用して IT インフラストラクチャを管理することを意味します。

この定義から得られる重要なポイントは次のとおりです。インフラストラクチャがコードになる前は、IT スタッフはインフラストラクチャを管理するために手動で構成を変更する必要がありました。インフラストラクチャをコードとして使用すると、インフラストラクチャの構成はコード ファイルの形式になります。テキストだけなので、簡単に編集、コピー、配布できます。他のソース コード ファイルと同様に、ソース管理下に置くことができます (また、そうすべきです)。

インフラストラクチャ・アズ・コードの利点

先ほど、クラウド コンピューティングではこれらの問題の一部しか解決できず、すべてを解決できるわけではないと述べました。コードとしてのインフラストラクチャは、パズルの最後の欠けているピースです。

次に、Infrastructure as a Service ソリューションを導入することで組織が得られるメリットについて詳しく説明します。

スピード

Infrastructure as Code が提供する大きな利点の 1 つは速度です。スクリプトを実行することで、完全なインフラストラクチャを迅速にセットアップできます。開発、本番、ステージング、QA など、あらゆる環境でこれを実行できます。 Infrastructure as Code を使用すると、ソフトウェア開発ライフサイクル全体をより効率的にすることができます。

一貫性

人間の記憶は誤りやすく、人間は間違いを犯すため、手動のプロセスではエラーが発生する可能性があります。さらに、コミュニケーションも問題であり、私たちは通常、コミュニケーションがあまり得意ではありません。前述のように、インフラストラクチャを手動で管理すると、どれだけ努力しても矛盾が生じてしまいます。 Infrastructure as Code は、構成ファイル自体を唯一の真実のソースにすることでこの問題を解決します。こうすることで、矛盾なく同じ構成を繰り返し展開できることが保証されます。

説明責任

これは早くて簡単な方法です。インフラストラクチャ アズ コード構成ファイルは、他のソース コード ファイルと同様にバージョン管理できるため、各構成に加えられた変更を完全に追跡できます。もはや、「誰が何をいつ行ったか」を推測するゲームではありません。

高効率

インフラストラクチャをコードとして使用することで、インフラストラクチャを複数の段階でデプロイできます。これにより、ソフトウェア開発ライフサイクル全体の効率が向上し、チームの生産性が新たなレベルに到達します。

プログラマーがインフラストラクチャをコードとして使用してサンドボックス環境を作成および起動できるようにすることで、分離した状態で安全に開発できるようになります。同じことは QA プロフェッショナルにも当てはまり、実稼働環境の完全なコピーを持ち、その中でテストを実行できます。最後に、デプロイメント フェーズに進み、インフラストラクチャとコードを 1 つのステップで本番環境にプッシュします。

低コスト

疑いなく、コードとしてのインフラストラクチャの主な利点の 1 つは、インフラストラクチャ管理のコストの削減です。クラウド コンピューティングとインフラストラクチャをコードとして組み合わせることで、ハードウェアにお金をかけたり、ハードウェアを操作する人を雇ったり、ハードウェアを保管するための物理的なスペースを構築またはレンタルしたりする必要がなくなるため、コストを大幅に削減できます。

さらに、インフラストラクチャ・アズ・コードは、別のより微妙な方法でもコストを削減します。これを「機会費用」と呼びます。

ご存知のとおり、有能な人材を適切なポジションに配置することで、その効果を最大限に高めることができます。自動化できるタスクだけを依頼すると、間違いなくリソースの無駄になります。企業組織にさらなる価値をもたらすタスクに重点を置く必要があります。ここで、コードとしてのインフラストラクチャが含まれる自動化戦略が役に立ちます。

インフラストラクチャ・アズ・コードの仕組み

Infrastructure as Code ツールはさまざまな方法で動作しますが、一般的には「リソース構成への命令型アプローチ」に従うツールと「リソース構成への宣言型アプローチ」に従うツールの 2 つの主なタイプに分類できます。

このうち、命令型リソース構成方式とは、リソースユーザーが要求された状態を正式にエンコードせず、リソースユーザーがコマンドシーケンスを決定する方式を指します。

最も注目すべきは、命令型のアプローチは繰り返し実行できず、したがって自動化できないことです。これは、リソースの消費者が、現在の各状態に対して目的の状態につながるコマンドのシーケンスを決定する必要があるためです。

宣言型のリソース構成アプローチでは、リソース ユーザーが目的の状態を正式にエンコードし、コンポーネントがコマンドのシーケンスを決定します。

最も注目すべきは、宣言型アプローチは繰り返し実行可能であり、したがって自動化に適していることです。これは、コンポーネントが現在の状態から目的の状態に至る可能性のあるコマンドのシーケンスを決定できるためです。

ベストプラクティス

以下に、インフラストラクチャをコードとして活用する戦略を最大限に活用するためのベスト プラクティスのリストを示します。

  • コードを唯一の真実のソースにします。すべてのインフラストラクチャ仕様を構成ファイルに明示的にエンコードする必要があります。構成ファイルは、すべてのインフラストラクチャ管理の問題に関する唯一の真実の情報源である必要があります。
  • すべての構成ファイルをバージョン管理し、すべての構成ファイルをソース コード管理下に置きます。
  • インフラストラクチャの仕様については、ドキュメントをできるだけ少なく(またはまったく使用しない)します。この点は最初の点の論理的な帰結です。構成ファイルは唯一の信頼できる情報源であるため、これ以上のドキュメントは必要ありません。外部ドキュメントが実際の構成と同期しなくなることはよくありますが、構成ファイルではそのようなことは起こりません。
  • 構成をテストして監視します。 Infrastructure as Code はコードであり、すべてのコードと同様にテストできます。だからテストしてみるべきです!インフラストラクチャのコードとしてテストおよび監視ツールを使用することで、サーバーを本番環境に展開する前に、サーバーのバグや不整合をチェックできます。

コードとしてのインフラストラクチャの自動構成およびオーケストレーション ツール

現在、市場にはインフラストラクチャ・アズ・コード自動デプロイメント ツールが数多く存在します。ここでは、次の 4 つの自動構成およびオーケストレーション ツールに焦点を当てます。

Alibaba Cloud リソースオーケストレーションサービス ROS

これはクラウドネイティブのオーケストレーション ツールです。 JSON/YAML 形式のテンプレートを記述することで、ECS インスタンスやデータベース インスタンスなどの必要なクラウド サービス リソースとリソースの依存関係がテンプレートに定義されます。次に、テンプレートに基づいて ROS にリソース スタックが作成されます。 ROS サーバーはテンプレートに基づいてすべてのリソースの作成と構成を自動的に完了し、自動化された展開と運用および保守を実現します。リソース スタックは、テンプレートで定義されているすべてのリソースを管理し、リソースの追加、更新、削除など、新しいテンプレートを通じて更新できます。

AWS クラウドフォーメーション

これもクラウドネイティブのオーケストレーション ツールです。運用および保守担当者は、JSON/YAML 形式のテンプレートを使用してクラウド サービスのリソースを定義し、リソース スタックを通じてこれらのリソースを管理します。

ハシコープテラフォーム

これはオープンソースの自動化オーケストレーション ツールです。構成ファイルに基づいて、管理対象のコンポーネント、つまりインフラストラクチャ リソースをファイル内に定義して実行可能なプランを生成し、このプランを実行して、定義されたコンポーネントの作成、増分変更、および継続的な管理を完了できます。実行できない場合はエラーメッセージが表示されます。 Terraform は、コンピューティング インスタンス、ネットワーク インスタンス、ストレージ インスタンスなどの IaaS レイヤー リソースを管理できるだけでなく、DNS ドメイン名や解決レコード、SaaS アプリケーション機能などの高レベルのサービスも管理できます。

プルミ

Terraform と同様に、これもオープンソース プロジェクトですが、Terraform との重要な違いは、クラウド サービス プロバイダー固有のテンプレート言語を学習して構成を記述する必要なく、使い慣れたプログラミング言語を使用して宣言型の構成を記述できることです。

企業組織は、独自のニーズとビジネス展開モデルに基づいて適切なツールを選択し、コードとしてのインフラストラクチャの役割をより適切に果たすことができます。

要約する

コードとしてのインフラストラクチャは、DevOps 運動の重要な部分です。クラウド コンピューティングを、手動の IT 管理によって生じる多くの問題を解決するための最初のステップと考えると、インフラストラクチャ アズ コードは次の論理的なステップであると言えます。これにより、クラウド コンピューティングの潜在能力が最大限に発揮され、開発者やその他の専門家がエラーが発生しやすい手作業のタスクを実行する必要がなくなります。さらに、ソフトウェア開発ライフサイクルのすべての段階でコストが削減され、効率が向上します。

Infrastructure as Code とは何ですか?どのように機能しますか?ベストプラクティスのチュートリアル

<<:  オンプレミスからクラウドへ: エンタープライズ近代化の 3 つのフェーズ

>>:  Tmall 618が初めて「グリーンGMV」に言及:注文ごとに前年比17.6%の炭素排出量を削減

推薦する

ストレージとバックアップ VPS の収集とコンパイル

VPS はさまざまな目的で使用されます。最も一般的なのは、Web サイトの構築とプログラムの実行です...

SEO業界の運営におけるいくつかの問題について話す

相当数の人がSEO業界を理解していないか、少ししか知識がなく、非常に高度な業界だと思っています。また...

Xiong Zhanghaoが「プレミアムプラス」プランを開始!トラフィック、露出、運用の問題はすべて重要です

本日、百度連合サミットが海口市で盛大に開催されました。この連合サミットには、百度エコシステムの多くの...

データベース |分散トランザクションの実装原理の詳細な説明

トランザクションは、データベース システムにおいて非常に興味深く重要な概念です。これは、データベース...

SEO 診断: ストック イメージ ウェブサイト診断の提案

この2日間は家で何もすることがなく、会社もソフト記事を書くことを要求していません。とても退屈です。ま...

最も現金を保有する米国企業トップ10:マイクロソフトが620億ドルでトップ

テンセントテクノロジーニュース(玉林)北京時間9月17日、外国メディアの報道によると、現在多くのアメ...

コンバージョン率は SEO の仕事ではないのですか?

前回の記事「独立系ウェブサイトの直帰率を下げるには?」 》ではロングテールワードとコンバージョン率の...

A5 トピック: 電子商取引の価格戦争、集団闘争、業界は市場シェアを競うために資金を投入

Webmaster Networkによると、Suning.comが今年4月に価格戦争を開始して以来、...

AI、5G、クラウドコンピューティングは2021年にエッジコンピューティングにどのような影響を与えるでしょうか?

11 月 17 日のニュース、これまでのところ、エッジ コンピューティングは常に大きな可能性を秘めて...

ヒョウの姿を垣間見る:Maibaobaoの簡単なSEO分析

みなさんこんにちは。私は徐子宇です。 SEO コミュニティが Maibaobao を知ったのは、同社...

「百度重み」の計算方法と脆弱性分析

5月3日、筆者は「ウェブマスターは『百度の重み』に執着するのをやめるべきだ」と題する記事を掲載した。...

hostkvm: 香港 cn2 高速 VPS、20% 割引、月額 7.6 ドルから、2G メモリ/1 コア/40gSSD/120G トラフィック

Hostkvm は現在、香港葵湾データセンターで香港 CN2 VPS を推進しています。この VPS...

ドメインコマンドに関する考察

この記事を書く前に、SEO コンサルタントは Baidu の公式ドキュメントを検索しましたが、ドメイ...

クラウドに移行しますか? SD-WANは重要です!

高性能な SD-WAN ソリューションは、基盤となるトランスポートの任意の組み合わせを使用できる柔軟...

分散トランザクション - 信頼性の高いメッセージ最終一貫性ソリューション

[[405809]]みなさんこんにちは。私はバスケットボールが大好きなプログラマーのウルフキングです...