本文已经被收录在
「DahuaCloudネイティブシリーズ」专栏,本人会将毕生所学全部记录其中,暂且免费,记得关注哦!
記事ディレクトリ
1.はじめに
これは、過去3か月間にcsdnに来て以来、私が書いた中で最も深刻な記事かもしれません。クラウドネイティブの概念は常に曖昧です。CloudNativeComputing Foundation(CNCF)はいわゆる定義を与えていますが、それはできません。クラウドネイティブは一種のアイデアであり、ソリューションであり、非常に抽象的であるため、クラウドネイティブの概念、それがアイデアである理由をすべての人によく理解してもらいます。
クラウドネイティブのエコシステムと境界が拡大し続けるにつれて、クラウドネイティブ自体の定義が変化しています。異なる会社(Pivotal&CNCF)はそれに対して異なる定義を持っており、同じ会社は異なる期間で異なる定義を持っています。ムーアの法則によると、クラウドネイティブの定義は今後も変更され続けます。
クラウドネイティブとは何かを可能な限り伝えるために、私は多くの記事を読み、業界で有名なビッグウィッグ、年俸数千万のハードコアエキスパートなど、多くの有名人を訪問しました。何十万人もの成功した学生が彼らの名前でマスター、私の知識の欠如が皆を遅らせることを本当に恐れているので、皆が終わりを見ることができることを願っています、そしてこの記事があなたに収穫をもたらすことを願っています。
3ヶ月前にcsdnに来ることにしました。実際、csdnが企業であれ個人であれ、変更を見ることが大きな理由です。勇気を持って変更を加えると、成功は容易ではないと思います。csdnの戦略的な方向性を漠然と見ていると、これは持つ価値のあるプラットフォームであり、このプラットフォームのために何かできると感じています。
到着当初、暇な時間に数日を過ごし、csdnのほぼすべての機能を試しました。いくつかの欠点はありますが、csdnの美しさを止めることはできません。最も言及する価値があるのはホットリストだと思います。 csdnのアルゴリズム。多くの日、それは非常に興味深いです。時間や機会があれば、私は范博士
彼と良いチャットをするので、ここではあまり話しません。
2.クラウドコンピューティングとは
クラウドネイティブとなると、言及する必要がありますが云计算
、クラウドコンピューティングとは何ですか?クラウドコンピューティングに精通している必要はありません。次のようなニュースの見出しを見たことがあるはずです。“中国云计算之父:当年拿走马云10个亿,11年后还给马云5400亿”
そうです、中国のクラウドコンピューティングの父は、AlibabaCloudの創設者である王翦博士です。
当初、国内の電子商取引は急速な発展の時期を迎えました。淘宝網のユーザーは毎年10倍以上増加しましたが、外国のクラウドコンピューティングプラットフォームは、何億人もの人々にサービスを提供する状況を考慮せずに、地元企業向けに設計されました。 。したがって、独自の安価で使いやすいコンピューティングアーキテクチャのセットを持つことは、当時のアリババの最優先事項でした。そこで、JackMaはAlibabaのコンピューティングアーキテクチャを構築するためにMicrosoftからWangJianを雇い、10年間年間10億元を投資することに同意しました。
ただし、Alibaba Cloudの開発の最初の数年間はスムーズではなく、内部の疑問や技術的なボトルネックが発生し、Alibaba Cloudの見通しがわからなかった、または単にAlibabaを離れたため、多くのエンジニアが他の部門に投資しました。最悪の場合時間、Alibaba Cloud 80%エンジニア全員が去ることを選択しましたが、WangJianは依然として大きなプレッシャーに耐えました。
2013年、Feitianシステムは5,000台のマシンのクラスタースケジューリングを実現し、Aliは正式に完全なクラウドコンピューティングシステム機能を備えた中国初の企業となり、海外のクラウドコンピューティングサービスを提供できる中国初の企業にもなりました。それ以来、12306はAlibaba Cloudにビジネスを展開しており、Spring Festivalの旅行シーズンのピーク時に、Alibaba Cloudは12306システムのトラフィックの大部分を引き継ぎ、過去のチケットラッシュ中にシステムの麻痺を変えました。独自の強みを発揮したAlibabaCloudは、クラウドコンピューティングサービスを大規模に外界に提供し始めています。昨年のダブルイレブンであるAlibabaCloudは、世界新記録を樹立し、Alibaba Cloudはすべて、歴史をサポートし、更新してきました。5年前と比較して、AlibabaCloudのパフォーマンスが数十倍に向上したことは注目に値します。今日、Alibaba Cloudの国内シェアは他のライバルをはるかに上回っており、国際市場への参入に成功しています。
クラウドコンピューティングの力を感じたことがあると思いますので、クラウドコンピューティングの概念を見てみましょう。
2006年、Amazonは分散オペレーティングシステムに基づく強力なコンピューティングパワーをインターネットを介して数百万の一般ユーザーに提供しました。人々はこのオンラインコンピューティングサービスをクラウドコンピューティングと名付けました。
平凡な言葉で言えば、水や電気などの分散オペレーティングシステムを収集する強力なコンピューティングパワーは、誰もがこのコンピューティングリソースを効率的に使用できるように、一般の人々にとって必要不可欠になり、何千もの家庭に提供されています。蛇口と同じように、水が必要なときに蛇口をオンにすることができ、水を飲むために井戸に行く必要がなくなりました。電気が必要なときは、スイッチを直接オンにするだけで、もうスイッチをオンにすることができません。 2枚の木で挽く必要があります。しかし、あなたはお金を払わなければなりません、あなたは払わなければなりません、エネルギーが節約されるので、世界にはフリーランチはありません。
3.クラウドネイティブとは
8年前にクラウドネイティブと出会いました。当時、高校2年生でした。当時、クラウドネイティブの概念は比較的広範でした。夏休みだったのを覚えています。とても暑くて、ファンが吹いていました。QQグループの先輩たちが“Docker”
この言葉について話し合っているのを見ました。先輩たちがこの言葉をほめたたえているのを聞きました。好奇心に駆られて、クラウドネイティブの道を歩み始めました。
Dockerに初めて会ったときは、まだその力を感じていませんでした。簡単な経験をした後、落書きで破棄しました。翌年、つまり大学入試の数か月前に、すでにssmフレームワークでひどいプレーをしていました。 。、SpringBootに移行した後、SpringBootのパワーを感じた後、Dockerのことを考えずにはいられません。これもすぐに使えるアジャイル開発ではありませんか?この時、コミュニティのエコロジーが徐々に強くなっていることに気づきました。
みんながまだ「3年間の大学入試、5年間のシミュレーション」を点滅させていたとき、私はDockerを使用してLinuxで終了したSpringBootプロジェクトをデプロイしました。当時の興奮を今でも覚えています。プロジェクトを手動でデプロイする必要はありません。 Nginx、Redis、MySQLを手動でデプロイする...対応するバージョンのイメージをプルするためにDockerを使用するだけでよく、簡単なコマンドと関連するオーケストレーションツールの恩恵で、以前の複雑な操作を完了することができます。
大学入試の結果、++はすでに企業開発のニーズを満たしていることがわかりました当时已经称霸的k8s
。拥有绝对地位Docker
これSpringCloud Netflix
は風だと思います。風が吹くと豚が飛ぶことができることを知っておく必要があります。数学、物理学、化学よく、私はこのブタになりたいです。飛ぶことができるだけのブタ。
実際、クラウドネイティブは私が最初に知ってから非常に人気があり、ずっと人気があり、今日まで誰もが知っているとは思っていませんでした。
初期のクラウドネイティブアーキテクチャには、いくつかの特徴がありました。
- 12ファクターアプリ:クラウドネイティブアプリケーションアーキテクチャのパターンのコレクション
- マイクロサービスアーキテクチャ(マイクロサービス):独立してデプロイされ、一度に1つのことを実行するサービス
- セルフサービスのアジャイルインフラストラクチャ:アプリケーション環境とサービスを迅速に、繰り返し、一貫して提供するためのプラットフォーム
- APIベースのコラボレーション:サービス間の相互作用は、ローカルメソッド呼び出しではなくインターフェースに基づいています
- 耐脆弱性:システムは高負荷に耐えることができます
簡単に言えば:
- モジュール性
- 可観測性
- 展開性
- 妥当性
- 使い捨て
- 交換可能性
2019年、VMware Tanzuの公式ウェブサイトは、クラウドネイティブの最新の定義とクラウドネイティブのアーキテクチャの原則を示しました。
クラウドネイティブは、クラウドコンピューティング配信モデルを利用するアプリケーションを構築および実行するための方法論です。企業がクラウドネイティブアーキテクチャを使用してアプリケーションを開発および運用すると、顧客のニーズに応じて新しいアイデアをより迅速に市場に投入できます。
パブリッククラウドはインフラストラクチャに関するほぼすべての業界の考え方に影響を与えてきましたが、クラウドのような配信はパブリック環境に限定されていません。クラウドネイティブ開発は、パブリッククラウドとプライベートクラウドの両方に適しています。アプリケーションがどこにデプロイされているかではなく、アプリケーションがどのように作成およびデプロイされているかだけを気にする必要があります。
さらに重要なのは、開発者にコンピューティング能力と最新のデータおよびアプリケーションサービスへのオンデマンドアクセスを提供する機能です。クラウドネイティブ開発は、DevOps、継続的デリバリー、マイクロサービス、およびコンテナーをブレンドします。
云原生架构原则
:DevOps、Microservices、Containers、Security。
Cloud Native Computing Foundation(CNCF)は、Google、RedHatなどのオープンソースインフラストラクチャ業界のリーダーである企業が共同で主導する財団組織であると前述しました。コンテナサークルの支配的な状況です。Kubernetesプロジェクトを通じて、CNCFはオープンソースコミュニティオーケストレーションの分野のリーダーになり、それ以来、クラウドネイティブの定義とプロモーションの旗印を掲げ、大きな成功を収めています。
CNCFのパノラマを見てみましょう!
2015年、CNCFはクラウドネイティブをアプリケーションコンテナ化、マイクロサービス指向、コンテナオーケストレーションとして定義しました。2018年、CNCFはクラウドネイティブの定義を更新し、宣言型APIとサービスメッシュを追加しました(2017年のコミュニティの新しいテクノロジー、マイクロサービスと並んで、マイクロサービスのアップグレードバージョンではないことに注意してください)。これらのテクノロジーはフォールトトレランスを構築できます。 。、管理と監視が容易な疎結合システム。2018年には、多くのテクノロジー企業がクラウドネイティブの概念を受け入れ始め、クラウドネイティブファミリーに次々と加わりました。さらに、主流のクラウドコンピューティングプロバイダーが次々とCNCFに参加し、クラウドネイティブエコシステム全体を充実させ続けています。
第四に、クラウドコンピューティングの4つのレベル
4.1 IaaS(サービスとしてのインフラストラクチャ)
IaaS(Infrastructure as a Service)はベースレイヤーです。この層では、基本的なITリソース(コンピューティング、ネットワーク、ストレージ)が集約され、仮想化と動的化によってリソースプールが形成されます。リソースプールは、コンピューティング機能のコレクションです。エンドユーザー(企業)は、ネットワークを介して必要なコンピューティングリソースを取得し、独自のビジネスシステムを実行できます。このように、ユーザーはこれらのインフラストラクチャを自分で構築する必要はありませんが、これらのリソースを使用するために料金を支払います。
4.2 PaaS(Platform as a Service)
IaaSレイヤーの上には、PaaS(Platform as a Service)レイヤーがあります。このレイヤーには、基本的なコンピューティング機能を提供するだけでなく、ビジネス開発および実行環境もあり、アプリケーションコード、SDK、オペレーティングシステム、APIなどのITコンポーネントを提供して、個々の開発者や企業が対応する機能モジュールをソフトウェアまたはハードウェアに組み込むことができます。開発効率。企業またはエンドユーザーにとって、このサービスレイヤーは、ビジネス革新のための高速で低コストの環境を提供できます。
4.3 SaaS(サービスとしてのソフトウェア)
最上位層はSaaS(Software as a Service)です。実際、SaaSはクラウドコンピューティングの概念の前に存在し、クラウドコンピューティングテクノロジーの開発によってより良く開発されてきました。SaaSソフトウェアは「すぐに使用できる」ものであり、ユーザーによるインストールや、ソフトウェアのアップグレードやメンテナンスへのエンドユーザーの参加は必要ありません。同時に、オンデマンドソフトウェアでもあり、購入後に返品できない従来のソフトウェアに比べて比類のない利点があります。
4.4 DaaS(サービスとしてのデータ)
ますます多くのデータが沈殿し、抽象化されて、新しいサービスであるDaaS(Data as a Service)が形成されます。
データ集約の抽象化。データを一般的な情報に変換し、一般の人々に公開情報サービスを提供します。たとえば、気象情報の場合、Aは気象情報に基づいて外出時に何を着るかを判断し、Bは気象情報に基づいて車を洗うかどうかを判断し、Cは洪水と湛水に備えるかどうかを判断する必要があります。気象情報による予防施設。さまざまなユーザーがDaaSを使用して自分の要求を満たすことができます。
また、あらゆるデータ情報をさらに処理して情報組み合わせアプリケーションを形成することで、データをさらに活性化し、データの価値を高めていきます。これはビルディングブロックのようなもので、基本的なデータ情報ブロックをさまざまな方法で組み立てて、絶えず変化する効果を実現します。DaaSサービスは、現在のデジタルトランスフォーメーションの重要な出発点になっています。
5.クラウドネイティブを構築する方法
5.1クラウドネイティブアーキテクチャ
コンテナ化の出現により、マイクロサービスアーキテクチャがある程度推進されました。アーキテクチャは、モノリシックアプリケーションから分散アーキテクチャに進化し、分散アーキテクチャからクラウドネイティブアーキテクチャに進化します。このアーキテクチャでは、マイクロサービスが不可欠な役割を果たします。マイクロサービスは、開発と展開に多くの柔軟性と技術的多様性をもたらしますが、サービス呼び出し、分散システムトランザクション、デバッグ、およびサービスガバナンスの問題のオーバーヘッドも増加させます。
数年前に描いたこの単純なアーキテクチャ図を見てください。
上の図のSpringCloudコンポーネントのアーキテクチャから、サービスの検出と登録、サーキットブレーカー、ルーティング、グローバルロック、中央構成管理、制御バス、意思決定キャンペーンなど、マイクロサービスアーキテクチャに必要なコンポーネントを確認できます。 、分散セッション、およびクラスター状態管理などの基本コンポーネント。
Spring CloudとKubernetesは大きく異なります。SpringCloudとKubernetesは、さまざまなマイクロサービスアーキテクチャの技術的ポイントをさまざまな方法で処理します。Spring Cloudアプローチは、JVMのマイクロサービスアーキテクチャのポイントを解決しようとしていますが、Kubernetesアプローチは、問題を解決し、開発者向けのプラットフォームレイヤーで解決しようとしています。Spring CloudはJVMで非常に強力であり、KubernetesはそれらのJVMの管理で非常に強力です。それぞれに長所があるようで、両方の長所を生かすのは当然の傾向です。
5.2 DevOps
アプリケーションの「継続的デリバリーの問題」を解決するために、Devopsを導入しました。
配信に関しては、大学の専門コースであるソフトウェアエンジニアリングを思い出します...これは頭痛の種です。ソフトウェアの最初から最終的な配信までには、製品計画、開発コーディング、構築、 QAのテスト、リリース、展開、およびメンテナンス。
当初、誰もがDevOpsについて言及したとき、それらはすべて「開発、運用、保守の統合」を意味していましたが、今では、DevOpsについて誰もが言ったことは「エンドツーエンド」の概念にまで拡大しています。
Devopsの概念は、誰もが知っているはずです。これは、価値、原則、方法、実践、ツールの集まりであることを理解しています。目的は、価値を迅速に提供し、継続的な改善機能を備えていることです。その核となるのは、研究開発間のギャップを埋めることです。および運用と保守。障壁、ソフトウェア配信プロセスの高速化、およびソフトウェア品質の向上。
ここではあまり話しません。devopsプラットフォーム構築ツールをリストします。
- プロジェクト管理(PM):jira。
操作は質問をするために上がることができ、各問題の完全なワークフロー、保留中の解決策などを見ることができます。 - コード管理:gitlab。
JenkinsまたはK8Sは、コード管理、オンライン、ロールバックなどのためにgitlabを統合できます。 - 継続的インテグレーションCI(継続的インテグレーション):gitlabci。
開発者が新しいコードを送信したらすぐに、ビルド、(ユニット)テストを行います。テスト結果に基づいて、新しいコードと元のコードが適切に統合されているかどうかを判断できます。 - 継続的デリバリーCD(継続的デリバリー):gitlabcd。
単体テストが完了したら、コードをデータベースに接続されたステージング環境にデプロイして、さらにテストを行うことができます。コードに問題がない場合は、本番環境に手動でデプロイし続けることができます。 - ミラーウェアハウス:VMware Harbour、プライベートサーバーネクサス。
- 容器:Docker。
- オーケストレーション:K8S。
- サービスガバナンス:Nacos。
- スクリプト言語:Python。
- ログ管理:Cat + Sentry、もう1つの一般的に使用されるものはELKです。
- システム監視:プロメテウス。
- ロードバランサー:Nginx。
- ゲートウェイ:Kong、SpringCloudゲートウェイ。
- リンクトレース:SkyWalking。
- 製品とUIの図:ブルーレイク。
- 社内ドキュメント:Confluence。
6.クラウドネイティブの主要テクノロジー
6.1 容器
コンテナのプロトタイプは1979年にChrootJailと呼ばれ、2008年にLXC(Linux Container)として定義されました。これは、Cgroupsのリソース管理機能とNamespaceのビュー分離機能を組み合わせて、プロセスレベルの分離を実現します。
ただし、コンテナーの最大の革新はコンテナーイメージ(つまり、Dockerの「現象」によって開拓されたコンテナー)です。これには、アプリケーションの実行に必要な完全な環境(オペレーティングシステム全体のファイルシステム)が含まれ、一貫性があり、軽量です。 、およびポータブル。、言語に依存しないその他の機能は、「リリース後、どこでも実行」(開発、テスト、本番)を実現し、アプリケーションの構築、配布、および配信を完全に標準化します。
また、「不変のインフラストラクチャ」のコア基盤でもあります。
6.2ガバナー
Kubernetesは、クラウドコンピューティングとクラウドネイティブ時代のLinuxであり、Borgに基づくGoogleのオープンソースコンテナオーケストレーションおよびスケジューリングシステムであり、コンテナアプリケーションが大規模な工業生産に参入できるようにします。
宣言型APIと拡張可能(CRD +コントローラー)プログラミングインターフェイス、高度な設計アイデアにより、コンテナーオーケストレーション戦争(Kubernetes、Swarm、Mesos)の王者となり、コンテナーオーケストレーションシステムのデファクトスタンダードになります。
Kubernetesプラットフォームを採用することで、ユーザーはリソース管理の問題を心配する必要がなくなり、インフラストラクチャがより標準化され、複雑さが軽減され、リソース使用率が向上します。同時に、Kubernetesは、データセンター全体でのハイブリッドクラウド、マルチクラウド、エッジクラウドなどの導入コストも簡素化します。
6.3マイクロサービス
マイクロサービスは、アプリケーションを構築するためのアーキテクチャソリューションです。従来のモノリシックアプリケーションとは異なり、マイクロサービスアーキテクチャは、アプリケーションを複数のコア機能に分割します。各コア機能は、独立したサービスと呼ばれます。個別に構築およびデプロイでき、1つのサービスの障害が影響を与えることはありません。その他の機能モジュールこの文は、特定のサービスのリリースの特徴を反映しており、影響が少なく、リスクも低くなっています。
6.4サーバーレス
CNCFで定義されているサーバーレスとは、サーバー管理を必要としないアプリケーションを構築して実行するという概念を指します。つまり、開発者は基盤となるインフラストラクチャに注意を払う必要はなく、アプリケーション自体のビジネスに注意を払うだけで済み、サービスを自動的に拡張できます。
6.5 DevOps
初期のプロジェクトでは、ソフトウェア配信に「ウォーターフォールモデル」を使用していました。つまり、ある段階のすべての作業が完了した後、次の段階になりますが、このモデルは迅速なビジネス開発、配信、変更のニーズを満たすことができないため、後でアジャイルが登場しました。開発の概念は、需要の変化に迅速に対応できるソフトウェア開発機能であり、DevOpsは、ソフトウェア開発/テスター/ ITの運用と保守を関連付け、ツールと組織を通じて開発、テスト、およびリリースプロセスを自動化するアジャイル開発に基づいています。 。、ソフトウェアは頻繁かつ効率的にリリースされます。
6.6 ServiceMesh
ServiceMeshの中核は、ビジネスロジックと非ビジネスロジックの分離であり、開発のためにビジネスロジックのみに焦点を当てるという大きな目標が達成されます。ビジネスアプリケーションからビジネスロジックに関連しない多くのクライアントSDK(サービス検出、ルーティング、負荷分散、電流制限、ダウングレードなど)を取り除き、それらを別のプロキシ(サイドカー)プロセスに配置してから、シンクします。基盤ファシリティミドルウェアメッシュ(TDDLからDRDSパターンに類似)。
このアプリケーションは、システムフレームワークの変更のリスクを軽減し、ダウンサイジング後にクリーンで軽量になり、アプリケーションの起動速度を高速化し、サーバーレスアーキテクチャへのアプリケーションの移行を容易にします。
Meshの場合、独自のニーズに応じて機能を反復およびアップグレードできます。これにより、グローバルサービスガバナンス、グレースケールパブリッシング、モニタリングなどがより容易になります。
同時に、メッシュ境界をDBメッシュ、キャッシュメッシュ、メッセージメッシュなどに拡張して、サービス通信の標準化、つまりサービス間の通信のためのTCP/IPを真に実現することができます。
6.7コードとしてのインフラストラクチャ(IaC)
インフラストラクチャとその完全なライフサイクル(作成、破棄、拡張、交換)はコードで記述され、対応するツール(terraform、ROS、CloudFormationなど)を介して調整、実行、および管理されます。
たとえば、アプリケーションで使用されるすべての基本リソース(ECS、VPC、RDS、SLB、Redisなど)は、購入を申請するためにコンソールのページを切り替える必要はありません。対応するコードを定義して作成するだけです。ワンクリックで。
この利点は、インフラストラクチャコードがバージョン管理され、レビュー可能、テスト可能、追跡可能、ロールバック可能、一貫性があり、構成のずれを防ぎ、共有、テンプレート化、スケーリングを容易にし、運用と保守の全体的な効率と品質を向上させることです。インフラストラクチャの全体像を簡単に確認できます。
6.8クラウドIDE
クラウドIDEは、詳細な研究開発のライフサイクル全体で、完全な開発、デバッグ、プレリリース、本番環境、およびCI/CDリリースの統合エクスペリエンスを提供します。クラウドは、豊富なコードベーステンプレートを提供し、分散コンピューティングを通じてコンパイル速度を向上させ、コードの推奨、コードの最適化、バグを見つけるための自動スキャン、および「インテリジェント」な方法でのロジックとシステミックリスクの識別を実装できます。
クラウド時代の開発モデルは、研究開発効率が高く、反復速度が速く、品質管理が優れているという点で、ローカル開発とはまったく異なるものと考えられます。
7.クラウドコンピューティングとクラウドネイティブの関係
7.1クラウドネイティブはクラウドコンピューティングのトレンドです
-
市場開発動向の観点から、将来的にはクラウドコンピューティングがITの主流となるでしょう。
-
技術開発のトレンドの観点から、より多くの企業がクラウドネイティブ技術を広く使用するようになります。
-
ソフトウェア開発の観点から、クラウドネイティブテクノロジーは、より迅速なビジネスイノベーションの価値を企業にもたらします。
7.2クラウドネイティブは、クラウドコンピューティングのさらなるアップグレードです
-
クラウドネイティブテクノロジースタック全体は、オープンソースおよびオープンテクノロジー標準に基づいています。
-
クラウドネイティブは、クラウドを使用するアプリケーションアーキテクチャをさらにアップグレードしたものです。
-
クラウドネイティブは、クラウドプラットフォームテクノロジーとクラウドサービスの再アップグレードです。