Upgrade to Pro — share decks privately, control downloads, hide ads and more …

脱Kubernetesに向けたステートフルなLambda+Auroraアプリの実現可能性検証結果 / The feasibility verification of the stateful application (Lambda+Aurora) for de-Kubernetes

脱Kubernetesに向けたステートフルなLambda+Auroraアプリの実現可能性検証結果 / The feasibility verification of the stateful application (Lambda+Aurora) for de-Kubernetes

三菱UFJインフォメーションテクノロジー株式会社の研究活動として、Kubernetesのライセンス費用削減に向けてLambda+Provisioned Concurrency + RDS Proxy + Aurora (PostgreSQL)構成への引っ越しを検討した際の発表資料です。

More Decks by 三菱UFJインフォメーションテクノロジー株式会社

Other Decks in Technology

Transcript

  1. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    脱Kubernetesに向けた ステートフルなLambda+Aurora アプリの実現可能性検証結果 デジタルプロデュース部
  2. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    MUITってどんな会社? 三菱UFJ銀行、並びにMUFGグループ各社の IT・デジタル戦略を先導する、「金融×IT」のプロフェッショナル集団 三菱UFJインフォメーションテクノロジー(MUIT) 2
  3. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    なぜLambdaでステートフルアプリなのか? ①ステートフルアプリがアンチパターンでは無くなって来た ◼ サーバレスとは、これまでは状態を保持しないステートレスアプリケーションやバッチ処理で使用されるものだった。 ◼ しかしながら近年は以下のような「状態を保持する機能」が多数追加され、処理時間が短縮された。 Aurora PostgreSQL Primary RDS Proxy Aurora PostgreSQL Replica API Gateway Lambda LambdaVPC Hyperplane ENI (2)あらかじめNICを作成しておく事で、 都度作成していたENIの作成時間 十数秒程度が不要に。 (1)あらかじめLambdaインスタンスを 任意の数起動しておく事が可能に。 アプリの立ち上げ時間を隠蔽。 (3)DBコネクションを維持するため DB接続時間が短縮。 Javaで開発したWebアプリケー ションを稼働させ、DB読み書き まで含めたオンライン処理の性 能を検証 (SpringBoot、 Thymeleaf、JPAを使用) 3
  4. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    なぜLambdaでステートフルアプリなのか? ①ステートフルアプリがアンチパターンでは無くなって来た これまで 4 これから 画面遷移毎に ENI作成したり Java立ち上げた りするのでちょっ と待ってね 画面遷移毎に JDBCコネク ション確立する のでちょっと 待ってね 20秒など 複数画面遷移も サクサク! JDBCコネクショ ン既に貼ってあり ます 既に起動済みです 人間がリアルタ イムに操作する Webアプリケー ションでは使い づらい! 時間軸 時間軸 Lambda Aurora Lambda Aurora
  5. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    ②取引量にフィットした課金になるため、経費削減が期待できる なぜLambdaでステートフルアプリなのか? Kubernetesの場合 ピーク時に合わせて 面で固定料金がかかる。 取引量+α分のリソースのみ 課金される。 Lambdaの場合 料金/秒 料金/秒 時間軸 Kubernetes ライセンス料金 EC2料金 EC2料金 EC2料金 時間軸 経費削減領域 取引量曲線 ※若干当社事情あり 5
  6. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    検証結果と見えて来た課題 5.49 0.10 0.11 0.14 0.14 0.12 0.12 0.15 0.11 0.12 0.11 0.12 0.0 2.0 4.0 6.0 1 2 3 4 5 6 7 8 9 10 11 12 応答時間 [秒] リクエストNo リクエストNoに対する処理時間 初回リクエスト処理に時間がかかる JavaVMやSpringBoot自体の立ち上げはhttpリクエストが来る前に完了 しているが「初回リクエストの受信時に初めて動く処理」が数多く存在。 大量リクエストを問題無く処理完了 httpリクエストを滞留させる事なく処理できており、 処理スループットとしては問題なし。 料金/秒 時間軸 取引量曲線 この階段のたびに初回リ クエスト処理待ちが発生 してしまう。 6
  7. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    14.18 秒 5.50 秒 2.43 秒 1.24 秒 0.56 秒 0.00 秒 2.00 秒 4.00 秒 6.00 秒 8.00 秒 10.00 秒 12.00 秒 14.00 秒 16.00 秒 初回httpリクエストの処理時間の短縮 7 工夫なし Provisioned Concurrency + RDS Proxy 目標処理時間 工夫なし Provisioned Concurrency + RDS Proxy + Spring Native Java(SpringBoot) Node.js Provisioned Concurrency + RDS Proxy SpringNativeでJavaプログ ラムのネイティブコード化を 組み合わせ、目標達成
  8. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    既存システムの要件を元にしたコスト比較 8 ◼ ネットワーク通信料やAuroraの費用など、KubernetesとLambdaのどちらであってもかかる費用は含めていない。 ◼ ピーク日の取引量が毎日継続する、最大同時ログイン数だけ常にProvisionedConcurrencyでLambdaインスタンスを 起動しておくなどLambdaに不利な形で前提を置いた上で見積もり。 Lambda+ ProvisionedConcurrency+ RDS Proxy+Spring Native Kubernetes 料金を約75%削減
  9. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    No オペレーション名 Kubernetes上のコンテナの場合 Lambda+SpringNativeの場合 1 コーディング /単体テスト Eclipse等で開発し、JUnitでテスト。 2 ビルド あらかじめDockerfileにどのjarを取り込むか などを書いておき、Dockerイメージをビル ド あらかじめtemplate.ymlにどの実行ファイルを取 り込むかなどを書いておき、sam buildコマンド でzipファイルを作成。 4 デプロイ ローカル開発環境のコンテナを開発環境 DockerレジストリにPushし、申請を行う事 で本番Kubernetesクラスターへデプロイ。 ビルドしたzipファイルを本番環境に転送し、S3 にアップロード。その後、AWS CLIコマンド等で Lambda関数のバージョンを書き換え。 5 ログ出力方法 標準出力→Cloud Watch Logs→行内運用監視システム 6 リモートログイン (SSH等) 可能 技術的に不可能 (Lambdaの制約) 7 リモートデバッグ (Java Flight Recorder等) 可能 技術的に不可能 (Lambdaの制約) 8 HeapDumpの出力 Persistent Volumeを紐付ければ可能。 技術的に不可能。 (SpringNativeの制約) 開発プロセス等の比較、制約事項 9 本番環境での障害解析データの 出力に頼るのでは無く、ローカ ル開発環境で再現し原因を探る アプローチとなる。
  10. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    ◼ SpringBootベースのオンラインアプリケーションは、Kubernetesを使わず ともLambda+Auroraで十分稼働させる事ができそう。 ◼ Lambdaに不利な条件で見積もったとしても75%のコスト削減。 ◼ 開発方法はコンテナと同じような流れであるが、Lambdaに対するリモート デバッグ不可など制約を認識した上で使用する必要あり。 まとめ 10 ※LT資料であるためセッション管理の実現方法や、SpringNativeの制約等の情報は割愛
  11. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    ◼ MUITにはスキルを高める事ができる様々な開発案件、ロールがあります。 ◼ キャリア採用は随時募集中ですので、ご興味を持たれましたらお気軽にコンタクト下さい。 http://www.it.mufg.jp/recruiting/ 三菱UFJインフォメーションテクノロジーに興味を持った方へ 11 UXデザイナー UIに関する知見をもと に、システムのユーザ ビリティを向上させ、 UIデザインも含めた高 品質のUXを提供 テクニカルリード 高度な技術力、創造 的・革新的な志向、 リーダーシップ等を活 かして、組織全体のIT をリード ビジネスデザイナー 多岐にわたる関係者の橋渡 しをし、複雑なビジネス要 求を実現可能なソリュー ションへと落とし込む ITスペシャリスト 専門技術領域に関する 広く深い知見と技術力 を活かし、難易度の高 い課題を解決 PMエキスパート PM関連知識等をもとに、 立上げ・計画・設計・ 実行・監視・終結等の 各プロセスをコント ロール アーキテクト 組織のビジネス戦略に 対する最適なシステ ム・サービス群を根本 から企画・提案・計画 etc. 技術力
  12. Copyright(C) 2021 Mitsubishi UFJ Information Technology Ltd. All rights reserved.

    ◼ 本プレゼンテーションにより、視聴者と三菱UFJインフォメーションテクノロジー株式会社の間には何ら委任 その他の契約関係が発生するものではなく、当社が一切法的な義務・責任を負うものではありません。 ◼ 本資料は信頼できると考えられる各種データに基づいて作成されていますが、当社はその正確性、完全性 を保証するものではありません。ここに示したすべての内容は、当社の現時点での判断を示しているに過ぎ ません。 ◼ また、本資料に関連して生じた一切の損害については、当社は責任を負いません。その他専門的知識に係 る問題については、必ず貴社の弁護士、税理士、公認会計士等の専門家にご相談の上ご確認下さい。 12