開発チームの時間を節約する
サーバレスアーキテクチャの長所と短所 コンテナとの違いは?
サーバレスのトレンドは開発者にメリットをもたらす可能性がある。だがトレードオフは必要だ。サーバレスコンピューティングには開発者が理解すべき側面がたくさんある。
サーバレスという用語はさまざまな議論を呼んでいる。その正確な意味が求められている。モノリシックアーキテクチャから分散型アーキテクチャへと移行してきた開発者にとって、サーバレスはどのように役立つ可能性があるのだろう。またコンテナ化アーキテクチャとサーバレスアーキテクチャとのメリットの差も紛らわしい。どちらのアーキテクチャもアプリケーションを管理する最新アプローチだ。また、それぞれ独自のメリットもある。
コンテナアーキテクチャとサーバレスアーキテクチャの違いを理解する最善の方法は、それぞれの開発者コミュニティーを見てみることだ。「Docker」コンテナアプローチに関するドキュメントの多くは、インフラの管理方法にまつわる問題を取り上げている。そのツールは、基盤となるハードウェアや仮想マシンの管理が容易になるよう設計されている。また複数のサーバや「Amazon Web Services」(AWS)のインスタンス間にコンテナを分散させるツールもある。一方、サーバレスフレームワークやそのアクティビティーに取り組むサーバレスコミュニティー内のドキュメントは、サーバレスアプリケーションの構築を重視する傾向がある。
基本的に、サーバレスは開発者がコードの作成に専念できるようにするものだ。サーバはスタックのどこかに依然存在する。だが開発者はこうした基盤リソースの管理を意識する必要がない。AWSの「Amazon Elastic Compute Cloud(EC2)」のようなサービスでは、OSとアプリケーションのリソースをプロビジョニングする必要がある。一方、サーバレスアーキテクチャでは、機能を1回利用するのに必要なリソース量のみが問われる。例えば、あるWebテストスイートでは1つのWebサイト用に128MBのRAMが必要だとする。このWebサイトの機能のコピーを1000万件導入するとしても、個々の機能で必要なのは128MBのみだ。コピー全てを同時に実行することさえできる。サーバレスでは個々の要求に必要なものが重視され、その後スケール変換が自動的に行われる。
併せて読みたいお薦めの記事
コンテナとサーバレスを比較
クラウドサービスのサーバレス機能を比べる
サーバレス導入へのアプローチ
サーバレス導入には複数の異なるアプローチがある。「Flask」「Rails」「Express」といった従来のフレームワークから移行する開発者のほとんどは、サーバレスフレームワークを選ぶかもしれない。サーバレスフレームワークには「Python」用の「Chalice」や「Node.js」用の「Serverless」などがある。これらのフレームワークは従来のものと似ている。そのため、こうした開発者にとっては移行しやすい。
残念ながら、単一フレームワークによるアプローチは規模と複雑さに限りがある。そのため、従来型のモノリシックアプリケーションを構築する開発者がそのアプリをサーバレスに移行しようとすると、即座に問題に突き当たることになるだろう。例えば、1つの「AWS Lambda」関数に対する上限はわずか50MB程度だ。このサイズは大きく感じられるかもしれない。だが、これには導入時に組み込まなければならないサードパーティーの依存関係も全て含まれる。
「AWS CloudFormation」を使用すると、APIの複雑さに限界があることも分かるだろう。従ってエンドポイントや操作が多くなり過ぎた場合は、APIの分割が必要になる。さらに、モノリシックサービスと同じ問題点が全て当てはまる。そのためアップグレードと管理が難しくなり、環境の単一障害点になる。ただし機能が1つなら、コールドスタートには比較的簡単に対処できる。
マイクロサービスはサーバレス導入とは異なるアプローチだ。この場合もフレームワークは使用できる。だがAPIを複数のマイクロサービスに分割することになる。このアプローチでは、AWS Lambdaの呼び出しにより通信を行うプライベートパッケージを介してサービス間でコードを共有できる。企業がメールマーケティングシステムを運営しているシナリオについて考えてみよう。このシステムは複数の異なるマイクロサービスから構成されている。そのアプリケーションは「Amazon CloudFront」からホストされる。このアプリケーションでは、1つのサービスを使用してユーザーがテンプレートを構築できる。また、別のサービスを使ってユーザーが受信者を選択し、実際にメールを送信する3つ目のサービスも選択できるようにする。これらの各サービスも別々のマイクロサービスに分割されている。メールサービスではまず1つの機能で受信者リストを構築する。次に、メールテンプレートと受信者リストを一緒に別の機能に渡す。その機能は渡された受信者リストを分割したら、メール送信を行う3つ目の機能に各受信者とメールを渡す。
サーバレス機能同士は連携することが多い。これはよくあるパターンで、5分の実行時間制限と50MBのサイズ制限を緩和できる可能性がある。このメールマーケティングシステムの例では、受信者リストの構築を担当する最初の機能では、「Amazon DynamoDB」にアクセスできる必要がある。それにより受信者を取得する。だがメールテンプレートを処理したり実際にメールメッセージを送信したりするためのコードが実装されている必要はない。
実際にメールを送信する最後の機能ではAmazon DynamoDBへのアクセスは不要だ。それでも、入力データからテンプレートを構築する方法は把握していなければならない。だが、最も重要なのは、これらのいずれの機能もAWSの「Amazon API Gateway」を介して公開する必要がないことだ。代わりに、個別のサービスを通じて処理される。これらのサービスは単純にユーザーの要求を受け取り、認証してから、AWS Lambda呼び出し経由でメールスタックに直接渡すことになる。
前述したメールのような相互接続型の複雑なサービスの場合、開発者はLambda関数を手動で接続する代わりに「AWS Step Functions」を使用できる。これによりエラー調整用の追加サポートが組み込まれ、さらに多くの再試行ロジックが追加される。また、状態と、機能間でのデータ転送を自動的に処理できるようにもなる。各機能が完全に分離されているのは変わらないが、全ての状態と遷移がAWSによって処理される。
サーバレスアーキテクチャをデバッグするツール
従来なら、開発者は単純にシステムにログインしてアプリケーションを実行し、ログを追跡して、入力をテストすることでデバッグできた。サーバレスアーキテクチャではログインするサーバが存在しない。そのためローカルでの実行は大幅に複雑になり得る。「Serverless Offline」や「SAM Local」など、一部のAWSプラグインでは、大半のアプリケーションをオフラインで実行するためのサポートが用意されている。だが別のリポジトリで認証手順が行われる場合、これらはあまり適切に機能しない。複数の機能を連携させる必要がある場合も同様だ。開発者は開発とテスト用の独自のスタックを実行してから、開発用AWSアカウントに変更をプッシュしなければならないことが多い。
開発者と運用チームによるアプリケーションの問題特定を支援できるツールは複数ある。これらはパフォーマンスの問題を見つけ出すのにも役立つ。「AWS X-Ray」は、AWSのその他の呼び出しに関する問題を自動的に追跡できる。ほとんどのアプリケーションではわずか数行のコードでAWS X-Rayが有効になる。その後、ネットワーク図を表示して問題を指摘できる。例えばAmazon DynamoDBテーブルでプロビジョニングされるスループットや、AWS Lambdaの並列処理制限などに伴う問題などだ。AWS Lambdaアプリケーション内での標準エラーと出力の両方をもとにしたコンソールログは、「Amazon CloudWatch Logs」に転送される。これは同社の「Amazon Elasticsearch」インスタンスに取り込むか、APIまたはAWSマネジメントコンソールから直接操作できる。
サーバレス追跡を支援するサードパーティー製ツールやサービスもある。IOpipeの「IOpipe」やNew Relicの「New Relic」などである。またAmazon API Gatewayのような他のAWSサービスからログを取得する場合もある。こうしたログには問題をデバッグする際に大いに役立つ情報が含まれている。サービスを積極的に監視する作業はより複雑になる。Pingdomの「Pingdom」などの従来の監視ツールでは機能をテストする方法が提供されない。これらのツールではAPIエンドポイントのみがテストされる。そのため、従来のインフラ監視システムを使う場合、テストの実行と、API経由でのこれらの機能を公開するツールを開発者が構築しなければならない。
サーバレスのトレードオフ
全体的に見て、サーバレスによって開発チームは製品や企業の生産活動にもっと専念できるようになる。だがテストや監視に対応するため多くの計画が必要になる。サーバレスの使用を予定している企業では最初にプロジェクトマップを作成すべきだ。それがあれば、API要求の処理にマイクロサービスアーキテクチャを使用するか、単一機能のルーターを利用するかを判断する際に役立つ。正しく実行すれば、サーバレスアーキテクチャによって新機能の導入時に開発チームの時間を節約できる。また、ほぼ無制限に拡張することが可能だ。だが、事前計画を省略して警戒を怠ったなら、さらなる問題を引き起こす恐れがある。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
2
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
3
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
4
221人調査で分かった「情シス最大のストレス」は?
-
5
「データストレージの活用方法」に関するアンケート
-
6
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
7
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
-
8
本当に安いPCで十分か? “すぐ重くなる”を防ぐノートPC選びの絶対条件
-
9
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
10
Claudeの不可視透かしに批判殺到 著作権消失や誤判定に潜む企業リスク
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー