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%の炭素排出量を削減

推薦する

インターネットプロモーションがインターネットマーケティングの生死を決める

インターネットプロモーションはインターネットマーケティングの重要な部分であり、電子商取引においても重...

Chastity.comの創設者は誇大宣伝を否定: 私は売れ残り女ではない

「貞操の女神」屠世有氏は、結婚前の貞操を主張することで自身の選挙運動を盛り上げたことについて質問され...

ガートナー:世界のパブリッククラウド収益は2019年に17.3%増加

最近、世界有数の情報技術調査・コンサルティング会社であるガートナーが、世界のクラウド サービス市場に...

簡単な説明: モバイルサイトに最も適した 5 つの業界

少し前に、PC ベースの Web サイト用のモバイル サイトを構築しました。わずか 1 週間で、We...

共同購入サイトの死亡率は約75%です。Juqi.comは破産寸前で、共同購入サイトが権利を守るのは困難です。

新華網、広州、10月1日(楊昭夢記者、黄梅記者)インターネット上で見知らぬ人同士が共同で購入するビジ...

クラウド検索ベータ版オンライン体験

12月18日、元Google中国代表の劉軍氏が創設した雲雲検索のベータ版が正式にリリースされた。 3...

記事内容のSEO最適化経験の共有

SEO に関しては、定期的に記事を更新し、オリジナルの記事、または少なくとも疑似オリジナルの記事を書...

App Store SEO と App Store ASO の違いは何ですか?

ASO (「 App Store最適化」)は、アプリ ストアを最適化することでアプリのダウンロード数...

ショッピング ウェブサイトの合理的なショッピング プロセスを設計する方法 - Google 検索エンジン最適化、SEO チュートリアル、SEO 知識

1. 操作手順のガイダンスを提供する支払いは通常、複数のステップからなるプロセスであり、ユーザーは支...

WeChatミニプログラムプロモーション:0コストで1:50の核分裂効果を達成するにはどうすればいいですか?

この記事では、主に、新規ユーザーを熱狂的に引き付けるための分裂伝播メカニズムの設計、ユーザーを相互に...

優れた SEO 担当者にはどのような能力が必要ですか?

月給5,000~50,000のこれらのプロジェクトはあなたの将来です今日は、SoftEasy Web...

企業ウェブサイトのマーケティングコンバージョン率を向上させる5つの方法

今日では、ほとんどすべての企業が、自社のブランドや製品を宣伝するためにインターネットを利用する方法を...

Alipayはワイヤレス決済の開発に数億ドルを投資:まず土地を占領し、それから減算を行う

アリペイはワイヤレス決済事業に数億元を投資した。彭磊最高経営責任者(CEO)と他の同社幹部は同紙に対...

ライブストリーミングが618の変化を牽引:DouyinとKuaishouは積極的、一方商人は冷静

要点ライブストリーミング販売ブームは引き続き熱を帯びており、今年の伝統的な電子商取引プロモーションフ...