TOP > ブログ > サーバーレスアーキテクチャで何が変わるのか①
技術レポート

サーバーレスアーキテクチャで何が変わるのか①

ブログ

※記事は週に1回、追加で公開して参ります。
今すぐ全文をご覧になりたい方は、こちらから。(簡易登録が必要です。)




はじめに

これまでもコンピュータを取り巻く環境、特にアプリケーション実行環境は大きく変化してきた。データ処理形態は、バッチ処理からオンラインリアルタイム処理へ、また、アプリ実行形態は、メインフレームを中心としたセンター集中処理モデルから、分散処理、3層アーキテクチャへと変化してきた。エンタープライズアプリケーションにおいても、HTML5やJQueryなどでAJAXを用いた3層アーキテクチャ(UI (データチェック、画面生成)、アプリケーション(ビジネスロジック)、データベース(RDB、NoSQL))が主流となりつつある(Webシステムの開発基盤であるAZAREA-Geneもこのモデルを採用)。

一方、アプリケーション実行インフラは、メインフレーム、オフコン、IA(インテルアーキテクチャ)サーバー、HW仮想化、パブリッククラウド(IaaS)と変化してきた。前半はアプリケーション実行形態の変化に応じたものであるが、後半はインフラ管理コスト削減を目的とした変化ととらえることができる。さらに最近ではインフラストラクチャのほとんどの部分にマネージドサービスを利用したサーバーレスアーキテクチャという形態も登場している。先進的な企業ではすでに試験的に採用を始めている。本稿ではサーバーレスアーキテクチャとは何か、どんな効果が期待できるのかを実際にAWSのLambdaを用いたPoC検証の結果を元に紹介していく。


1. サーバーレスアーキテクチャの定義

おそらく残念ながら(執筆時点では)サーバーレスアーキテクチャの明確な定義は存在しない。クラウドといえばまず頭に浮かぶのがSalesforce等のSaaSである。SaaSでは、アプリケーションを含むインフラ管理のほとんどが不要である。当然アプリケーションの初期設定は必要となるが、利用者は業務に集中することができる。一方、企業向けアプリケーションの実行環境として広く使われているのが仮想HW環境をサービス提供するIaaSである。IaaSでは、ファシリティ、ネットワーク、ハードウェア、ハイパーバイザはクラウド事業者側で管理されているが、仮想HW上のOS、ミドルウェア、データ、アプリケーションの管理責任は利用者側にある。データベースサービス、 メッセージングサービスなどのPaaSでは、OS、ミドルウェアまではクラウド事業者で管理されているが、処理量に応じたサーバー数の増減、メモリー設定のチューニングなどインフラ運用がなくなるわけではない。

では、サーバーレスアーキテクチャとはどのようなものであるか。サーバーレスとはいってもサーバーが不要なわけではなく、サーバーの管理が不要(クラウド提供者によって管理されている)ということである。利用者はアプリケーションやデータを配置するだけでよく、サーバーを意識する必要はない。課金の仕組みもサーバー台数や稼働時間によるものではなく、実際に処理に要した時間やトランザクション数、データ容量で課金される。一概には言えないが、散発的なトランザクション処理においてはIaaSのサーバー利用料金よりかなり低くなることが多い。AWSにおけるサーバーレスアーキテクチャとは、このようなサーバーレスなサービス群を組み合わせてアプリケーションを実行する環境を指す。本稿では、サーバーインフラを全く意識(管理・運用)する必要のないフルマネージドサービスを組み合わせたシステムを、サーバーレスアーキテクチャと定義することとした。


2. AWSのクラウドサービス

本題に入る前にAWSの代表的なサービスをインフラ管理の面から分類してみた。

(ア)IaaSに代表される仮想HW提供サービス

①EC2(Elastic Computing Cloud)

仮想HWを提供するAWSの代表的なサービス。
インスタンス(CPU、メモリー)、EBS(ストレージ)、セキュリティグループ(ファイアウォール)、EIP(公開IP)等で構成され、Intelアーキテクチャのもと、幅広いOSに対応している。
利用者は、各構成要素について設計、設定する必要がある。
また、OSやミドルウェアの運用は利用者で行う必要があり、セキュリティパッチやアップデートなど通常のサーバーOSと同様なインフラ運用が必要となる。

(イ)PaaSに分類されるもの

マネージドサービスに分類されるが、CPU性能、メモリーサイズ、DISK容量などインフラ環境の管理・運用が必要となる。

①RDS(Relational Data Base Service)

Oracle、MySQL、MS SQLServerなどのデータベースを提供するサービス。
利用者は、サーバーのタイプ(メモリー、CPU数)、DISK容量、DISKのタイプ(SSD、Magnetic)などのインフラ設定と、データベースシステムの設定パラメータ(バッファサイズ、文字コードなど)を設定、管理する必要がある。ログのアーカイブ、定期バックアップ、リカバリ、障害時のフェールオーバなどの管理機能は提供される。

②ECS(EC2Container Service)

Dockerコンテナを実行するための実行環境及びクラスタの管理サービス。
利用者は、CPUユニット数、メモリー制限などを設定する必要がある。コンテナのデプロイや、クラスタの維持などの管理機能は提供される。

(ウ)サーバーレスに分類されるもの

一般的にはアプリケーション実行プラットフォームを指すことが多いが、フルマネージドなデータストアサービスもここに分類した。

①Lambda

AWSのサーバーレスアーキテクチャの中心的な存在。イベントドリブンなアプリケーション実行基盤。実行言語はJava、C#、JavaScript (Node.js)、Pythonをサポートしている。利用者は、処理に必要なメモリーサイズを指定する。CPU処理能力はメモリーサイズに比例する。簡易なバージョン管理機能を備えているので、ステージング環境も容易に利用できる。

②API Gateway

LambdaやAWSのサービスAPIをREST(Web Service)で公開するためのゲートウェイサービス。
利用者は、簡単なインタフェースマッピング(REST JSONフォーマットとバックエンドI/Fのマッピング)と、認証ポリシーを指定するだけで、APIをインターネットへ公開することができる。リソース制御機能で、トランザクションレートやクオータを制限できる。
APIキャッシュ機能で、同一リクエストのバックエンドへの負荷を軽減する機能もある。

③DynamoDB

フルマネージド型のNo-SQLデータベース。
利用者は、テーブルの作成の読み書きのスループットを指定するだけで、自動的にプロビジョニングされる。指定したスループットに応じ課金される。

④Kinesis

非常に多数の同時接続(センサーデバイスなど)からのデータをシャードというストリーミングキューへ収集し、連続的に処理を行うためのデータストア基盤。
実際のデータ処理にはLambdaなどが用いられる。




記事は週に1回、追加で公開して参ります。
今すぐ全文をご覧になりたい方は、こちらから。(簡易登録が必要となります)

よくある質問

全般について

契約について

料金/
支払いについて

お問い合わせ・無料診断はこちら

お電話
03-6667-8049 受付時間(平日)9:00~17:30
メールフォーム
お問い合わせ

関連記事

  • Amazon Web Servicesにおける 監視・監査の管理手法