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

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

本ガイドラインにおけるクラウドネイティブなアプリケーションについて説明する。

クラウドネイティブなアプリケーションとは、クラウド基盤の伸縮性に対応し、必要なタイミングでリソースを増減可能な伸縮性を持ったアプリケーションである。 APサーバをステートレスな構造とし、クラウドベンダが提供する機能による動的なスケーリングを可能とする。 加えて、本ガイドラインでは動的なスケールが不可である領域の負荷分散を行う方式を提供する。

Note

本ガイドラインでは、クラウド基盤の伸縮性に対応するための代表的なアプリケーション構造についてのみ説明を行う。 基盤レイヤなどのアプリケーション以外の要素については説明しない。

本ガイドラインで説明する内容は以下のとおり。 アプリケーションの要件に応じて、必要な要素を実装すること。

Screen image of cloud native application.
項番 項目 概要 アプリケーションでの対応要否
セッション情報をクラウドベンダが提供するキャッシュサービス上で管理し、APサーバをステートレスな構造とする。
セッションを利用するアプリケーションについては対応必須。RESTful Web Serviceなどの、セッションを利用しないアプリケーションでは対応不要。
アップロードファイルをクラウドベンダが提供するストレージサービス上で管理し、APサーバをステートレスな構造とする。
仮アップロードなどのアプリケーションが処理中の状態をファイルで保持するアプリケーションについては対応必須。
データ永続層についてスケール可能なアプリケーション構造とする。
データ永続層にRDBを利用し、将来的なスケール性を確保する要件がある場合に対応する。
高負荷処理をメッセージサービスにより非同期実行し、レスポンスタイムを確保する。
レスポンスタイムを優先し、高負荷処理を別サーバで非同期実行させる要件がある場合に対応する。
環境依存値をアプリケーション内部に保持せず、外部のコンフィグサーバで管理する。
システム内の複数サーバ間での設定値の共有や、同一アプリケーションでの稼働環境(本番環境・ステージング環境・開発環境など)の切り替えを行う場合に対応する。
クラウドベンダが提供するヘルスチェックに加えて、アプリケーションからヘルスチェックを行う。
クラウドベンダ機能の他に、アプリケーションからヘルスチェックを行う要件がある場合に対応する。
クラウド基盤の伸縮性に対応したログ管理を行う。
アプリケーションからログ出力を行う場合は対応必須。

2.2.1.1. AWSクラウドデザインパターンとの対応

本ガイドラインで説明する内容とAWSクラウドデザインパターンとの対応について説明する。

Note

AWSクラウドデザインパターンとは、代表的なクラウドベンダであるAmazon Web Service(AWS)を利用したシステムアーキテクチャ設計を行う際のノウハウが整理されたドキュメントである。 AWS利用者へ向けた内容であるが、クラウドネイティブなアプリケーションを開発するにあたって汎用的な考え方が網羅されている。

詳細については、 AWSクラウドデザインパターン を参照されたい。

本ガイドラインにおける アプリケーション開発 の各節とAWSクラウドデザインパターンの対応関係は以下のとおり。 なお、フレームワークの役割と関連性が薄い一部のデザインパターンは省略している。

カテゴリ AWSクラウドデザインパターン 本ガイドラインでの対応(共通) 本ガイドラインでの対応(AWS)
なし
共通のみ

共通のみ

なし

なし
なし

なし
なし

なし

なし
なし

なし
なし


なし
なし

共通のみ


なし
なし

なし
なし
共通のみ

共通のみ

なし

2.2.1.2. Twelve-Factor Appとの対応

本ガイドラインで説明する内容とTwelve-Factor Appとの対応について説明する。

Note

Twelve-Factor Appとは、モダンなクラウドアプリケーション開発のベストプラクティスの一つである。

詳細については、 The Twelve-Factor App を参照されたい。

本ガイドラインにおける アプリケーション開発 の各節とTwelve-Factor Appの各要素との対応関係は以下のとおり。

Twelve-Factor App 本ガイドラインでの対応(共通) 本ガイドラインでの対応(AWS)
フレームワークのスコープ外
フレームワークのスコープ外
Maven等のツールで解決
共通のみ
共通のみ
フレームワークのスコープ外
フレームワークのスコープ外
なし
なし
フレームワークのスコープ外
フレームワークのスコープ外
なし
なし
なし

2.2.1.3. クラウドネイティブ成熟度モデルとの対応

Springを開発、提供しているPivotal社が提示している クラウドネイティブ成熟度モデル(Cloud Native Maturity Model)と本フレームワークの対応関係を示す。

成熟度 Pivotal社が提示する要件 本ガイドラインでの対応(共通) 本ガイドラインでの対応(AWS)
Cloud Native
Microservices architecture
API-first design
なし
なし
Cloud Resilient
Fault-tolerant and resilient design
Cloud-agnostic runtime implementation
Bundled metrics and monitoring
Proactive failure testing
Cloud Friendly
12 factor App methodology
Horizontally scalable
Leverages platform for high availability
Cloud Ready
No permanent disk access
Self-contained application
Platform-managed ports and networking
Consumes platform-managed backing services

2.2.2. Macchinetta Server Framework for Java (1.x) との関係

Macchinetta Server Framework Cloud Extension は Macchinetta Server Framework for Java (1.x) を拡張し、クラウドネイティブなアプリケーションを開発するためのベストプラクティスを提供するものである。 Macchinetta Server Framework for Java (1.x) が提供するライブラリやノウハウについては原則として踏襲するものとし、必要に応じて拡張を行う。

2.2.2.1. バージョンの対応関係

Macchinetta Server Framework Cloud Extension と Macchinetta Server Framework for Java (1.x) のバージョンの対応関係を以下に示す。

Macchinetta Server Framework Cloud Extension Macchinetta Server Framework for Java (1.x)
1.0.1
1.5.1

2.2.2.2. 機能の対応状況

本ガイドラインにおける Macchinetta Server Framework for Java (1.x) が提供する機能の対応状況について説明する。

2.2.2.2.1. 共通ライブラリ

Macchinetta Server Framework for Java (1.x) が提供する共通ライブラリの対応状況は以下の通り。

プロジェクト名
分類
部品名
対応状況(AWS)
terasoluna-gfw-common
例外ハンドリング
例外クラス
検証済み


例外クラス
検証済み


例外コード
検証済み


例外ログ出力インターセプタ
検証済み

システム時刻
システム時刻ファクトリ
検証済み

コードリスト
コードリスト
検証済み

データベースアクセス(共通編)
クエリエスケープ
未検証


シーケンサ
未検証
terasoluna-gfw-string
文字列処理
半角全角変換
未検証
terasoluna-gfw-codepoints
文字列処理
コードポイントチェック
未検証

入力チェック
コードポイントチェック用Bean Validation制約アノテーション
未検証
terasoluna-gfw-validator
入力チェック
バイト長チェック用Bean Validation制約アノテーション
未検証


フィールド値比較相関チェック用Bean Validation制約アノテーション
未検証
terasoluna-gfw-jodatime
システム時刻
Joda Time用システム時刻ファクトリ
検証済み
terasoluna-gfw-web
二重送信防止
トランザクショントークンチェック
検証済み(制約有り) *1

例外ハンドリング
例外ハンドラ
検証済み


例外ログ出力インターセプタ
検証済み

コードリスト
コードリスト埋込インターセプタ
検証済み

ファイルダウンロード
汎用ダウンロードView
未検証

ロギング
トラッキングID格納用サーブレットフィルタ
検証済み


汎用MDC格納用サーブレットフィルタ
検証済み


MDCクリア用サーブレットフィルタ
検証済み
terasoluna-gfw-web-jsp
二重送信防止
トランザクショントークン出力用のJSPタグ
検証済み

ページネーション
ページネーションリンク表示用のJSPタグ
検証済み

メッセージ管理
結果メッセージ表示用のJSPタグ
検証済み

EL Functions
XSS対策用EL関数
検証済み


URL用EL関数
未検証


DOM変換用EL関数
未検証


ユーティリティEL関数
未検証
terasoluna-gfw-security-web
ロギング
認証ユーザ名格納用サーブレットフィルタ
検証済み
  1. 二重送信防止に関する制約の内容については、オンライン版クラウド拡張開発プロジェクトの作成 を参照されたい。

2.2.2.2.2. 提供機能

Macchinetta Server Framework for Java (1.x) Development Guidelineが提供する機能の対応状況は以下の通り。

分類
機能名
対応状況(AWS)
Webアプリ開発機能
入力チェック
検証済み

例外ハンドリング
検証済み

セッション管理
未検証

ページネーション
検証済み

二重送信防止
検証済み(制約有り) *1

メッセージ管理
検証済み

国際化
未検証

コードリスト
検証済み

ファイルアップロード
検証済み(拡張有り)

ファイルダウンロード
未検証

Tilesによる画面レイアウト
検証済み(制約有り) *2

共通ライブラリが提供するJSP Tag Library と EL Functions
検証済み

Ajax
未検証

ヘルスチェック
検証済み(拡張有り)
Web Service
RESTful Web Service
未検証

RESTクライアント(HTTPクライアント)
未検証

SOAP Web Service(サーバ/クライアント)
未検証
データアクセス
データベースアクセス(共通編)
検証済み

データベースアクセス(MyBatis3編)
検証済み(拡張有り)

データベースアクセス(JPA編)
未検証

排他制御
検証済み
アプリケーション形態に依存しない汎用機能
ロギング
検証済み

プロパティ管理
検証済み(拡張有り)

日付操作(JSR-310 Date and Time API)
未検証

日付操作(Joda Time)
検証済み

システム時刻
検証済み

文字列処理
未検証

Beanマッピング(Dozer)
検証済み
メッセージ連携
E-mail送信(SMTP)
検証済み

JMS(Java Message Service)
検証済み(拡張有り)
セキュリティ対策
Spring Security概要
検証済み

認証
検証済み

認可
検証済み

セッション管理
未検証

CSRF対策
検証済み

ブラウザのセキュリティ対策機能との連携
未検証

XSS対策
検証済み

暗号化
未検証
  1. 二重送信防止に関する制約の内容については、オンライン版クラウド拡張開発プロジェクトの作成 を参照されたい。
  2. Tilesによる画面レイアウトに関する制約の内容については、セッション外部管理 を参照されたい。