「システムのクラウド化」「クラウドサービスの利用」は今やシステム導入の前提ともいえる状況となっています。
弊社でも、Travel WINSのインフラ環境をAmazonWebService(以下、AWS)に構築して提供するなど、クラウド化に取り組んでまいりました。
一方で、「クラウドサービス」「サーバーレスアーキテクチャ」「AIサービス」などを活用して
新たなサービスを生み出そうとチャレンジをしていますが、それぞれの概念を実感としてつかみきれてない感があるのも事実です。
そこで、実際に手を動かして実感をつかみながら、そのプロセスを記事として公開していくことで、弊社サイトを訪れてくださる方々にも楽しんでいただければと考えて当記事を掲載することといたしました。
- クラウドサービス
- サーバーレスアーキテクチャ
- AIサービスの活用
といった内容について、体験記的にそしてAWS構築の備忘的に連載形式で掲載をしていきます。
第1回はクライドサービスやサーバーレスなどの説明とサンプルプログラム(サービス)の概要をご説明したいと思います。
クラウドサービス
クラウドサービス事業者といえば、AWS,Microsoft AZURE,Google Cloud Platform(GCP)が有名ですが、弊社では主にAWSを使ってTravel WINS環境やホームページ環境を提供しておりますので、この連載もAWS上に構築をしていくことといたします。
AWSを活用した仮想デスクトップサービスについては過去の記事もぜひご覧ください。
https://www.next-v.com/Blog/Detail/15012
サーバーレスアーキテクチャ
サーバーレスアーキテクチャは、クラウドサービスがサーバの管理やスケーリングを自動的に行うことで、開発者がインフラストラクチャの運用管理に関心を持たなくても良いというコンセプトを指します。言い換えれば、アプリケーションやサービスを開発する際、サーバーやインフラの管理を気にせず、コードの開発やビジネスロジックに集中することができます。
コスト面においても、インフラ資産を持たないで済むため初期投資を最小限に抑えることができるだけでなく、償却期間もありませんので、システムが不要になったときにはすぐに廃棄ができるというメリットもあります。
AWSのサーバーレスサービスを例に、具体的なサーバーレスアーキテクチャを使った構築例を挙げてみます。
AWSの代表的なサーバーレスサービス例
Amazon Web Services (AWS) は、多岐にわたるサーバーレスのサービスを提供しており、以下のようなサービスがその代表例として挙げられます。
- AWS Lambda: サーバーレスコンピューティングサービスであり、コードを実行するだけの仮想環境を提供します。要求に応じて自動的にスケーリングし、実行回数にのみ課金される特徴があります。
- Amazon API Gateway: サーバーレスでAPIを作成、公開、および管理するためのサービスです。API Gatewayは、トラフィックのピーク時でも安定したパフォーマンスを保つように自動スケーリングを行います。
- Amazon DynamoDB: サーバーレスのNoSQLデータベースサービスで、高い耐久性と無限のスケーラビリティを持っています。
- Amazon S3: サーバーレスなオブジェクトストレージサービスで、Webアプリケーションやバックアップ、アーカイブなどの大量のデータを保存、取得するのに適しています。
- AWS Step Functions: サーバーレスワークフローの自動化サービスで、複数のAWSサービスを組み合わせて、複雑な処理やタスクの連携を自動化できます。
AWSサービスを使ったサーバーレスWebアプリケーションの具体例
- フロントエンド: 静的なウェブページやアセットはAmazon S3でホスティングされます。これにより、高速かつスケーラブルなウェブページの提供が可能となります。
- バックエンド: API Gatewayを使用してRESTful APIを公開します。これにより、フロントエンドからのリクエストを適切にルーティングし、適切なLambda関数を呼び出すことができます。
- 処理: Lambda関数は、バックエンドのロジックを担当します。例えば、データベースからのデータ取得やデータの更新などの処理を行います。
- データストレージ: DynamoDBを使用して、ユーザーのデータやアプリケーションの状態を保存します。
このように、AWSのサーバーレスアーキテクチャを使用することで、簡単にスケーラブルかつメンテナンスが容易なWebアプリケーションを構築することができます。
弊社での実用例
Travel WINSのカスタマイズ機能の一部として、以下のようなサービスの活用実績があります。
- AWS Lambda:バッチの実行環境をAWS Lambda、実行のトリガーをEvent Brigdeを使って構築運用。
- Amazon S3:ログの出力先として使用するだけでなく、外部連携データの受け渡しに使用する機能も提供しています。
AWSのAIサービス
AWSは様々なAIサービスを提供しており、これらのサービスはサーバーレスアーキテクチャとの組み合わせで、効率的かつ迅速なAIソリューションの構築提供を実現することができます。
サーバーレスの特性がAIプロジェクトの迅速な試行錯誤やスケーリングのニーズに特に適しており、組み合わせの相性は非常に良いです。
以下は、AWSのAIサービスとサーバーレスの相性の良さを示す例です。
- Amazon Rekognition: 画像やビデオの分析を行うサービスです。ユーザーは、独自のサーバーやインフラストラクチャを用意することなく、APIを通じて高度な画像解析機能を活用できます。サーバーレスアーキテクチャと組み合わせることで、例えばAWS Lambdaを使用してS3にアップロードされた画像を自動的に解析させるといった処理が容易に実装できます。
- Amazon Polly: テキストを自然な音声に変換するサービスです。このサービスもAPI経由でアクセス可能であり、AWS Lambdaなどのサーバーレスコンポーネントと組み合わせて、動的に音声応答を生成するアプリケーションを構築できます。
- Amazon Comprehend: 自然言語処理を利用してテキストを解析するサービスです。ユーザーの入力テキストをリアルタイムで解析し、感情やキーフレーズ、エンティティを抽出する場合、API GatewayとAWS Lambdaを使用してサーバーレスなエンドポイントを作成することで、低レイテンシでのレスポンスが可能となります。
- Amazon Lex: チャットボットの構築をサポートするサービスです。サーバーレスアーキテクチャと組み合わせることで、特定のユーザーのリクエストに動的に応答するチャットボットを簡単にデプロイできます。
これらのAIサービスは、サーバーやインフラの管理なしに、即座にAIの能力を取り入れることができます。
サーバーレスアーキテクチャとの組み合わせにより、スケーラビリティ、コスト効率、開発の迅速性などのメリットを最大限に活用することができます。
連載で構築するサンプルモデル
上記のように、クラウドはさまざまなサービスが存在し、今もなお増え続けております。
これらのサービスは提供する機能は異なるものの、原則的な構造としては共通していると言えます。
この連載で作成するサンプルでは主に以下のサービスを使用し、ブラウザからテキストを入力すると、AIが文書解析をして結果を返してくる仕組みを作ります。
- Amazon S3
- AWS Lambda
- API Gateway
- Amazon Comprehend
※製作を進めるなかで、これら以外のサービスを組み込んでいく可能もありますが、現時点ではこれらを使用することとしています。
概要図
内容
全体を通してサーバーやOSが登場しない構成となっています。
フロントエンドはAmazon S3に静的WEBページをホスティングし、API Gatewayを介してAWS Lambdaを呼び出してプログラムを実行します。AWS Lambdaから実行されるのはAIサービス「Amazon Comprehend」です。
次回はAmazon S3をつかった静的WEBページホスティングについて記載してきます。
以上