新時代のインターネットアーキテクチャの革新と探求

著者: 禅とコンピュータープログラミングの芸術

1 はじめに

1998 年にインターネット バブルが崩壊し、このときインターネットは単なる電話網から、今日では世界最大のオンライン サービス プラットフォームに進化しました。インターネットは事実上のインフラストラクチャーとなり、重要な役割を果たしています。しかし、データ量の爆発、ビジネスの急増、セキュリティの問題など、ますます多くの問題が発生しています。これらの問題は、インターネット システムにも課題をもたらします。では、ますます複雑化するシナリオに対処するために、より効率的で信頼性の高いシステム アーキテクチャを構築するにはどうすればよいでしょうか? この目的を達成するために、一連の革新的な探求では、マイクロサービス、イベント駆動型アーキテクチャ、クラウド コンピューティング、コンテナ テクノロジー、ブロックチェーン、機械学習などを含む多くの方法とテクノロジーが試みられました。ただし、既存の技術アーキテクチャとプロセスを理解し、実際のアプリケーション シナリオに基づいて詳細な調査と変換を実行することによってのみ、ユーザーのニーズにより適したシステム アーキテクチャを作成できます。この記事では、新しい時代のインターネット アーキテクチャに関する革新的な研究の方向性をいくつか紹介し、具体的な計画と提案をいくつか示します。

2. 背景の紹介

「新時代」という用語は近年非常に人気があり、一般に、インターネット金融時代、モバイルインターネット、モノのインターネット時代など、インターネットとテクノロジーの発展の新しい段階を表すために使用されます。ここ数年。インターネット アーキテクチャにとって、「新時代」は革命をもたらしたように思えます。過去 10 年間、インターネット アーキテクチャは、スタンドアロンから分散、単純から複雑への開発プロセスを経験してきました。現在、情報技術、クラウドコンピューティング、ビッグデータ、ブロックチェーン、人工知能などの分野の発展に伴い、インターネットのアーキテクチャは常に更新されています。インターネットのアーキテクチャは、これまでのクローズドなシステムアーキテクチャとは異なり、単純なサービスアーキテクチャから、よりユーザーのニーズに応えることができる複雑なシステムアーキテクチャへと変化しつつあります。
インターネット アーキテクチャのイノベーションは主に次の 4 つの側面に分けられます。

  • アーキテクチャの進化: 主にインターネット アーキテクチャの進化の概要、分析、予測。
  • サービス ガバナンス: 主に、サービスの品質を向上させ、コストを削減し、サービスの可用性を向上させる方法を研究します。
  • データ管理: 主に、データストレージをより効率的にし、取得と処理を容易にする方法を研究します。
  • 開発モデル: 主にインターネット ソフトウェア開発モデルの変化と進化を研究します。
    この記事で取り上げる内容は主に、開発モデルの 4 番目の側面、つまりソフトウェア開発モデルの変化と進化に焦点を当てています。ソフトウェア開発モデルとは、ソフトウェア エンジニアがソフトウェア製品を設計するために使用する方法論を指し、ソフトウェア開発者の作業習慣、知識構造、専門的資質を反映しています。インターネットの発展に伴い、元のソフトウェア開発モデルは変化し、新しいソフトウェア開発モデルが徐々に形成されてきています。代表的なものはアジャイル開発とDevOps開発運用です。アジャイル開発とは、反復、迅速なフィードバック、動的な計画に基づいた開発手法で、短期間でプロジェクトを完了させるのが特徴です。DevOps は、アジャイル開発モデルの下でサーバー側の運用チーム (運用チーム) の責任を拡張したもので、製品から実稼働環境の展開とテストの自動化、環境の分離と構成管理、パフォーマンスの監視に至るまで、ソフトウェアのライフサイクル全体を制御します。そして最適化。

3. 基本的な概念と用語の説明

  • ソフトウェア開発モデル: ソフトウェア開発モデルとは、ソフトウェア エンジニアがソフトウェア製品を設計するために使用する方法論を指し、ソフトウェア開発者の作業習慣、知識構造、専門的資質を反映しています。
  • アジャイル開発モデル: アジャイル開発 (アジャイル開発) は、反復開発と継続的インテグレーション (継続的インテグレーション) に基づいた開発モデルです。このモデルは、要件分析、設計、開発、テスト、保守を計画よりも頻繁に実行する必要があることを強調しています。開発は顧客が開発作業に参加することを奨励するため、顧客はすぐにフィードバック結果を確認し、優れた目標を達成するためにタイムリーに修正を加えることができます。
  • DevOps 開発モデル: DevOps はアジャイル開発 (Agile Development) の連携であり、構成管理、デプロイメント管理、テスト管理、リリース管理などの開発と運用保守のプロセスの自動化を実現し、さまざまな開発を実現することを目的としています。ソフトウェア開発プロセス全体における役割を実現し、すべての担当者が緊密に連携して真のアジャイル開発を実現できます。

4. コアアルゴリズム原理、具体的な操作手順、数式の説明

4.1 アジャイル開発モデル

(1) アジャイル開発モデルとは何ですか?

概念定義: アジャイル開発 (アジャイル開発) は、反復開発と継続的インテグレーション (継続的インテグレーション) に基づいた開発モデルです。このモデルは、要件分析、設計、開発、テスト、保守を計画よりも頻繁に実行する必要があることを強調しています。は、顧客が開発作業に参加することを奨励するため、顧客はすぐにフィードバック結果を確認し、優れた目標を達成するためにタイムリーに修正を加えることができます。アジャイル開発には次の 4 つの主な価値があります。

  1. 個人とインタラクションはプロセスやツールよりも優先される
  2. 完全なドキュメントよりも実際に動作するソフトウェアの方が優れています
  3. 指示に基づいた計画よりも顧客とのコラボレーションが優先
  4. 計画に従うのではなく変化に対応する

(2) アジャイル開発モデルはなぜ必要なのでしょうか?

市場によりよく適応し、無駄を減らし、コストを削減し、効率を向上させるために、時代の要求に応じてアジャイル開発モデルが登場しました。アジャイル開発モデルは、機能更新をできるだけ早く提供し、リスクを軽減し、ソフトウェアの品質を向上させ、複数のユーザーのニーズを同時に満たすための反復的なアプローチを通じてソフトウェア開発を推進します。市場の需要の変化。

(3) アジャイル開発モデルの特徴

以下に、アジャイル開発モデルのいくつかの特徴を紹介します。

  1. 反復開発: アジャイル開発モデルは反復開発戦略を採用しており、各反復の後、新しいバージョンがテストおよびフィードバックされ、再度反復されます。各反復には目標または範囲があり、反復完了後も機敏性を維持するために特定のメカニズムが使用されます。各イテレーションには、動作するソフトウェア製品が含まれます。
  2. 自動テスト: アジャイル開発中、開発者は自動テストを実行する必要があります。自動テストでは、開発プロセス中にソフトウェア コンポーネントの単体テストを実行したり、ソフトウェア全体の統合テストを実行したりできます。テストを自動化して、ソフトウェアの品質と速度を向上させることができます。
  3. 継続的インテグレーション (CI): 継続的インテグレーションは、バグがないことを確認するために、各統合で全員の最新の変更をコード ベースに統合する継続的なプロセスです。エラーがある場合は、すぐに発見して解決できます。継続的インテグレーションもアジャイル開発の重要な要素です。
  4. 要件の調整: アジャイル開発モデルでは要件は常に変化するため、アジャイル開発モデルはこの変化に適応できる必要があります。要件の調整は、追加の開発リソースの導入、コミュニケーション チャネルの増加、意思決定権の開放、ユースケース主導の開発などによって実現できます。
  5. コンパクトな設計: アジャイル開発モデルでは、ソフトウェア製品が迅速に反復できる必要があるため、開発サイクルを可能な限り短縮するために、設計中にコンパクトな設計を追求する必要があります。
  6. 小規模チーム: アジャイル開発モデルの実践は小規模なチームで完了することが多いため、混乱を減らすために経験の浅い人が参加できるチーム構造にする必要があります。
  7. シンプルでわかりやすい設計: アジャイル開発モデルでは、フィードバックをすぐに受け入れ、迅速に調整できるように、ソフトウェア設計が理解しやすいことを重視しています。
  8. 支配的な力: アジャイル開発モデルは開発者に支配的な力を与えるため、開発者は一元的な意思決定権限を持ち、タスクを完了するように導くことが奨励される必要があります。

(4) アジャイル開発モデルのメリット・デメリット

アドバンテージ
  1. 短期的な効率: アジャイル開発モデルの目的は迅速な開発と提供であるため、短期的には大きな成功を収めることができます。
  2. 適応性: アジャイル開発モデルは、急速な市場発展のニーズに適応し、タイムリーに市場のニーズに対応し、良好な結果を達成できます。
  3. プロセスの改善: アジャイル開発モデルの反復開発と継続的統合の原則により、開発プロセスの組織、プロセス、ツール、および方法を大幅に改善し、開発の効率と品質を向上させることができます。
  4. ドキュメントではなくソフトウェアに注意を払う: ドキュメントの価値が不十分であるため、アジャイル開発モデルでは、ドキュメントの作成ではなくコーディングのみに焦点を当てます。
  5. 迅速なフィードバック: アジャイル開発モデルの反復開発特性により、開発プロセス中にフィードバックを迅速に取得できるため、迅速な調整が容易になります。
  6. 未経験者の参加を許可する: アジャイル開発モデルでは開発者に対する要件が非常に低いため、未経験者の参加が可能となり、開発者の能力レベルが向上します。
  7. 新しい考え方の構築に役立つ: アジャイル開発モデルは、開発者が新しい方法で問題を考えるのに役立ち、それによって問題解決能力とイノベーション能力が向上します。
欠点がある
  1. 開発の反復回数によって、ソフトウェアの複雑さが制限されます。反復開発のプロセスでは、開発者は設計と開発に多くの時間を費やす必要があります。したがって、ある段階で完成した機能は、他の機能の開発の進捗に影響を与える可能性があります。
  2. 各バージョンのテスト作業負荷は比較的大きくなります。すべての関数を各反復でテストする必要があるため、テストの作業負荷は比較的大きくなります。
  3. テストにはさらに時間がかかります。開発者はテストにより多くの時間を費やす必要があるため、開発サイクルが長くなります。
  4. 追加のハードウェア機器やツールも必要です。開発者はテストを実施するために追加の機器またはソフトウェアを購入する必要があります。
  5. テスターの要件はさらに高くなります。テスターは、ソフトウェアをテストするために、ソフトウェアの実装ロジックと原則を理解する必要があります。
  6. 統合にはさらに多くのリソースを費やす必要があります。アジャイル開発モデルでは、開発者は統合により多くの時間とリソースを費やす必要があるため、開発の進捗に影響を与えます。

(5) アジャイル開発モデルの実践手法

アジャイル開発モデルは、反復開発、自動テスト、継続的統合、需要調整、および計画よりも頻繁に実行されるその他の作業に重点を置く、非常に効果的な開発方法論です。したがって、一連の実用的な手段と方法を通じて、アジャイル開発モデルを実装し、企業により良い利益をもたらすことができます。以下にいくつかの実践的な方法を示します。

  1. カンバン作業ボード: アジャイル開発モデルにより、開発者は作業をさまざまなフェーズに分割し、さまざまなチーム メンバーに割り当てることができます。カンバン作業ボードでは、タスクの進捗状況や状況がリアルタイムに表示されるため、スムーズに作業を完了することができます。
  2. トピックの優先順位付け: アジャイル開発モデルでは、製品のすべての機能が重要性と緊急性によって分類され、さまざまな開発チームに割り当てられます。これにより、作業の焦点をより適切に把握し、ボトルネックを回避できます。
  3. ユーザー ストーリーの分解: ユーザー ストーリーの分解の中心的な考え方は、ユーザーのニーズを小さくて単純なストーリーに分割し、これらのストーリーに基づいて機能設計を洗練することです。これにより、開発労力をより正確に見積もり、開発の障害をより明確に特定できるようになります。
  4. シンプルな設計原理: アジャイル開発モデルの目標はソフトウェアを迅速に提供することですが、実際の手法ではソフトウェアの設計がシンプルで理解しやすいものであることが必要です。したがって、ソフトウェアの可読性を向上させるために、設計プロセス中は複雑な設計パターンや技術の使用を避ける必要があります。
  5. 継続的統合に注意する: アジャイル開発モデルでは、ソフトウェアを頻繁に配信する必要があります。したがって、継続的インテグレーションはアジャイル開発の基礎です。継続的統合を通じて、開発者は迅速なフィードバックを実現し、早期修正に間に合うように問題を発見できます。

4.2 DevOps開発モデル

(1) DevOps開発モデルとは何ですか?

概念定義: DevOps (Development and Operations) 開発と運用の組み合わせ (DO と略称) はアジャイル開発手法です。開発者とオペレーターの間のコミュニケーションとコラボレーションを重視し、ソフトウェアの配信と運用の循環プロセスを促進し、それによって自動化と標準化を実現します。DevOps では、開発と運用がチームとして連携してソフトウェアの開発と配信のプロセスを進めることが奨励されています。その中心的なコンセプトは、開発と運用の統合、開発者、QA、テスター、IT 運用保守担当者、その他の関連担当者をサポートし、協力し、通信し、共同でソフトウェア製品を構築および保守することです。
DevOps 開発モデルには、開発、テスト、配信と展開の 3 つの柱が含まれています。共同作業を通じて開発プロセスが自動化されるため、ソフトウェアの配信と展開が迅速化され、人的要因の干渉が軽減されます。さらに、この開発モデルを採用することで、ユーザーのニーズをより満たし、より高いサービス品質を実現できます。

(2) DevOps 開発モデルはなぜ必要ですか?

アジャイル開発が短期的な行動によって推進される開発手法である場合、DevOps 開発モデルは長期的な開発手法です。ソフトウェア開発と運用の双方向の流れを強調しています。開発者は、コードの提出、構築、テスト、デプロイ時にソフトウェアの配信方法、配信プロセス、継続的な改善について交渉し、オペレータの運用および保守作業を支援できます。DevOps 開発モデルを通じて、開発者、テスター、オペレーターの総合的な能力を向上させ、ソフトウェアの品質と配信効率を向上させることができます。

(3) DevOps開発モデルの特徴

以下では、DevOps 開発モデルのいくつかの特徴を紹介します。

  1. 自動化された開発プロセス: DevOps 開発モデルにより、開発者は開発効率を向上できます。DevOps 開発モデルの重要な点は、開発プロセスを自動化することで、開発者が反復的なタスクを手動で何度も実行する必要がなくなることです。
  2. 部門間のコラボレーション: DevOps 開発モデルは、開発者と運用スタッフ間のコラボレーションを促進します。ソフトウェア製品を共同構築および保守することで、開発と運用の循環プロセスを促進します。
  3. 統合テスト: DevOps 開発モデルは統合テストを促進します。これは、開発者がソフトウェアのライフサイクル全体にわたって統合テストを実施できることを意味します。
  4. 自動化されたリリースとデプロイメント: DevOps 開発モデルは、自動化されたビルド、テスト、デプロイメントを含むブートストラップを促進します。ソフトウェアの配信と展開のための標準化されたプロセスと仕様を提供し、ソフトウェアを自動的に配信できます。
  5. クラウドベースの自動運用保守:DevOps開発モデルはクラウドベースの自動運用保守モデルを採用しており、ソフトウェアの自動展開、テスト、運用保守、アップデートを実現できます。クラウド サービスには、サービスとしてのインフラストラクチャ (IaaS)、サービスとしてのプラットフォーム (PaaS)、およびサービスとしてのソフトウェア (SaaS) が含まれます。
  6. テストとリリースのプロセスの自動化: DevOps 開発モデルでは、ソフトウェアの品質と配信効率を向上させるために、テストとリリースの自動化が重視されています。
  7. 高いスケーラビリティ: DevOps 開発モデルの高いスケーラビリティにより、ソフトウェア プロジェクトは企業やビジネスの急速な開発ニーズに適応できます。

(4) DevOps開発モデルのメリット・デメリット

アドバンテージ
  1. ソフトウェア開発サイクルの短縮: DevOps 開発モデルにより、ソフトウェア開発サイクルが短縮され、ソフトウェア配信の効率が向上します。
  2. 開発と運用の間の通信効率の向上: DevOps 開発モデルにより、開発と運用の間の通信効率が向上し、それによって通信コストが削減され、ソフトウェア配信の速度と品質が向上します。
  3. 人的要因の干渉を減らす: DevOps 開発モデルは、開発と運用における個人差を減らし、人的プレッシャーを軽減し、ソフトウェアの品質と配信効率を向上させることができます。
  4. 自動化と標準化の実現: DevOps 開発モデルは、自動化および標準化された開発プロセスを実現し、複数のテクノロジー、フレームワーク、プログラミング言語をサポートできます。
  5. 運用および保守への投資を削減: DevOps 開発モデルにより、運用および保守への投資を削減し、運用効率の向上を効果的に実現できます。
欠点がある
  1. 自動化を重視しすぎると、管理が難しくなる: 自動化と標準化を重視しすぎると、管理の難しさ、特に運用および保守担当者の要件が増大する可能性があります。
  2. プラットフォームの依存関係により問題が発生する可能性があります。プラットフォームの依存関係により、不安定性や互換性の問題が発生する可能性があります。
  3. 技術的能力に対する高い要件: DevOps 開発モデルでは、特にソフトウェア エンジニアに対して技術的能力に対する高い要件が求められます。

(5) DevOps開発モデルの実践手法

DevOp 開発モデルは、DevOps 開発モデルを実践するための一連の実践的な手段および方法として使用できます。以下にいくつかの実践的な方法を示します。

  1. 継続的デリバリー パイプライン: 継続的デリバリー パイプラインは、DevOps 開発モデルの重要な実践方法です。このパイプラインでは、開発者は継続的な統合とテストを通じて、開発したコードを実稼働環境に直接デプロイします。
  2. コミュニケーションとコラボレーション: DevOps 開発モデルでは、開発者とオペレーターの間で常に良好なコミュニケーションとコラボレーションが必要です。コラボレーションは DevOps 開発モデルの基礎です。
  3. コード レビュー: コード レビューは、DevOps 開発モデルにおける重要な実践です。これは、潜在的な問題を特定し、チーム メンバーがソフトウェアについてより知識を深めることを目的としたコミュニケーションとフィードバックのプロセスです。
  4. 継続的改善: DevOps 開発モデルでは、ソフトウェア品質の継続的改善を促進するために、継続的改善を遵守する必要があります。
  5. テスト駆動開発: TDD は、ソフトウェア開発プロセスの初期段階で使用される開発方法論です。DevOps 開発モデルでは、テスト駆動の開発手法も実践する必要があります。TDD により、ソフトウェアの信頼性と堅牢性が向上します。

5. 今後の開発動向と課題

この記事では、新時代のインターネット アーキテクチャと関連テクノロジについて簡単に説明し、マイクロサービスとイベント駆動型アーキテクチャという 2 つの典型的な新興インターネット アーキテクチャ モデルを示します。次に、著者は現在のインターネット アーキテクチャの長所と短所について詳しく説明し、イノベーションと探索の 4 つの主な方向性を提案します。

6. 付録 よくある質問と回答

(1) ソフトウェア開発モデルとは何ですか?
(2) ソフトウェア開発モデルとは何ですか?
(3) アジャイル開発の特徴は何ですか?
(4) アジャイル開発モデルはなぜ必要ですか?
(5) アジャイル開発モデルの長所と短所は何ですか?
(6) アジャイル開発モデルを導入するにはどのような方法がありますか?
(7) DevOps開発モデルとは何ですか?
(8) DevOps 開発モデルの利点は何ですか?
(9) DevOps 開発モデルの欠点は何ですか?
(10) DevOps開発モデルの実装方法にはどのようなものがありますか?
(11) アジャイル開発と DevOps 開発モデルの違いは何ですか?
(12) マイクロサービスアーキテクチャとは何ですか?
(13) イベント駆動型アーキテクチャとは何ですか?
(14) マイクロサービス アーキテクチャとイベント駆動型アーキテクチャの違いは何ですか?

おすすめ

転載: blog.csdn.net/universsky2015/article/details/132014249