クラウドアプリケーション開発ガイド

クラウドはアプリケーションの開発方法を変えます。そして、組織の競争力を高めるために必要な俊敏性をもたらします。これはどういうことを意味するのでしょうか。

このガイドではその答えを探るとともに、クラウドコンピューティングに関するあらゆる疑問に答えます。また、クラウドネイティブについても詳細に説明します。さらに、デジタルトランスフォーメーションの一環としてクラウドおよびクラウドネイティブ開発の導入を成功させる方法も紹介します。

クラウドとクラウドネイティブの比較

クラウドネイティブとは、クラウドコンピューティングインフラが持つ柔軟性、拡張性、レジリエンス、弾力性というメリットをフルに活用して、アプリケーションの設計、作成、実行を行うアプローチです。

ただし、クラウドコンピューティングとは少し違います。

クラウドネイティブとは

クラウドネイティブ最新のアプリケーション構築方法です。開発・デリバリープロセスにおいて、継続的統合と継続的デリバリー(CI/CD)の原則、コンテナベースのエンジン、オーケストレータを使用します。

アプリケーションのデプロイ先(オンプレミス、パブリッククラウド、プライベートクラウド、ハイブリッドクラウド)よりも、開発方法が重視されます。

クラウドネイティブアプリケーションとは

クラウドネイティブアプリケーションはクラウド上で実行できるように設計されています。疎結合であり、クラウド向けにパフォーマンスが最適化されていて、クラウドベンダーが提供するマネージドサービスに向いています。クラウドネイティブアプリケーションは継続的デリバリー手法で構築されます。

cloud-native-cta

クラウドとクラウドネイティブの比較: クラウドネイティブ化というパラダイムシフトの考察

ウェビナーを見る

革新的なアイデア、エクスペリエンス、改善をソフトウェアとして着実にデリバリーできるため、スピードやカスタマーエクスペリエンスが向上し、競争上の優位性につながります。

Netflix、Uber、Airbnbなどは「初めからクラウドを前提としている」企業です。こうしたクラウドサービス企業は、従来のオンプレミス構成に頼らず、クラウドのインフラとデリバリーを最大限活用することに特化しています。

クラウドネイティブアーキテクチャ

ここまではクラウドネイティブアプリケーションの概要を説明してきました。次はアーキテクチャを見ていきましょう。通常、クラウドネイティブアーキテクチャは以下の要素で構成されます。

コンテナ

コンテナは、軽量でポータブルなスタンドアロンのソフトウェアパッケージです。アプリの実行に必要なコード、ランタイム、システムツール、システムライブラリ、設定などがすべて含まれています。小型で効率的なソフトウェアであり、Dockerなど専用のPaaSで開発され、必要に応じていつでもすばやく簡単に複製してデプロイできます。

Kubernetes

Kubernetesは、コンテナのスケジュール、負荷分散、デプロイを処理するオーケストレータです。コンテナの起動、停止、修復を実行します。また、必要に応じてアプリの拡張、不要になったコンテナの削除、障害が発生したコンテナのリプレースを実行します。

kubernetes-low-code-platform--cta

Kubernetesのパフォーマンス
ローコードプラットフォーム

ホワイトペーパーをダウンロード

マイクロサービス

マイクロサービスは、大型のモノリシックアプリケーションを分割し、互いに連携する独立したサービスとして用意するという発想で作成された、小型のソフトウェアです。コンテナに格納され、Kubernetesクラスタにデプロイされます。マイクロサービスアーキテクチャでは、アプリケーション全体ではなく1~2個のマイクロサービスに手を加えれば変更が終わるため、アプリケーションの更新、変更、再デプロイを高速に実行できます。

サービスメッシュ

サービスメッシュは、アプリケーションのデータ共有方法を管理するためにアプリに組み込まれた、参照可能な専用インフラレイヤーです。アプリが拡張して最適化が必要になった際に通信を文書化するための重要な手段になります。

DevOps

開発(Dev)から本番(Ops)へアプリケーションを移行するプロセスの統合・自動化をベースとした手法であり哲学であるDevOpsは、CI/CDのプラクティスをサポートします。IT組織はソフトウェアを小さく分けて継続的に開発、テスト、リリースします。熟練の開発スタッフやITスタッフを抱える大規模なエンタープライズであれば、この方法で1日に複数回(ときには数百回)ソフトウェアをデプロイできます。

企業は急速なデジタルトランスフォーメーションの真っ只中にあり、顧客、パートナー、従業員のエクスペリエンスを改善・強化するためのプロセスデジタル化に取り組んでいます。

以前は従来のIT組織には2つの方法がありました。

  • 既製のソリューションを調達してインストールし、ベンダーとアプリの更新に関する契約を締結します。
  • ソリューションを内製します。この場合、カスタムソリューションを構築するために開発者を大勢雇用し、さらに長期にわたって保守するために社内リソースを「無駄遣い」することになります。

いずれの方法を選択した場合も、ソリューションはいつかレガシーシステムになり、組織はそれに伴って発生する問題への対応を迫られます。

クラウドネイティブは、この状況にパラダイムシフトを起こしました。DevOpsやCI/CDの原則に従ってリリースサイクルの高速化を実現する動的な環境をもたらし、クラウド環境で迅速に進化・拡張させることができるソフトウェアを構築できるようにしたのです。

icon-resources-cloud-vs-cloud-native

72%の企業が、2023年までに自社アプリの大半がクラウドネイティブで開発されるようになると考えていることをご存じでしょうか。

レポートを読む

クラウドネイティブのメリット

  • 1. 開発の高速化とソフトウェアリリースの進歩
  • 2. コストの削減/予算の効率化
  • 3. 管理の容易さ
  • 4. 信頼性/レジリエンスによる事業継続性の向上
  • 5. オープンソース標準の選択
  • 6. カスタマーエクスペリエンスの向上

ここで、クラウドネイティブアプローチのメリットをいくつか詳しく見ていきましょう。

1. 開発の高速化とソフトウェアリリースの進歩

CI/CDとDevOpsに加え、コンテナやコード、その他のコンポーネント(API、ルール、ワークフローなど)といった構成要素を再利用できるため、開発が高速化し、リリース頻度も増加します。モジュール化によってスピードとシンプルさがもたらされ、ソフトウェアのテストや本番へのデリバリーが加速します。

DevOpsプラクティスを採用すると、ITスタッフがソフトウェアをすばやく開発、連携、テストして、できあがったものを漸次的にデプロイできます。「早く失敗し、早く修正する」というアプローチにより、ユーザーに提供する前の早い段階で問題を特定・解決し、全体的なエクスペリエンスを向上させることができます。CI/CDプロセスでは、ソフトウェアをシームレスに更新でき、ユーザーへの提供を中断する必要もありません。さらに、顧客主導型のサービスを市場にすばやく提供できます。

2. コストの削減/予算の効率化

クラウドネイティブ環境では、クラウド環境を管理するという作業全般がさらに自動化されます。必要に応じてスケールアップやスケールダウンができるエラスティックコンピューティングでは、インフラの常時稼働が不要になります。

開発面では、新たなテストサイクルを実行することなくテスト済みのマイクロサービスを他のクラスタに組み込むことができるため、リソースを削減できます。また、反復的なプロセスをITによる自動化で管理するため、スタッフの時間の削減にもつながります。さらに、ダウンタイムの減少により間接的にも影響を及ぼします。

3. 管理の容易さ

Amazon Web Services(AWS)、Microsoft Azure、Google Cloudなどの大手クラウドベンダーがサーバーレスプラットフォームを提供しています。つまり、こうしたベンダーがネットワークの構成、プロビジョニング、拡張、クラウドインスタンスの管理を代行してくれるのです。開発者はコードやイベントトリガーを用意して実行するだけです。

4. 信頼性/レジリエンスによる事業継続性の向上

事業継続性は先進的なデジタルエンタープライズにとって非常に重要です。サービスが疎結合になっているクラウドネイティブアーキテクチャは、冗長性、耐障害性、自動リカバリに優れています

コンテナとKubernetesを使用するアプローチでは、障害が発生したコンテナは自動的に除外され新しいコンテナがデプロイされるため、ダウンタイムが大幅に短縮されます。レジリエンスが高いことで、コストの削減、ITの他の優先事項へのリソースの配分、信頼性の向上といったメリットも生まれます。

5. オープンソース標準の選択

組織はオンプレミス、パブリッククラウド、プライベートクラウド、ハイブリッドを組み合わせた複数の環境を利用しています。クラウドネイティブアプリケーションを開発した場合、これらのアプリケーションを実行するためのコード変更や、インフラごとのコード変更が必要ありません。この移植性のおかげでベンダーロックインも発生しません。

6. カスタマーエクスペリエンスの向上

クラウドネイティブのアプリケーションとアーキテクチャはインフラから独立しています。そのため、ビジネス部門とIT部門のコラボレーションを促進して、ビジネス要件への対応やソフトウェアのカスタマーエクスペリエンスの検討に投入できるリソースを増やすことができます。

クラウドとクラウドネイティブの比較

クラウドは、第三者のコンピュータ上で実行されるアプリケーションを保有しているようなものです。ユーザーはアプリケーションを使用するだけであり、アプリケーションの実行やアクセスの提供、コンピュータ自体の管理はその第三者が行っています。

クラウドネイティブは、別の組織のコンピュータファームをまるごと使用するようなものです。アプリケーションの仕組みや実行方法を再考案して、大規模なコンピュータファームのメリットを活用できるようにします。

image

「クラウドネイティブコンピューティングは、単なる大規模ソフトウェアインフラの実装アプローチではありません。先進的なアプリケーションのコーディング、設計、連携、アーキテクチャ、実行、セキュリティに関するすべてを変えるパラダイムシフトなのです」

Jason Bloomberg氏 主要IT業界アナリスト、Intellyx社長 レポート全文を読む 

しかし、クラウドを使用するアプリケーションがすべてクラウドネイティブであるとは限りません。クラウドベースやクラウド対応のものもあります。相違点は以下のとおりです。

クラウドネイティブアプリ クラウドベースアプリ クラウド対応アプリ
  • クラウドホスティングアーキテクチャのメリットを活用できるように設計されています。
  • 通常、マイクロサービスアーキテクチャが組み込まれています。
  • 多くの場合、コンテナやサーバーレス機能を利用してデプロイされます。
  • オンプレミスインフラでホストされているKubernetesクラスタでデプロイすることもできます。
  • クラウド上で運用・実行されるすべてのアプリ。
  • SaaS製品も含まれます。
  • サーバーがクラウドでホスティングされているものの、クライアント側でソフトウェアをインストールする必要があるアプリもこれに該当します。
  • 当初はオンプレミスで実行するために作成され、後にクラウドへ移行されたアプリ。
  • 元々コンテナで実行するようには設計されていないため、クラウドネイティブアプリケーションのような拡張はできません。

クラウドネイティブアプリケーションの構築の検討

クラウドアプリケーション開発とローコードに関するページで、高速なローコードと高性能・高機能な最新クラウドプラットフォームの組み合わせによってもたらされるメリットをご確認ください。