オープンソースの詳細については、以下をご覧ください。 51CTO オープンソース基本ソフトウェアコミュニティ https://ost..com 最近、コミュニティ内でクラウド ネイティブとは何かを尋ねる人が多くいるのを目にします。幸いなことに、私はクラウド ネイティブ テクノロジーの初心者ユーザーです。現在使用しているクラウド ネイティブ テクノロジーには、マイクロサービス、Kubernetes、Docker、Istio、Serverless などがあります。今日はそれらについてお話ししましょう。 クラウドネイティブの起源重要なゲストクラウドネイティブを紹介する前に、まずはクラウドネイティブ分野で最も影響力と権威のある組織とも言える重鎮ゲストのCNCFを紹介しましょう。 CNCF は Cloud Native Computing Foundation の正式名称で、2015 年 7 月 21 日に設立され、米国ポートランドで開催された OSCON 2015 で発表されました。当初のスローガンは、オープンソース技術を遵守し、統合して、マイクロサービス アーキテクチャの一部としてオーケストレーションされたコンテナを作成することでした。クラウドネイティブアプリケーションの推進と普及に尽力する重要な団体です。 CNCF の別のパノラマ写真は次のとおりです。 クラウドネイティブの定義CNCFの定義
重要な定義クラウド ネイティブが初めて推進された 2015 年、Matt Stine 氏は著書「Migrating to Cloud Native Architecture」の中で、クラウド ネイティブ アーキテクチャのいくつかの特徴 (12 の要素、マイクロサービス、セルフアジャイル アーキテクチャ、API ベースのコラボレーション、回復力) を定義しました。 2017 年、Matt Stine 氏は論調を変え、クラウド ネイティブ アーキテクチャの 6 つの特性 (モジュール性、可観測性、展開可能性、テスト可能性、置き換え可能性、処理可能性) をまとめました。 Pivotal の公式 Web サイトでは、クラウド ネイティブを DevOps + 継続的デリバリー + マイクロサービス + コンテナという 4 つの主要ポイントにまとめています。 MattStine 氏は、クラウド ネイティブは DevOps、継続的デリバリー、マイクロサービス、アジャイル インフラストラクチャ、コンウェイの法則などを含むアイデアの集合体であると考えています。 クラウド ネイティブには、テクノロジー (マイクロサービス、アジャイル インフラストラクチャ) と管理 (DevOps、継続的デリバリー、コンウェイの法則、再編成など) の両方が含まれます。クラウド技術と企業経営手法の集合体ともいえます。 現時点では、CNCF の公式定義を標準として採用します。 CNCF の定義によると、クラウド ネイティブの代表的なテクノロジには、コンテナー、サービス メッシュ、マイクロサービス、不変インフラストラクチャ、宣言型 API などがあります。 クラウドネイティブの代表的な技術マイクロサービスマイクロサービスは、「マイクロ」とは何か、そして「サービス」とは何かという 2 つの側面から理解できます。 マイクロとは、狭義にはサイズが小さいことを意味します。 サービスはシステムと区別する必要があります。サービスは、比較的小規模で独立した機能単位の 1 つまたはグループであり、ユーザーが認識できる機能の最小セットです。 従来のモノリシック アーキテクチャは、システム全体として展開されます。一方、マイクロサービスは、独立したコンポーネント (ユーザー サービスや製品サービスなど) の単位として展開されます。 単一のアプリケーションでは、特定の業務の要求量が非常に大きいことがわかった場合、その業務のみを拡大することはできません。クラスターを実装するには、単一のアプリケーション全体をコピーし、別の環境をデプロイすることしかできません。マイクロサービスは、まさにモノリシック アプリケーションの欠陥のために誕生しました。近年人気が高まっている Docker は、マイクロサービス アーキテクチャに効果的なコンテナを提供します。 容器オープンソース ソリューション プロバイダーである Red Hat の公式 Web サイトに記載されているコンテナーの定義: Linux® コンテナは、システムの他の部分から分離されたプロセスの集合です。 これらのプロセスを実行するために必要なすべてのファイルは別のイメージによって提供されるため、Linux コンテナーは移植可能であり、開発からテスト、本番環境まで一貫しています。 コンテナーはプロセス レベルの分離を提供し、オペレーティング システムによって管理されるリソースを相互に分離されたグループに分割し、相互に分離されたグループ間のリソース使用の競合を解決できます。たとえば、アプリケーション APP 1 は Centos オペレーティング システムでのみ実行できます。 APP2 は Ubuntu オペレーティング システムでのみ実行できます。 APP1 と APP2 を同じオペレーティング システム上で同時に実行すると、競合が発生します。コンテナ技術はまさにこのような問題を解決できます。現在主流のコンテナ技術には、Docker、LXD、RKT などがあります。 ドッカーコンテナに関して言えば、Docker について話さなければなりません。 2010年、数人のひげを生やした若者が米国サンフランシスコで「dotCloud」という会社を設立しました。同社は主にPaaSベースのクラウドコンピューティング技術サービスを提供しています。具体的には、LXC に関連するコンテナ技術です。 LXC は、Linux コンテナ仮想化テクノロジー (Linux コンテナ) です。 その後、dotCloud はコンテナ テクノロジーを簡素化および標準化し、Docker と名付けました。 Docker プロジェクトは、コンテナ イメージを使用して、アプリケーションの実行に必要な完全な環境、つまりオペレーティング システム全体のファイル システムを直接パッケージ化します。 このアプローチは、長い間 PaaS ユーザーを悩ませてきた一貫性の問題に対する解決策と見なすことができます。 「一度リリースすればどこでも実行できる」Docker イメージを作成することの重要性は、開発環境とテスト環境を統合することすらできない Buildpack を作成することよりもはるかに高いです。 Docker プロジェクトにより、コンテナ テクノロジの使用のハードルが大幅に下がりました。軽量、ポータブル、仮想化されており、言語に依存しません。プログラムを作成したら、それをサーバーに投入し、どこにでも展開して実行できるイメージにします。開発・テスト・本番環境が完全に統合されており、リソース管理や仮想化も行えます。 オープンソースのアプリケーション コンテナ エンジンである Docker は、開発者やシステム管理者が分散アプリケーションを構築、公開、実行できるように設計されたプラットフォームです。一般的な Docker プラットフォームには、Kubernetes、OpenShift V3、Flynn、Deis などがあります。 Docker を使用すると、開発者はさまざまなアプリケーションと依存パッケージをポータブル Docker コンテナにパッケージ化し、Docker コンテナをリソースのセグメンテーションとスケジューリングの基本単位として使用し、ソフトウェア ランタイム環境全体をカプセル化して、Linux マシンに公開することができます。 クベネフィットコンテナを使用する場合は、コンテナのライフサイクルを調整および管理する必要があります。ここで Kubernetes について言及する必要があります。 Kubernetes という単語はギリシャ語に由来し、操舵手または航海士を意味します。 K8s はその略称であり、「ubernete」の 8 つの文字を数字の「8」に置き換えたものです。 Kubernetes はまったく新しい発明ではありません。これは、Google が社内で使用していた Borg をベースに改良した汎用コンテナ オーケストレーション スケジューラです。 2014 年 6 月にオープンソース化されました。 2015年にGoogleはLinux Foundation傘下のCloud Native Computing Foundation(CNCF)に寄贈し、KubernetesはCNCFの最初のプロジェクトとなりました。 CNCF でホストされている一連のプロジェクトは、クラウド ネイティブ アプリケーションのライフサイクル全体の管理に特化しており、デプロイメント プラットフォーム、ログ収集、サービス メッシュ、サービス検出、分散トレース、監視、セキュリティなど、さまざまな分野でオープン ソース ソフトウェアを通じて完全なソリューション セットを提供しています。 クラウド アプリケーションのデプロイメント標準として、Kubernetes はビジネス アプリケーションに直接向けられており、クラウド アプリケーションの移植性を大幅に向上させ、クラウド ベンダー ロックインの問題を解決し、クラウド アプリケーションをクラウド間でシームレスに移行し、ハイブリッド クラウドの管理にも使用できるため、エンタープライズ IT クラウド プラットフォームの新しい標準となっています。 サービスメッシュサービス メッシュとは、サービス間の通信を処理するために使用されるインフラストラクチャ層を指します。 これは、最初に Buoyant (Service Mesh プロジェクト Linkerd を開発した会社) によって提案され、社内で使用されました。同社は2016年9月29日に初めてこの用語を公に使用した。 サービス メッシュは通常、マイクロサービス アプリケーションの構成可能なインフラストラクチャ層に使用されます。 Istio (Google、IBM、Lyft がサポート) は、最もよく知られているサービス メッシュ アーキテクチャです。 Docker や Kubernetes などのツールは「デプロイメントの問題を解決」しました。しかし、サービス メッシュの起源であるランタイムの問題はまだ解決されていません。 Service Mesh の登場により、マイクロサービスの接続、管理、監視における Kubernetes の欠点が補われ、Kubernetes のアプリケーションとサービスの管理が改善されました。 そのため、Service Meshの代表格であるIstioが登場すると、Kubernetesと連携して動作する強力なマイクロサービス管理ツールとして業界から高く評価されました。 不変のインフラストラクチャ従来の可変サーバー インフラストラクチャでは、サーバーは継続的に更新および変更されます。このタイプのインフラストラクチャを使用するエンジニアと管理者は、SSH 経由でサーバーに接続し、パッケージを手動でアップグレードまたはダウングレードしたり、サーバーごとに構成ファイルを調整したり、新しいコードを既存のサーバーに直接展開したりできます。可変的なインフラストラクチャでは、災害が発生したときにサービスを再構築することが困難になることがよくあります。継続的な過度の手作業と記録の不足により、標準で初期化されたサーバーから同等のサービスを再構築することが困難になります。サービス操作中にサーバーを継続的に変更すると、プログラム内の可変変数の値が変更されることになり、一貫性のない状態の同時実行のリスクが発生します。サーバーにこれらの変更を加えると中間状態も導入され、予期しない問題が発生する可能性があります。 不変インフラストラクチャはプログラミングにおける不変の変数であり、割り当てが完了した後は変更できません。古いものを全体的に置き換えるには、新しいものだけを作成する必要があります。この特性により、この変数は並行環境で安全に使用できます。インフラストラクチャの最も基本的な不変性は、サービスを実行するサーバーがデプロイ後に変更されないことを意味します。メリットとしては、インフラストラクチャの一貫性と信頼性の向上、よりシンプルで予測可能な展開プロセスなどが挙げられます。構成ドリフトやスノーフレーク サーバーなど、変更可能なインフラストラクチャでよく見られる問題を軽減または完全に防止できます。 宣言型API宣言型 API では、システムが何をすべきかを宣言でき、システムはその状態に向かって進み続けます。 「プロダクトマネージャー」と「開発」の間にはちょっとした関係があります。 「製品マネージャー」は要件を提案する責任のみを負い、「開発」がそれをどのように実装するかについては気にしません。 要約すると:
クラウドネイティブの利点は何ですか?一般的に、クラウド ネイティブは、マイクロサービスの開発、テスト、展開、リリースのプロセス全体をオープンにすることができます。クラウド ネイティブ アーキテクチャでは、基盤となるサービスまたは API がクラウドに展開されます。これは、負担の大きい運用および保守作業をクラウド プラットフォーム プロバイダーに移管することと同じですが、これはクラウド コンピューティングのインフラストラクチャが安価であることによるものです。私が個人的に考える次の 3 つの利点について詳しく説明します。 高速反復クラウドネイティブ アプリケーション開発を活用することで、デリバリー チームは反復的な自動化とオーケストレーションを使用して迅速に反復処理を実行できるようになり、開発者はビジネス開発にさらに集中できるようになります。 自動展開クラウド ネイティブ アプローチは、ソフトウェア配信プロセスで開発環境やその他のさまざまな環境を構築するために多大な労力を必要とする従来の仮想化指向のビジネス プロセスよりもはるかに優れています。クラウド ネイティブ アーキテクチャは、自動化と構成の機能を備え、信頼性が高く、実証済みで、監査済みの既知の適切なプロセスを基盤としているため、繰り返しの手動介入を必要とせずに俊敏な結果を実現します。 独立性と効率性クラウド ネイティブはマイクロサービス アーキテクチャをもたらします。マイクロサービスとは、基本的に独立してリリースできるアプリケーション サービスです。したがって、大規模なアプリケーション全体への影響が少なく、アップグレードしたり、グレー表示したり、独立したコンポーネントとして再利用したりできます。各サービスは専用の組織によって個別に完了することができ、依存側は入力ポートと出力ポートを決定するだけで完全に開発できます。チーム全体の組織構造もより合理化されるため、コミュニケーションコストが低くなり、効率が高くなります。 結論として、クラウド ネイティブは確かに多くの利便性をもたらしましたが、同時に、R&D および運用保守担当者への要求も高まりました。ますます複雑化するビジネス問題を解決するために、より適切なクラウド ネイティブ テクノロジーを選択する方法。 参考文献
オープンソースの詳細については、以下をご覧ください。 51CTO オープンソース基本ソフトウェアコミュニティ https://ost..com. |
<<: クラウドファーストのプロセス統合がクラウド アプリケーションに最適なのはなぜですか?
>>: スマートスペースは物理世界とサイバーセキュリティの世界をつなぐ
11月9日、テンセントのminiStationマイクロゲームコンソール発表会が北京静源芸術センターで...
少し前、いくつかのメディア記事によってナンシーという女の子が有名になり、WeChat Moments...
ライブストリーミング電子商取引は、ここ2年間でホットな産業と言えます。李佳琦と魏亜のライブストリーミ...
分散 Web プログラミングでは、高い同時実行性と内部分離を解決するための重要なテクノロジはキャッシ...
月給5,000~50,000のこれらのプロジェクトはあなたの将来です民間にはコピーライティングの達人...
[[420327]] [[420328]]王宗瑞Alibaba Cloud データベース配信アーキテ...
最近、Baidu プロモーションでどれだけのお金が無駄になっているかという不満をよく耳にします。もち...
IT 運用とネットワーク運用の近代化により、自動化とコンピューティングのテクノロジーとツールが急速に...
韓国の無制限トラフィック VPS は非常に人気があります。主な理由は、韓国の VPS は登録不要、高...
ウェブサイトの改訂は、すべてのウェブマスターにとって頭痛の種です。主な理由は、ウェブサイトが適切に改...
Facebook が Meta にブランド名を変更したことは、Metaverse に対する最も公的な...
月収10万元の起業の夢を実現するミニプログラム起業支援プランここ数日、皆さんのWeiboやMomen...
米国ヒューストンの老舗サーバーベンダー「Oplink」は現在、VPS事業において最初の6ヶ月間は50...
【ガイド】昨晩と今朝早くのBaiduの大きなアップデートから、私は教訓を得ました:Baiduを簡単に...
2016 年を振り返ると、多くの大企業がデータセンターのワークロードをクラウドに移行する計画を立てて...