한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
クラウドネイティブ
定義
現在、より権威のある定義は主に Pivotal と Cloud Native Computing Foundation (CNCF) から提供されています。
1.1 重要な
- 4 つの重要なポイント:
DevOps
、持续交付
、微服务
、容器化
。
- 6つの特徴:
模块化(Modularity)
、可观测性(Observability)
、可部署性(Deployability)
、
可测试性(Testability)
、可处理性(Disposability)
、可替换性(Replaceability)
。
- クラウド ネイティブは、テクノロジー (マイクロサービス、アジャイル インフラストラクチャ) と管理 (DevOps、継続的デリバリー、コンウェイの法則、再組織化など) の両方を含むアイデアの集合体です。
1.2 CNCF
- クラウド ネイティブ テクノロジーは、組織がパブリック クラウド、プライベート クラウド、ハイブリッド クラウドなどの新しい動的環境で柔軟にスケーラブルなアプリケーションを構築および実行するのに役立ちます。
- クラウドネイティブの代表的な技術には、コンテナ、サービスメッシュ、マイクロサービス、不変インフラストラクチャ、宣言型APIなどがあります。これらの技術により、耐障害性があり、管理が容易で、観察が容易な疎結合システムの構築が可能になります。
- クラウドネイティブ テクノロジーを信頼性の高い自動化と組み合わせることで、エンジニアはシステムに対して予測可能な大幅な変更を頻繁に行うことが容易になります。
2. 技術的特徴
2.1 マイクロサービス アーキテクチャ:
クラウド ネイティブでは、マイクロサービス アーキテクチャを使用してアプリケーションを構築し、アプリケーションを複数の小規模で独立した個別に展開可能なサービスに分割し、それぞれが特定のビジネス機能の解決に重点を置くことを提唱しています。これにより、アプリケーションのスケーラビリティ、柔軟性、保守性が向上します。
2.2 コンテナ化された展開:
クラウド ネイティブ アプリケーションは通常、Docker などのコンテナ テクノロジを使用してデプロイされます。これにより、アプリケーションとその依存関係をコンテナ イメージにパッケージ化することで、クロスプラットフォームでポータブルかつ一貫したデプロイが可能になります。コンテナ化には、分離とリソースの利用という利点もあり、アプリケーションをより効率的に実行できるようになります。
2.3 動的なオーケストレーションと自動管理:
クラウド ネイティブ化では、アプリケーションを動的に調整および管理し、コンテナのデプロイメント、スケーリング、アップグレード、監視などの操作を自動的に管理し、アプリケーションの柔軟性と信頼性を向上させ、運用の複雑さを軽減するために、自動化されたツールとプラットフォーム (Kubernetes など) の使用が重視されます。 。
2.4 柔軟なスケーリング:
クラウド ネイティブでは、自動化されたコンテナ オーケストレーションとサービス検出を通じて、アプリケーションを動的に追加または削除して、さまざまな負荷の変化に適応し、アプリケーションのパフォーマンスとリソースの使用率を向上させることができます。
2.5 継続的な配信と展開:
クラウド ネイティブ化では、継続的インテグレーションおよび継続的デリバリー (CI/CD) 手法の使用を推奨し、自動化されたビルド、テスト、およびデプロイメントのプロセスを通じて、アプリケーションの更新を迅速かつ確実に実稼働環境にプッシュできます。出版のリスクと時間コスト。
3つのテクノロジースタック
3.1 コンテナ化
- コンテナ エンジン: たとえば、Docker は、アプリケーションとその依存関係を標準化されたコンテナ イメージにパッケージ化するオープン ソース アプリケーション コンテナ エンジンです。コンテナー イメージは、Docker をサポートするあらゆる環境で実行でき、開発、テスト、運用環境全体でアプリケーションの一貫性を確保します。
- コンテナー ランタイム:containerd や runc など、コンテナーの作成、開始、停止、削除などの操作や、ホストのリソースとの対話を含むコンテナーのライフサイクル管理を担当します。
- コンテナ オーケストレーション: たとえば、Kubernetes (K8s) は、現在最も人気のあるコンテナ オーケストレーション プラットフォームで、自動化されたコンテナのデプロイメント、スケジューリング、拡張と縮小、負荷分散、ローリング アップグレード、および自己修復のための強力な API とツールセットのセットを提供します。 、サービス検出、構成管理、その他の操作。
3.2 マイクロサービスアーキテクチャ
- マイクロサービス: 大規模なモノリシック アプリケーションを一連の小さな独立したサービスに分解し、各サービスは単一のビジネス機能に焦点を当て、API を通じて対話します。マイクロサービスは、軽量の通信メカニズム (RESTful API、gRPC など) を通じて相互に連携し、開発速度の向上、結合の削減、システムのスケーラビリティとフォールト トレランスの強化に役立ちます。
3.3 サービス間の通信
- RESTful API:
HTTP プロトコルとそのさまざまなメソッド (GET、POST、PUT、DELETE など) に基づいて、インターフェイスはリソース指向のアーキテクチャ スタイルで設計されており、マイクロサービス間の対話で広く使用されています。 - gRPC:
Google によって開発された高性能の汎用 RPC (リモート プロシージャ コール) フレームワーク。HTTP/2 プロトコルとプロトコル バッファー シリアル化プロトコルに基づいており、高いパフォーマンスと効率性が求められるシナリオに適しています。 - メッセージキュー:
RabbitMQ、Apache Kafka、Amazon SQS などの非同期通信ミドルウェアとして、サービスの分離、ピーク負荷の処理、イベント駆動型アーキテクチャの実装に使用されます。
3.4 サービスメッシュ
- サービスメッシュテクノロジー:
Istio、Linkerd、Envoy などはサービス間に配置され、透過的なインフラストラクチャ層として、サービス間のネットワーク通信、ルーティング、セキュリティ、可観測性などの機能を担当します。サービス メッシュはサービス間の通信の複雑さを抽象化し、開発者がアプリケーション コードにこれらの機能を実装する必要を排除します。
3.5 継続的インテグレーションと継続的デプロイメント (CI/CD)
- CI/CD ツール:
Jenkins、GitLab CI/CD、GitHub Actions、Azure DevOps など、ソフトウェア開発のビルド、テスト、パッケージ化、リリース、展開プロセスを自動化するために使用されます。 CI/CD の実践は、反復サイクルを短縮し、ソフトウェアの品質を向上させ、手動介入によって引き起こされるエラーを減らすのに役立ちます。
3.6 宣言型インフラストラクチャ
- 宣言的な構成:
Kubernetes の YAML マニフェストなど、YAML または JSON 形式の構成ファイルを使用して、アプリケーション デプロイメントのターゲット状態を記述します。開発者は望ましい状態を定義するだけで、システムがこの状態を達成する方法を自動的に処理します。 - コードとしてのインフラストラクチャ (IaC) 管理ツール:
Terraform、CloudFormation など、クラウド プラットフォーム全体のインフラストラクチャ管理に使用され、インフラストラクチャのバージョン管理、自動展開、一貫性管理を実現します。
3.7 DevOps ツールチェーン
- ログの集計:
ELK スタック (Elasticsearch、Logstash、Kibana)、Splunk、Datadog など、ログ データの収集、解析、保存、検索、分析、視覚化に使用されます。 - モニター:
Prometheus、Grafana、New Relic、Dynatrace などは、システムとアプリケーションのパフォーマンス監視を提供します。 - エラートレース:
Sentry、Bugsnag、Rollbar など、アプリケーションの実行時に例外やエラーをキャプチャ、分析、管理するために使用されます。 - カオスエンジニアリング:
Chaos Monkey、Chaos Toolkit などを使用して、本番環境に障害を積極的に導入して、異常な状況下でのシステムのパフォーマンスと回復能力をテストします。
3.8 サーバーレスコンピューティング(サーバーレス)
- サーバーレスサービス:
AWS Lambda、Google Cloud Functions、Azure Functions など。開発者は、基盤となるサーバーの運用やメンテナンスを気にせずにコード スニペット (関数) を作成して実行できます。これらは、関数の実行時にオンデマンドでのみ実行され、請求されます。がトリガーされます。
4 つのアプリケーション シナリオ
クラウド ネイティブ テクノロジーには、次のようなさまざまな分野での幅広い応用が期待されています。
- 大規模なインターネット アプリケーション: 高可用性、高性能、および拡張性の高いインターネット アプリケーションを構築します。
- 金融ビジネス: 金融ビジネス アプリケーションの信頼性とセキュリティを向上させる、安全で信頼性の高い効率的なアプリケーション開発および展開方法を提供します。
- 人工知能とビッグデータ: AI およびビッグデータ アプリケーション向けに、効率的でスケーラブルで弾力性のあるアプリケーション開発および展開方法を提供します。
- モノのインターネット: 大量のセンサー データを処理し、迅速な展開と柔軟なスケーリングを実現し、モノのインターネット アプリケーションの信頼性と保守性を向上させます。
- ブロックチェーン: ブロックチェーン アプリケーションに効率的でスケーラブルで弾力性のあるアプリケーション開発および展開方法を提供します。
クラウド ネイティブについては以上です。読んでいただきありがとうございます。