第3回:クラウド特性を活かし、柔軟性と拡張性を兼ね備えたアプリケーションを開発し安定稼働させるには 【連載】クラウドネイティブ:ビジネスの競争力を高める革新的なアプローチ
- クラウド
- クラウドネイティブ
- クラウドインテグレーション
- AWS
- CI/CD
- IaC
- 自動化
- DX
- デジタルトランスフォーメーション
- サーバーレス
- モダナイゼーション
- モダンアプリケーション
クラウド特性を活かしてシステムを開発・運用するためのポイント
クラウド特性を活かしたシステムを開発するためには、インフラ技術者のクラウド知識のみならず、アプリケーション技術者、運用技術者もクラウド特性を知り、以下の4つの領域への適応が求められます。
・ 柔軟性と拡張性を最大限に活用したアプリケーションの開発
・ 迅速なサービス提供を可能にするプロセスの自動化
・ マネージドサービスの活用と構築自動化による保守性の高い基盤構築
・ クラウド特性を損なわずにシステムを安定稼働させるための高度な運用
柔軟性と拡張性を最大限に活用したアプリケーション開発
ビジネス環境の変化にすばやく対応し、ユーザーが求める価値をいち早く届けることが昨今のアプリケーション開発では求められます。
ユーザーが求める価値を提供し続けるためには、要件に適したアプリケーションアーキテクチャとテクノロジーを選択し、拡張性、回復性、障害時運用などの非機能要件を満たすソフトウェアアプローチが必要です。アプリケーション開発者にはアジャイル開発、クラウドの知識、自動化技術の活用、運用を見据えた設計など、多岐にわたるスキルが求められます。
クラウドが提供するコンテナやサーバーレス技術、APIの特性を知り、アプリケーションにマイクロサービスなどのアーキテクチャを採用することで、疎結合かつセッションステートレスなアプリケーションを実現することができます。これらの技術を活用することにより、効率的で柔軟性と拡張性、回復性に優れたアプリケーションを実現できます。
自動化技術を活用し、自動化プロセスに静的テスト、動的テストを組み込むことで、リリース単位での品質を担保しながら迅速なリリースに対応することができます。静的テストはツールを積極的に活用し、動的テストにおいてはテストケースを洗い出し、テストケースを網羅したテストコードを準備します。これらを開発プロセスに組み込み、確実にプロセスを回すことで品質を担保していくことが重要です。
分散アプリケーションを管理していくうえでは、障害に備えたログ設計がポイントになります。ログは軽く見られがちですが、アプリケーション障害発生時の原因特定の第1歩がログ解析であり、ログに出力された情報が不足すると原因特定が困難になります。特に分散アプリケーションにおいては、トレーサビリティを担保して依存関係を特定できるように設計することで問題発生時の運用に備える必要があります。
ソフトウェア開発技術を強みとして持つ当社は、数多くのアジャイル開発手法を用いたパブリッククラウド上でのアプリケーショ開発を手掛けてきました。ビジネス環境の変化にすばやく対応できるアプリケーション開発を当社がご支援いたします。
ビジネス環境の変化にすばやく対応し、ユーザーが求める価値をいち早く届けることが昨今のアプリケーション開発では求められます。
ユーザーが求める価値を提供し続けるためには、要件に適したアプリケーションアーキテクチャとテクノロジーを選択し、拡張性、回復性、障害時運用などの非機能要件を満たすソフトウェアアプローチが必要です。アプリケーション開発者にはアジャイル開発、クラウドの知識、自動化技術の活用、運用を見据えた設計など、多岐にわたるスキルが求められます。
クラウドが提供するコンテナやサーバーレス技術、APIの特性を知り、アプリケーションにマイクロサービスなどのアーキテクチャを採用することで、疎結合かつセッションステートレスなアプリケーションを実現することができます。これらの技術を活用することにより、効率的で柔軟性と拡張性、回復性に優れたアプリケーションを実現できます。
自動化技術を活用し、自動化プロセスに静的テスト、動的テストを組み込むことで、リリース単位での品質を担保しながら迅速なリリースに対応することができます。静的テストはツールを積極的に活用し、動的テストにおいてはテストケースを洗い出し、テストケースを網羅したテストコードを準備します。これらを開発プロセスに組み込み、確実にプロセスを回すことで品質を担保していくことが重要です。
分散アプリケーションを管理していくうえでは、障害に備えたログ設計がポイントになります。ログは軽く見られがちですが、アプリケーション障害発生時の原因特定の第1歩がログ解析であり、ログに出力された情報が不足すると原因特定が困難になります。特に分散アプリケーションにおいては、トレーサビリティを担保して依存関係を特定できるように設計することで問題発生時の運用に備える必要があります。
ソフトウェア開発技術を強みとして持つ当社は、数多くのアジャイル開発手法を用いたパブリッククラウド上でのアプリケーショ開発を手掛けてきました。ビジネス環境の変化にすばやく対応できるアプリケーション開発を当社がご支援いたします。
迅速なサービス提供を可能にするプロセスの自動化
ビジネス機会の損失を防ぐためには、開発効率を向上させると同時に、品質も確保していく必要があります。
ソースコードが保管されているリポジトリからコードを取得し、アプリケーションビルド、静的/動的テスト、基盤へのデプロイなどの一連のプロセスの自動化を成功させるためには、リポジトリ構成、ブランチ戦略、CI/CD 構成を適切に検討する必要があります。
リポジトリを適切に分割して異なる機能やモジュールを独立して管理することは、変更の影響範囲を最小限に抑え、デプロイの効率を高めることによる品質向上につながります。
ブランチ戦略を検討する際は、ブランチの目的を明確に定義し、チームの規模、開発スピード、リリース頻度、CI/CD パイプラインとの連携などプロジェクト特性に応じた戦略を選択する必要があります。
CI/CD 構成を検討する際は、リポジトリ構成とブランチ戦略に基づいて、ビルド、テスト、デプロイのステップを自動化するパイプラインの設計、パイプラインを構成する自動化ツールの選択を適切に行う必要があります。
これらをプロジェクトの特性やニーズを踏まえて検討することにより、効果的な自動化基盤を実現することができます。
当社では、GitHub Actions ワークフローと AWS Code シリーズを利用した自動化を数多く手掛けてきました。お客様のビジネス特性に応じた最適な自動化構成の検討を、当社のプロフェッショナルチーム(CI/CD エンジニア)がご支援いたします。
マネージドサービスの活用と構築自動化による保守性の高い基盤構築
パブリッククラウドを活用してクラウドネイティブなアプローチを行うアプリケーションを実行する基盤にはマネージドサービスの活用、IaC の利用が不可欠です。
マネージドサービスを積極的に活用することにより、マネージドサービスに組み込まれた高可用性による基盤障害からの回復力、リソース使用状況に応じた柔軟なスケーリングを利用することができます。クラウドネイティブアーキテクチャにおいては、アプリケーション実行基盤として Kubernetes や ECS などのコンテナオーケストレーター、もしくは Lambda のようなサーバーレス基盤を積極的に活用します。これらのサービス特性を理解した上で、より効果的な選択を行うことがクラウドを活用する上で重要なポイントとも言えます。
IaC を利用してインフラの構成や設定をコード化することで、基盤構築の効率化と回復力が大幅に向上します。本番環境や開発環境を同じ設定で瞬時に構築することができ、新たな開発環境を追加したいときも、同一構成の環境を正確に構築することができます。さらに、GitHub などのリポジトリで IaC コードを管理し、変更履歴を残すことで、保守性も飛躍的に向上します。
当社は、AWS を活用した開発実績が豊富で、マネージドサービスを幅広く活用してきた実績があります。最近では、Kubernetes や ECS を活用したコンテナオーケストレーション基盤に注力しています。
また、IaC として Terraform や Cloudformation を活用した案件実績も多数あり、Terraform Cloud でのインフラ環境構築・運用支援サービスも展開しています。
クラウド特性を活かしたセキュアで高品質な基盤の設計から構築まで、お客様の要件に合わせてご支援いたします。
コンテナオーケストレーターの特徴
- 長時間実行する可能性がある処理に向いている
- プロセスとして動作する
- コンテナサービスには制約が少ない
サーバーレスの特徴
- 短時間の処理に向いている
- イベントドリブンで動作する
- サーバーレスサービスは制約が厳しい
クラウド特性を損なわずにシステムを安定稼働させるための高度な運用
クラウドネイティブアーキテクチャを採用したシステムの運用においては、可観測性、コスト最適化、効果的なサービスの検討、安全なリリースが重要です。
可観測性とはメトリクスやログ、トレースデータなどのテレメトリデータから、アプリケーションの状況やシステムのパフォーマンス状態などを把握する能力のことです。
クラウドネイティブに代表されるコンテナテクノロジーやマイクロサービスを利用した分散システムでは、可観測性が運用上で非常に重要になります。これらのテレメトリデータを分析するには、分析ツールやアプローチ手法、正確なデータの解釈など、専門的な知識と高度な運用スキルが求められます。
クラウド活用にともなうコストは予測が難しく、予算の管理が難しいと第1回のコラムでも述べました。クラウドを活用したIT基盤では予期せずにコストが高額になることがしばしば見られ、クラウドの運用では定期的なコストのモニタリングを行う必要があります。モニタリングによりコスト状況の把握に努め、必要に応じてメトリクスなどのテレメトリデータを分析しながら費用対効果の高い構成へ変更するなど、コストの最適化に取り組む必要があります。これらに取り組むにはクラウドサービスのコスト構造や、コスト分析ツールの活用方法など幅広い知識と経験が求められます。
昨今のクラウドサービスはクラウドの機能追加や新たなサービスの出現スピードが早く、スピーディかつフレキシブルに対応する能力が求められます。クラウドサービスの機能追加やリリース状況をいちはやく把握し、サービスの特性を活かせる構成にすばやく対応するためには、変更に柔軟に対応できる能力が求められます。
NTTデータグループで経験した数多くの案件対応実績で蓄積したノウハウ、知見を持った当社のプロフェッショナルチーム(SREエンジニア)がお客様のシステムを安定的に稼働させるための運用をご支援いたします。
クラウドネイティブアーキテクチャを採用したシステムの運用においては、可観測性、コスト最適化、効果的なサービスの検討、安全なリリースが重要です。
可観測性とはメトリクスやログ、トレースデータなどのテレメトリデータから、アプリケーションの状況やシステムのパフォーマンス状態などを把握する能力のことです。
クラウドネイティブに代表されるコンテナテクノロジーやマイクロサービスを利用した分散システムでは、可観測性が運用上で非常に重要になります。これらのテレメトリデータを分析するには、分析ツールやアプローチ手法、正確なデータの解釈など、専門的な知識と高度な運用スキルが求められます。
クラウド活用にともなうコストは予測が難しく、予算の管理が難しいと第1回のコラムでも述べました。クラウドを活用したIT基盤では予期せずにコストが高額になることがしばしば見られ、クラウドの運用では定期的なコストのモニタリングを行う必要があります。モニタリングによりコスト状況の把握に努め、必要に応じてメトリクスなどのテレメトリデータを分析しながら費用対効果の高い構成へ変更するなど、コストの最適化に取り組む必要があります。これらに取り組むにはクラウドサービスのコスト構造や、コスト分析ツールの活用方法など幅広い知識と経験が求められます。
昨今のクラウドサービスはクラウドの機能追加や新たなサービスの出現スピードが早く、スピーディかつフレキシブルに対応する能力が求められます。クラウドサービスの機能追加やリリース状況をいちはやく把握し、サービスの特性を活かせる構成にすばやく対応するためには、変更に柔軟に対応できる能力が求められます。
NTTデータグループで経験した数多くの案件対応実績で蓄積したノウハウ、知見を持った当社のプロフェッショナルチーム(SREエンジニア)がお客様のシステムを安定的に稼働させるための運用をご支援いたします。
お客様の求める価値を実現する
当社の「クラウドネイティブ開発技術支援」
数多くのお客様のクラウドを活用したシステムの開発、システムを安定稼働させるための運用を手掛けてきた当社のクラウドの専門家が、開発・運用領域でビジネスニーズの実現やクラウドに関する課題解決をご支援いたします。
これまでに積み上げたクラウドの開発実績や運用実績をベースに、NTTデータグループの持つ豊富なアセットとナレッジを活用して、セキュアで高品質なシステム開発を実現していきます。
まとめ
「クラウドネイティブ:ビジネスの競争力を高める革新的なアプローチ」と題して全3回のコラムをお届けしましたが、いかがでしたでしょうか?
クラウドの特性を最大限に活かしたシステムの構築、運用をお考えの際は、経験豊富な当社のクラウドの専門家にご相談ください。これまでの開発実績と運用実績をベースに、セキュアで高品質なシステム開発を当社がご支援いたします。
ご相談の際は「クラウドインテグレーション」の問い合わせ窓口までご連絡をお待ちしております。
執筆者
- 米山 勝也
- 基盤サービス事業部 第一技術統括部 クラウド技術担当
- オープン系システム開発、組み込み開発、WEBアプリケーション開発など様々な技術領域の開発に従事。現在はパブリッククラウド(AWS)によるシステム開発のインフラを担当。