134 Views
March 28, 25
スライド概要
レガシーをサーバレス化で大勝利したかった話 クラウドLT大会 vol.9
INDE X 1. 自己紹介 2. 発表概要 3. レガシーシステムについて 4. リアーキテクチャ 5. 落とし穴 6. まとめ / 今後の展望 7. 最後に ©TOPPAN Digital Inc. 2
自己紹介 ©TOPPAN Digital Inc. 3
自己紹介 名前: 加納 広太(かのう こうた) 加納 広太 所属: TOPPANデジタル ICT開発センター DXソリューション開発部 役割: 1 自社IoTソリューションの開発 組み込みデバイス / Webアプリ(backend) / インフラ 2 webアプリ/インフラのアーキテクチャ検討・実装など 資格: 【公式】TOPPANデジタル|ICT開発センター (@toppan_dxd_ict) on X ©TOPPAN Digital Inc. 4
発表概要 ©TOPPAN Digital Inc. 5
発表概要 サーバレス化奮闘記 AWSサービスの紹介 アーキテクチャの詳細な説明 ©TOPPAN Digital Inc. 6
レガシーシステムについて ©TOPPAN Digital Inc. 7
レガシーシステムについて タスク処理コンポーネント 2 1 Web EC2 用途:Webアプリ 3 SQS 5 4 振り分けEC2 用途:自前 Load balancer Autoscaler タスクEC2 用途:タスク処理API 1. ユーザーがwebアプリからタスク処理を依頼 2. WebEC2がタスクの内容をSQSにpush 3. 振り分けEC2がタスク内容をSQSからpop 4. 振り分けEC2がタスクEC2にタスク処理を依頼し、結果を取得 5. 振り分けEC2がSQSに処理結果をpush ©TOPPAN Digital Inc. 8
レガシーシステムについて 要求:タスク処理コンポーネントの費用が高すぎ、とにかく安くしたい! タスク処理コンポーネント Web EC2 用途:Webアプリ SQS 1 振り分けEC2 用途:自前 Load balancer Autoscaler 2 タスクEC2 用途:タスク処理API 問題点 1. 振り分けのロジックを自前実装しているため、実行環境の更新などが定期的に必要になる 振り分けEC2自体にもコストが掛かる 2. 振り分けEC2のAutoscalingロジックの都合で、使用されていなくても一定台数は起動してしまいコストが高い ©TOPPAN Digital Inc. 9
レガシーシステムについて タスク処理コンポーネント Web EC2 用途:Webアプリ SQS 振り分けEC2 用途:自前 Load balancer Autoscaler タスクEC2 用途:タスク処理API 基本的にはEC2が常時起動しているのがコスト増の原因 未使用時のコスト削減のためサーバレス化を検討! ©TOPPAN Digital Inc. 10
リアーキテクチャ ©TOPPAN Digital Inc. 11
リアーキテクチャ タスク処理コンポーネント AWS Step Functions workflow 1 2 3 4 タスク処理ECS Web EC2 用途:Webアプリ SQS EventBridge Pipes 5 1. ユーザーがwebアプリからタスク処理を依頼 2. WebEC2がタスクの内容をSQSにpush 3. EventBridge Pipesがタスク内容をSQSからpop 4. EventBridge PipesがStepFunctionsを起動し、ECS(タスク処理API)を実行 5. ECSがSQSに処理結果をpush ©TOPPAN Digital Inc. 12
リアーキテクチャ タスク処理コンポーネント AWS Step Functions workflow Web EC2 用途:Webアプリ SQS タスク処理ECS EventBridge Pipes ■各サービスを選定した理由 SQS: 既存のWebの構成をなるべく変更したくなかったため、SQSを軸に検討 EventBridge Pipes: SQSとStep Functionsの統合をサーバレスで実現するのに最適なため Step Functions: ECSタスクのエラーやスロットリング対応のため ECS: EC2で稼働していたタスク処理APIを置き換えるため ※15分以上の稼働必要なためLambda不可 ©TOPPAN Digital Inc. 13
リアーキテクチャ 実装したフローが導通したときの気持ち ©TOPPAN Digital Inc. 14
リアーキテクチャ と思ったのも束の間。。。 ©TOPPAN Digital Inc. 15
落とし穴 ©TOPPAN Digital Inc. 16
落とし穴 突然ですが、みなさんはAWS SQSの「一時キュー(仮想キュー)」はご存知でしょうか。 Amazon SQS一時キュー - Amazon Simple Queue Serviceによれば、 仮想キューは、Temporary Queue Client が作成するローカルデータ構造です。 仮想キューを使用すると、トラフィックの少ない複数の宛先を単一のAmazon SQSキューに結合できま す。(中略) 一時キューの最も一般的な使用例は、リクエスト-レスポンスメッセージングパターンです。 このパターンでは、要求者が各レスポンスメッセージを受信するための一時キューを作成します。 SQSを同期的(リクエスト-レスポンスパターン)に利用することができるようになる仕組み 一時キューを利用するためには、リクエスト側とレスポンス側の両方でロジックの実装が必要 ©TOPPAN Digital Inc. 17
落とし穴 実は元実装のSQSは一時キューなるものとして利用されていた タスク処理コンポーネント Requester 一時キュー Responder Web EC2 用途:Webアプリ SQS 振り分けEC2 用途:自前 Load balancer Autoscaler タスクEC2 用途:タスク処理API ロジックが必要なため 単純に振り分けEC2部分をEventBridge Pipesなどに置き換えることは不可能… とほほ… ©TOPPAN Digital Inc. 18
まとめ / 今後の展望 ©TOPPAN Digital Inc. 19
まとめ / 今後の展望 Good ・サーバレス実装の知見を得ることができた ・タスクEC2 → タスクECS での稼働を確認することができた ・一時キュー!そういうのもあるのか Motto ・そもそも最初から一時キューが使用されていると知っておくべきだった ・動作確認は実施したが、各リソースの作り込み(エラー処理、 二重実行の抑制など)についてはまだまだこれから ©TOPPAN Digital Inc. 20
まとめ / 今後の展望 パターン1 サーバーレス化の検討を継続する パターン2 振り分けEC2の機能を一部オミットして利用する タスク処理コンポーネント Requester Web EC2 用途:Webアプリ Responder SQS 振り分けEC2 タスク処理ECS 基本的にはパターン1で進めつつ、難しければ どこかのタイミングでパターン2への切り替えを検討 ©TOPPAN Digital Inc. 21
最後に ©TOPPAN Digital Inc. 22
5. 最後に メンバーを積極的に募集中です! 気軽にドアノックしてみてください! ©TOPPAN Digital Inc. 23
ご清聴ありがとうございました