クラウドネイティブ: ソフトウェア配信の未来

クラウドネイティブ: ソフトウェア配信の未来

こんにちは、皆さん。私はルガです。今日は、クラウド ネイティブ エコシステムの本質の 1 つである効率的な配信、つまり「クラウド ネイティブ エコシステムのコンセプトに基づいたアプリケーション ソフトウェアの効率的な配信」についてお話します。

建国記念日を前に、Jakarta EE 中国コミュニティ組織の創始者である Liu Zhijie 氏から JakartaOne ライブストリーム イベントへの招待を受け、シンプルながらも充実した技術共有を行うことができ、大変光栄に思いました。 JakartaOne Livestream は、開発者と技術リーダーを対象とした Jakarta EE ワーキング グループのオンライン ミーティングで、エンタープライズ レベルの Java アプリケーション向けのクラウド ネイティブ テクノロジーに焦点を当て、Jakarta EE テクノロジー開発の現状と将来の動向について議論します。

同時に、前回の技術的なやり取りと最近の考えを踏まえて、「クラウドネイティブ」についての私の個人的な見解についても簡単にお話ししたいと思います。

1. クラウドネイティブをどのように捉えるべきでしょうか?

実際、クラウド ネイティブの概念は新しいものではなく、以前から存在していましたが、近年、幅広い議論と注目を集めています。

本質的に、クラウド ネイティブは、クラウド コンピューティングの分散コンピューティングの利点を最大限に活用するように設計されたアプリケーションを構築および実行するための方法論です。クラウド ネイティブの考え方を採用することで、開発者はクラウド プラットフォームが提供する弾力性、スケーラビリティ、回復力、柔軟性をより有効に活用できるようになります。

Cloud Native Computing Foundation (CNCF) の公式定義によると、クラウド ネイティブ テクノロジーにより、組織はパブリック クラウド、プライベート クラウド、ハイブリッド クラウド環境でスケーラブルなアプリケーションを構築および実行できるようになります。複雑なアプリケーションの最新のエコシステムでは、継続的なイノベーションと前例のない応答性が求められるため、ビジネス システムはより戦略的で柔軟性が高くなければなりません。クラウド ネイティブ アプローチは、企業の俊敏性を高め、高まる顧客の期待に応えるのに役立ちます。

一般的に、クラウド ネイティブ テクノロジーは、コンテナー、サービス メッシュ、マイクロサービス、不変のインフラストラクチャ、宣言型 API などの機能を活用します。これらの機能を使用することで、回復力があり、管理しやすく、監視可能な疎結合システムを構築できます。コンテナ化テクノロジーは、アプリケーションをさまざまなクラウド環境に展開および移行できるようにする軽量で移植可能な環境を提供します。サービス メッシュは、アプリケーションの信頼性とセキュリティを確保するための強力なサービス間通信とガバナンス機能を提供できます。マイクロサービス アーキテクチャにより、アプリケーションをモジュール化し、需要に応じて個別にデプロイできるため、柔軟性とスケーラビリティが向上します。不変インフラストラクチャの概念では、インフラストラクチャの状態を管理し、環境の一貫性と再現性を確保するために、自動化されたツールとプロセスの使用を重視しています。宣言型 API を使用すると、開発者は詳細な手順や指示を記述するのではなく、必要な状態と構成を宣言できるため、アプリケーションの展開と管理が簡素化されます。

本質的に、クラウド ネイティブ アプローチにより、エンジニアは最小限の労力で頻繁に大きな影響を与える変更を加えることができます。クラウド ネイティブ テクノロジーを使用することで、開発者は新機能をより早くリリースし、フィードバックや市場の変化に迅速に対応し、継続的な配信と継続的なデプロイメントのプラクティスを実装できます。この俊敏性と柔軟性により、組織は変化するビジネス ニーズに適応し、より高品質のアプリケーションと優れたユーザー エクスペリエンスを提供できるようになります。

2. テクノロジーがクラウド ネイティブと定義されるとはどういう意味ですか?

クラウド ネイティブ アプリケーションは、軽量で独立したコンテナーとしてパッケージ化された独立したサービスとして存在します。これらのアプリケーションは移植性が高く、拡張性も高いです (入力と出力)。クラウド ネイティブ アプリケーションは、アプリケーションとその依存関係を Docker などのコンテナーに格納することで、インフラストラクチャから分離されます。この分離の利点は、コンテナ化されたアプリケーションをランタイム エンジンを備えたあらゆる環境にデプロイできることです。ここで重要なのは、コンテナ オーケストレーション ツールとしての Kubernetes がコンテナのライフサイクルの管理を担当していることです。

クラウド ネイティブ アプリケーションの配信プロセスは、継続的インテグレーションと継続的デリバリーのツール チェーンを備えた DevOps パイプラインによってサポートされます。つまり、アプリケーションの開発、テスト、およびデプロイメントのプロセスは高度に自動化されており、継続的インテグレーションと継続的デリバリーの実践を通じて高速で信頼性の高い配信が実現されます。継続的インテグレーションにより、開発者のコ​​ード変更がメイン コードに統合され、自動化されたビルドおよびテスト プロセスを通じて検証されます。継続的デリバリーは、テストされたアプリケーションをデプロイメント環境に配信し、さらなる統合テストとデプロイメントを実施します。

アプリケーションの開発と配信にクラウド ネイティブ アプローチを採用することで、組織はクラウド コンピューティングのメリットをより有効に活用できます。クラウド ネイティブ アプリケーションをコンテナ化することで、基盤となるインフラストラクチャに制限されることなく、さまざまな環境でアプリケーションをシームレスに実行できるようになります。この移植性と拡張性により、アプリケーションの展開と拡張がより柔軟かつ効率的になります。同時に、継続的インテグレーションと継続的デリバリーの実践を通じて、開発チームは新機能をより早くリリースし、市場のニーズに迅速に対応し、高品質のアプリケーションを継続的に提供できるようになります。

3. CNCFとその関連団体がクラウドネイティブの開発に注目

ご存知のとおり、Cloud Native Computing Foundation (CNCF) は、コンテナ テクノロジーとそのアプリケーションの開発を促進するために 2015 年に Linux Foundation によって立ち上げられたプロジェクトです。これは、Google が Linux Foundation に寄贈したオープンソースのコンテナ オーケストレーション プラットフォームである Kubernetes とともに作成されました。それ以来、CNCF は、Kubernetes、Prometheus、Envoy など、最も急速に成長している多くのオープンソース プロジェクトをホストするベンダー中立の組織になりました。

Kubernetes のような CNCF プロジェクトは、急速かつ広範囲に採用され、コミュニティの幅広いサポートを受けており、オープンソースの歴史の中で最も急速に成長しているプロジェクトの 1 つとなっています。 CNCF コミュニティは、世界最高の開発者、ユーザー、ベンダーを集め、最大規模のオープンソース開発者カンファレンスのいくつかを主催しています。

CNCF は、クラウド ネイティブ テクノロジーの開発を促進する上で重要な役割を果たします。クラウド ネイティブ テクノロジーには、コンテナ化、マイクロサービス アーキテクチャ、宣言型 API、自動管理などが含まれており、スケーラブルで回復力があり、信頼性の高いアプリケーションを構築および実行する方法を提供します。 CNCF はベンダー中立の組織として、より多くの開発者や組織がこれらの高度なテクノロジーの恩恵を受けられるように、クラウド ネイティブ テクノロジーの標準化と推進に取り組んでいます。

その中で、Kubernetes は CNCF のスター プロジェクトとして、コンテナ オーケストレーションとクラスター管理の事実上の標準となっています。豊富な機能とスケーラビリティを提供し、アプリケーションの導入、拡張、管理をより容易かつ効率的にします。 Kubernetes の急速な発展は、その強力な機能だけでなく、CNCF コミュニティの積極的な貢献とサポートによるものです。同時に、強力な監視およびアラート システムとしての Prometheus と、高性能エッジおよびサービス プロキシとしての Envoy も、CNCF プロジェクトで高く評価され、広く使用されているテクノロジです。

4. 開発言語から見たクラウドネイティブの発展

クラウドネイティブの開発を開発言語の観点から見ると、Go、Rust、Java などのプログラミング言語はいずれも、程度の差はあれ、クラウドネイティブアプリケーションの構築と配信をサポートしています。

CNCF 関連ページを開くと、次のことがわかります。

Go 言語と Rust 言語を中心に開発されたコンポーネント スイートが、ほぼ大部分を占めています。このため、Go と Rust がクラウドネイティブ開発の主流言語となっていると言っても過言ではありません。

ただし、Java は従来のプログラミング言語として、クラウド ネイティブ時代においても絶えず進化、調整、適応しています。 Java の市場シェアは最初の 2 つほど高くはありませんが、クラウド ネイティブ分野では依然として非常に競争力があります。

市場の発展傾向によると、中核競争力を持つクラウドネイティブプロジェクトの約63%は基本的にGo言語を使用して構築されており、これはクラウドネイティブ分野におけるGoの地位を証明するのに十分です。しかし、Java もクラウド ネイティブ時代のニーズに徐々に適応しつつあります。たとえば、JDK 8u191 および JDK 10 のリリース後、JVM には強化されたコンテナー リソース認識機能が追加され、コンテナー内で Java アプリケーションがより効率的かつ確実に実行されるようになりました。同時に、Java コミュニティは Java テクノロジー スタックの限界を常に探求しています。たとえば、VM OpenJ9 は既存の Java アプリケーションとの互換性が高いだけでなく、起動が大幅に高速化され、メモリ使用量も削減されます。 Micronaut と Graal VM は、プログラミング モデルとコンパイル プロセスを変更してアプリケーションの動的特性をコンパイル時の早い段階で処理できるようにすることで新たな境地を開き、アプリケーションの起動時間を大幅に短縮します。これらのテクノロジーはサーバーレス アーキテクチャの分野にとって非常に有望であり、その設計コンセプトは他の言語の開発者にとっても学ぶ価値があります。

同時に、Eclipse Foundation の Jakarta EE ワーキンググループは Jakarta EE 10 標準をリリースし、Java もクラウドネイティブ時代の「スープ」を共有することを示しました。 Jakarta EE 10 は、最新かつ簡素化された軽量のクラウドネイティブ Java アプリケーションを構築するための機能を導入したメジャー リリースであり、マイクロサービスとコンテナーの現代に Jakarta EE をしっかりと組み込む「最終マイルストーン リリース」です。 Jakarta EE 10 のリリースは、世界中の貢献者コミュニティの取り組みを反映しており、クラウド ネイティブ分野における Java の成長に重要な革新と機会をもたらすでしょう。 Jakarta EE 10 は、クラウドネイティブ Java テクノロジーの未来を推進する、オープンでコミュニティ主導のイノベーションとして位置付けられています。

クラウドネイティブ時代において、R&D連携の効率を向上させるためには、水平的なアプリケーション開発ライフサイクルにおける開発、配信、保守のプロセスを効果的に分割し、再編成する必要があります。さらに、根本的な簡素化を実現し、システム効率を向上させるには、プログラミング モデル、アプリケーション ランタイム、および垂直ソフトウェア テクノロジ スタック全体のインフラストラクチャの観点からシステムを最適化する必要があります。

クラウド ネイティブ エコシステムでは、Go、Rust、Java に代表されるプログラミングの主流が、独自のクラウド ネイティブ エコシステムを積極的に開発し、独自のテクノロジー スタックを構築することで、ますます複雑化する市場のビジネス ニーズに対応し、クラウド ネイティブ時代の発展に貢献しています。

5. クラウドネイティブが技術スタッフに与える影響

実際のビジネス シナリオでは、クラウド ネイティブでは技術者に対する要求が高まり、広範な技術的知識と能力、そして変化を迅速に学習して適応する能力が求められます。具体的な影響は次のとおりです。

1. 考え方を変える

クラウド ネイティブは、技術者の考え方に新たな課題をもたらします。従来のアプリケーション開発および展開モデルは、クラウド ネイティブの概念とは異なります。技術者は、弾力性、スケーラビリティ、可観測性に重点を置いたサービス中心の考え方に移行する必要があります。アプリケーションの管理性と保守性にさらに注意を払う必要があり、障害処理とフォールト トレラント設計を開発プロセスの重要な部分にする必要があります。

2. アーキテクチャとデザインパターンの理解

クラウド ネイティブでは、アプリケーションをマイクロサービス方式で編成および設計し、機能モジュールを独立してデプロイおよび拡張できる独立したサービスに分割する必要があります。これには、技術者が優れたアーキテクチャと設計思考を持ち、拡張性、弾力性、信頼性に優れたマイクロサービス アーキテクチャを設計できることが求められます。技術担当者は、サービス間の通信、サービスの検出、負荷分散、障害回復などの側面を考慮し、大規模な分散環境に適したソリューションを設計する必要があります。

3. 学習意識の育成

Cloud Native では、コンテナ化、オーケストレーション プラットフォーム、マイクロサービス アーキテクチャ、自動管理などの一連の新しいテクノロジーとツールが導入されています。技術者は、クラウドネイティブ アプリケーションの開発と展開のニーズに適応するために、これらの新しいテクノロジーを学習し、習得する必要があります。コンテナ テクノロジー (Docker など)、コンテナ オーケストレーション プラットフォーム (Kubernetes など)、サービス メッシュ (Istio など)、および関連する監視、ログ記録、セキュリティ ツールを理解する必要があります。そのためには、急速に発展するクラウドネイティブ エコシステムに適応するために、技術者がテクノロジー スタックを継続的に学習し、更新する必要があります。

同時に、クラウド ネイティブは技術者にさらなる機会と課題をもたらします。オープンソース コミュニティに参加してコードを寄稿し、経験を共有し、世界中の技術専門家や開発者とコミュニケーションや協力を行い、クラウド ネイティブ テクノロジーの開発と革新を共同で推進することができます。

<<:  ヘルスチェックは良いポッドにとって不可欠

>>:  マッキンゼーのパートナー:ジェネレーティブAIはクラウド移行におけるさまざまな課題の解決に役立つ

推薦する

企業がオリンピックを利用してWeiboマーケティングを効果的に行う方法の簡単な例

Weiboは海外で大きな成功を収めたため、このソーシャルシステムが2009年に中国に進出するやいなや...

レジストリ: 分散システムへの対応方法

サービス検出の概念は、実際には私たちのプロジェクトで長い間使用されてきましたが、あまり注目されていな...

LBS チェックイン モデルの解決策はどこにあるのでしょうか? O2O変革のチャンスはあるか?

前回のレポート「LBSブレイクアウト:WeChatからWeiboへ」では、衰退しつつあるLBSに対す...

re:Invent 2018 の最新リリース (パート 2)

[[252760]] re:Invent 2018は成功裏に終了しました皆さんもすでに生み出された情...

イノベーションは止まらず、アップデートは無限に続くQingCloud Cloud Easyは、強固なクラウド基盤を構築し続けています。

デジタル時代に最も欠かせないテクノロジーは何でしょうか?おそらくあなたは「クラウド ネイティブ」と口...

Bilibiliは徐々に劣化しているのでしょうか?

Bilibiliは最近話題になっており、ブランド動画マーケティングや動画セルフメディアの好まれるプラ...

ライブストリーミングが福利厚生の分野に商品をもたらす

ライブストリーミングで商品を販売するのは、霧の中に花が咲き、水の中に月が浮かぶようなものです。羅永浩...

重要なブログコンテンツの露出を増やすためのヒント

ある意味、多くの中国ユーザーは、ブログサイトを訪問する際のコンテンツの表示方法にかなり不快感を抱いて...

ウェブサイト全体のアーキテクチャの観点からウェブサイトの直帰率を下げる方法を分析する

すべてのウェブサイトには対応する価値があり、ウェブサイトの直帰率はそのウェブサイトの価値を測る基本的...

わずか3分でKafkaの仕組みを理解できます

週末、退屈で携帯電話を閲覧していたところ、Taobao アプリに突然「昔の顧客への恩返しとして、ガー...

外部リンクの開発履歴を振り返り、外部リンクの今後の開発方向を期待する

外部リンクは、ウェブサイトのキーワードランキングに影響を与える最も重要な要素の 1 つです。現在、ほ...

良いコード例: Redis に基づく軽量分散バランス消費キュー

[[393103]] 1. 良いコードについての私の意見1. 良いコードとは何か? 『デザインパター...

2021年のクラウドコンピューティングの主な開発動向

多くの人がクラウド コンピューティング テクノロジーの利点を理解しています。今後の展開について言えば...

urpad 特別オファー 2G メモリ スペシャルエディション (4 データセンター)

urpadのホスト側のレビューは何度も紹介されており、私自身も使用しています。以前は、誰もが年間 8...