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

推薦する

クラシックな推奨事項: リースウェブ 月額 7 ドル 512M メモリ KVM/月額 38 ドル サーバー/米国/オランダ データ センター

LeaseWeb は有名なブランドです。その資格に注意を払う必要はありません。重要なのは、そのローエ...

クリック広告の単価を上げるための新たな考え方

広告のクリック単価をいかに高めるかは、多くのウェブマスターが考えている問題です。短期間で収益をもたら...

SEOの第一歩:ウェブサイトの位置付けと収益モデル

ウェブサイトのポジショニングとは、大学入試の願書に記入するように、ウェブサイトの将来の発展方向をポジ...

Amazon Web Services と Riot Games が協力して e スポーツ体験を刷新

2022年8月11日、ライアットゲームズは、アマゾン ウェブ サービスと連携して、ライアットゲームズ...

国内のSaaSエンタープライズサービスはなぜ普及しないのか?

一般的な投資会社が国内の投資機会を探す場合、通常は米国を参考にします。一つの方法は、中国にコピーして...

警察は3,500以上の違法ウェブサイトを取り締まる

北京の新華社通信(史景南、鄒偉記者)が14日伝えたところによると、記者は14日、公安部から、今年8月...

クラウドネイティブのデータレイクを有効活用するにはどうすればよいでしょうか?

データ レイクは、企業がデータ シナリオの増加、データ構造の複雑化、データ処理要件の多様化といった現...

今日のナビゲーション Web サイトは、自身の生活環境をどのように理解すべきでしょうか?

ナビゲーション ウェブサイトといえば、誰もが Hao123 を思い浮かべると思います。Hao123 ...

SEOの世界についての理解と知識を深める

混乱は常に存在しており、この混乱は私を取り巻く最初の日ではありません。親戚や友人が心配そうに「生計を...

Baidu スナップショットダイナミクスに基づいて Web サイトの構築と最適化を分析する方法

ウェブサイトの Baidu スナップショットは、Baidu 検索エンジン上のウェブサイトのホームペー...

ダブルイレブンが李佳琦に憑依

李佳琦とヴィヤが一晩で200億元相当の商品を販売したのを見て、ネットユーザーたちは数字に目がくらみ、...

novos: ベルギー VPS、年間 20 ユーロ、512M メモリ/1 コア/10g NVMe/256G 帯域幅

ベルギーのホスティング プロバイダーである NOVOS BV (VAT: BE0728513847、...

xinix-$3.99/Xen/512m メモリ/20g ハードディスク/1T トラフィック

XiNiX™ InfoTech Pvt. Lt は 2005 年に設立されたホスティング会社で、主に...

電子メールを活用して e コマース サイトの飛躍を促進 (パート 1)

ウェブサイトのマーケティングとプロモーションのさまざまな方法の中で、電子メールによるプロモーションは...