Inquiry icon

START A CONVERSATION

Share your requirements and we'll get back to you with how we can help.

Thank you for submitting your request.
We will get back to you shortly.

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

従来のモノリシックなオンプレミス運用よりもクラウドネイティブアプリケーションを好む企業が増えてきています。この変化を牽引しているのが、拡張性、信頼性、顧客体験やビジネス速度を向上させたいという意欲です。クラウドでのアプリケーション開発は機敏性(より迅速なビルドとデプロイ)を向上させ、これにより、製品化までの時間を短縮できます。クラウドネイティブアプリケーションを早期に導入した企業は、開発の加速化の大幅な改善に加え、収益増加と運用費削減の実現も発表しています。

クラウドの成熟度を上げる

Cloud Maturity

システムアーキテクチャにはじまるアプリケーションライフサイクル管理を、最終的にクラウドの特性を生かせる方法でアプリのモニタリングを行えるよう見直すことは、クラウドの能力を最大限に活用することにつながります。当社では、成熟度の高いクラウドベンダーの管理サービスと併せてアプリケーション中心の設計と自動化を導入することで、お客様のシステムが、クラウドの成熟度のさまざまなレベルを経て成長できるようサポートしています。

クラウドサービスの活用

クラウドサービスを導入できることは、クラウドベースシステムの一番の持ち味です。少なくとも、アプリケーションは、クラウドストレージ、コンピューティングやモニタリングインフラを使用します。リフトアンドシフト方式でクラウドマイグレーションする場合、基本的な機能の利用に限られます。このようなシステムはクラウドの成熟度レベルは低いとはいえ、クラウドにおける基本的メリットは享受できます。

リフトアンドシフト方式は、クラウド運用を開始したばかりなど、特定の場合には理想的ですが、当社は、より高い成熟度レベルへ導くことができます。キャッシングやロードバランシングなどの管理サービスを利用できるよう、システムは構成されています。さらには、基本的なストレージやコンピューティングなどのオプションに加え、サーバーレスコンピューティングといった高度なサービスを活用できるよう設定することも可能です。

社内チームが作成した「分化されていない厄介なデータ」の大部分は、データベース管理サービス、ロードバランサー、キャッシング機構、データウェアハウス、あるいは、検索ツールや自動化ツールを導入することで、クラウドベンダーに移行できます。管理サービスによって社内チームの機敏性が向上し、チームは、より事業価値の高い作業に重点的に取り組めるようになります。

アプリケーションを動作させたり、スケーリングするのに必要なすべての管理をクラウドベンダーに任せられるようになったときが、クラウドネイティブの最も高い成熟度レベルに到達したときと言えます。たとえば、サーバーレスコンピューティングサービスなら、サーバーのプロビジョニング、増設や管理の必要なく、大規模アプリケーションを動作させることができます。最先端のクラウドネイティブアーキテクチャのいくつかは、こういった管理サービスを活用することで実現可能です。

クラウドの基本機能 - コンピューティング、ストレージ、ネットワーキング、モニタリング

arrow

管理サービス - データベース、キャッシング、ディレクトリサービス、ロードバランサー、データウェアハウス、検索ツール、自動化ツール

arrow

サーバーレスサービスやAI/MLサービスなどの高度なサービス

アプリケーション中心設計の導入

Application-Centric Design

オンプレミスインフラは、すべてが1か所に集約されています。一方、サーバーやデータベースはクラウドに分散されています。アプリケーションを設計しつつ、クラウドの構成をミラーリングすることで、クラウドプラットフォームにより適したアプリケーションにすることができます。

12-factor appは、最新のクラウド環境にデプロイできるアプリケーションを作成するための設計手法で、アーキテクチャやツール、これまでのやり方を大きく変えることなく規模を拡大できます。こういったアプリケーションは、環境間での移植性が高く、環境間での逸脱も低く抑えることができます。12-factor手法に基づいてアプリケーションを設計すれば、クラウドネイティブの成熟度レベルを高く維持できます。

多くのレガシーアプリケーションのアーキテクチャは、すべてのコンポーネントを単一のユニットに組み込むモノリシック構造です。クラウドネイティブの成熟度を上げるには、アプリケーションをモジュール構造にする必要があります。各サービスが完全に自立し、他のサービスにほとんどまたは全く依存しない(弱連結)、マイクロサービスベースのアプリケーションが、クラウドコンピューティングには理想的です。

クラウドネイティブアーキテクチャで他にも考慮すべきなのが、ビルトインインスツルメンテーション、セキュリティ、並列化や回復力です。並行してプロセスを実行するよう設計されたアプリケーションはスケーリングしやすく、また、セキュリティを考慮した設計を行うことで、クラウドセキュリティーサービスのよりスムーズな導入が可能になります。インスツルメンテーションを設計段階で考慮することで、コンポーネントの不具合や遅延の問題を検出し、それらを自動で解決する(自己回復力)ようビルドされた自己認識型アプリケーションを作成できます。

自動化ツールの活用

クラウド製品をフル活用するには、アプリケーションの運用面も自動化する必要があります。これには、環境設定や構成のためのコード開発も含まれます。

環境の変更が必要になった場合には、Infrastructure as Code(IaC)が実行され、既存のインフラが完全に置き換わります。こういった方法により、構成ドリフトがほとんどまたは全くないイミュータブルインフラストラクチャを構築できます。

インフラの完全置き換えが常に実行可能とは限らない大規模環境や複雑な環境では、コンポーネントレベルで変更を行えます。自動化スクリプトを活用することで、変更が一貫性をもって実行されるようになります。

コードとして書かれたインフラは、ソース管理システムによって、アプリケーションコードと同様に扱うことができます。当社では、インフラコードのデプロイとアプリケーションコードのデプロイの両方を自動化してお客様に機敏性と一貫性をもたらす、完全自動化デプロイメントパイプライン用ツール(CI/CD)を構成できます。

その次の段階では、システム全体のモニタリングとリソースの使用の最適化のモニタリングを自動化できます。クラウドモニタリングサービスは、アクセス集中を検出するよう、また、追加のインスタンスを起動したり、負荷のバランスを取るためにインスタンスを停止したりする(オートスケーリング)よう構成できます。自動化されたコンプライアンス監査チェックを、ログを分析し、リアルタイムで不具合を検出するようビルドされたロギングフレームワークで実行することも可能です。

より高度な自動化では、AIやMLを活用して、イベントがシステムにどのような影響を及ぼすかを予測したり、性能の低下やセキュリティの悪化を回避するための対策を講じたりすることも可能です。

IaC、イミュータブルインフラストラクチャ、CI/CD

arrow

自動化によるモニタリング、コンプライアンス、最適化

arrow

AI/ML:不具合の予測、自己回復、自己最適化

クラウドネイティブアプリケーション構築のためのベストプラクティス

Develeopment

開発

  • マイクロサービスアーキテクチャによってアプリケーションを設計する
  • ビジネス機能よりもAPIを優先する
  • ステートレスサービスとイベント駆動型の手法を用いる
  • 単体テスト、APIテスト、承認テストなどのテストを自動化する
Storage

ストレージ

  • ストレージライフサイクルポリシーを定める
  • アクセス頻度や計画保持時間といった属性に基づいてデータを体系化する
  • コード(可能な場合は、OSプロパティも)を使って保持ポリシーを強化する
  • データの状態をトラッキングしたり、データを異なるクラウドストレージデバイスに移したり、既定のライフサイクルの期限が来たらデータを削除したりする、クラウドストレージデータエージング管理メカニズムを組み込む
  • バックアップを自動化する
Security

セキュリティ

  • DevSecOps手法を採用する
  • セキュリティの適用規格に基づいてソリューションをアーキテクチャ設計する
  • カスタムスクリプトによって論理型セキュリティソリューションを実装する
  • 機密データを暗号化する
  • サーバーとコンテナを堅牢化する
  • ウェブアプリケーションファイヤーウォールなどの管理サービスを利用する
  • アプリケーションセキュリティテストをCI/CDに統合する
  • クラウドベースバックアップと障害回復戦略を定める
Infrastructure

インフラ

  • RDS、Aurora、DynamoDBやRedshiftといった管理サービスを利用する
  • 自動的にリソースを調整するオートスケーリングを活用する
  • 回復力のあるサービスを構築して自動冗長性を確保する
  • AWS LambdaやAzure Functionsといったサーバーレス技術を利用する
  • 複数のデータセンターを効果的に活用して、ビジネスの継続性を確保する
Operations

運用

  • AWS CloudFormationなどのツールを活用して、コードとしてインフラを維持する
  • イミュータブルインフラストラクチャの計画を立てる
  • コードデプロイメントパイプラインを自動化する
  • コンテナにサービスやアプリケーションをデプロイする
  • KubernetesやSwarmといったオーケストレーションツールを活用する
Monitoring

モニタリング

  • ELKやOSSECといったスタックによって、継続的モニタリングと脅威予測を確実に行う
  • 環境ドリフトや構成ドリフトの検出を自動化する
  • コードフレームワークとしてコンプライアンスを作成し、監査チェックを自動化する
  • 外部システムのポーリングに加え、ホワイトボックスモニタリング法も用いる
  • Prometheusなどのツールを使って、さまざまなカスタムメトリックをモニタリングする
  • JaegerやZipkinといったリクエストトレーシングツールを使って、関連するリクエストをすべてトラッキングする

クラウドへのスムーズな移行のために

クラウドの成熟度を上げるための道のりは、移行場所から始まると言えます。それが、ベストプラクティスに従って適応性のある基礎を築く、ワークロードのデプロイに先立つ作業です。それは、コードとしてインフラを構築する、繰り返し可能なプロセスであり、いくつかのコアサービスを使ってベースラインクラウド環境をデプロイできるようにする、規則に基づく命令セットによって実行されるものです。

ベースライン環境があることで、将来、新たなアカウントや環境に対応するためのデプロイ時間を劇的に軽減できます。当社は、クラウドの移行場所を実装することで、お客様が、健全なガバナンスに基づいて迅速にデプロイから製品化へとめられるようにし、運用コストも削減できるようにしています。

移行場所を構築する場合に考慮すべき技術的側面と運用的側面は、次のとおりです。

  • アカウント構造の設計
  • 仮想ネットワーク構成
  • セキュリティ要件と監査要件
  • アイデンティティ/アクセス管理
  • セントラルシェアードサービス
  • 自動化フレームワークとバージョン管理されたインフラ

クラウドマイグレーションのメリットを最大化するため、企業は、クラウドネイティブエンジニアリングとベストプラクティスを導入する必要があります。主要クラウドプラットフォームの活用実績のある当社のクラウドコンサルタントが、クラウドネイティブの成熟度を上げるための道のりの効率化をお手伝いいたします。当社では、簡単に拡張可能なエンタープライズアプリケーションをクラウドにデプロイできるようにする、モジュール型アプリケーションアーキテクチャの導入とDevOps手法の確立もサポートしております。