JAWS PANKRATION 2021の登壇資料の日本語版です。
Lambdaでサーバレス化した時に考慮し忘れちゃったことJAWS-UG 金沢松田 康宏
View Slide
自己紹介私は金沢市にある印刷会社のインフラエンジニアとして2020年まで勤務し、AWSを利用したインフラの概念検証を担当2021年1月よりイースト株式会社に転職JAWS-UG金沢に2018年より参加し、コアメンバーとして活動ファイナンシャルプランナー (AFP)趣味はランニング、ボウリング、家庭菜園#jawsug_kanazawa
#jawsug_kanazawa
金沢支部の紹介1ヶ月ごとに勉強会を行なっており、AWSに興味ある方、より一層活用したい方、使っている仲間を見つけたい方に是非とも参加いただきたいです#jawsug_kanazawa2019年にAWS Community Day Kanazawaを開催し、120名以上の方にお集まりいただきました
本日のゴール・手軽にサーバレスを実現できるLambdaにおける落とし穴と対応策を理解する・Lambdaのコールドスタートとスロットリングについて理解する
本日お話すること・サーバレス化した概要についてです・サーバレスに移行した際の落とし穴・どうすればよかったのか?
サービス内容の紹介・DONGRIという辞書アプリをイースト株式会社では提供しており、各種辞典、用語集など幅広いラインナップから利用ができます・iOS, Android, Windows版を提供し、複数のディバイスを通して辞書が利用できることが特徴で、オンラインだけでなくオフラインでも利用できます
システム面での特徴・主に学校と自宅で利用されることが多い・平日日中時間帯と夜間に利用が多い・特に日中時間帯は授業で一斉に利用されることが多く、瞬間的なピークが発生しやすい
移行前のアーキテクチャ複数のEC2をロードバランサ―に接続し負荷分散を行うシンプルな構成
旧アーキテクチャが抱えていた課題・拡張性がなく、冗長構成を維持するためのコストが高止まり・ap-northeast-1bのみにインスタンスが構築されており、アベイラビリティーゾーン障害時にサービス停止となる可能性・Windows Serverをベースにしたシステムで保守コストが高い・EC2内にある独自データベースを保守することが困難
更新後のアーキテクチャLambdaとDocumentDBを使った構成スケーリングできるようにするとともにマネージドサービスに移行することで保守コストを押さえられた移行途中のため、DocumentDBに移行されていない辞書については従来のシステムにリクエストを転送し、検索を行っている
何が起こったか?負荷テストを行っていたところ、502エラーが発生デフォルト1000となっている同時実行数を超えたことが原因
同時実行数の緩和申請アカウントの同時実行数を1000→5000に緩和申請して問題を解決したつもりでした
しかし…再度負荷テストを実施したところ、異なるエラーが発生辞書の検索アルゴリズムが原因でスロットリングが発生していたことがわかる
スロットリングについて
どうすればよかったのか?・処理時間を減らす→コールドスタートを避けProvisioned Concurrrency Setteingsを使用ex. serverless-provisioned-concurrency-autoscaling
コールドスタートとはなにか?
抜本的な対応策・スパイクにも耐えらえる構成を採用することが重要・「ロマンシング サガ リ・ユニバースの大規模負荷を処理する Amazon ECS &Docker運用知見」が非常に参考になる
まとめ・採用するアーキテクチャの特徴を良く理解する・概念実証時には負荷テストも考慮する・ドキュメントをよく読もう・他社の事例を見よう
ご清聴ありがとうございましたJAWS-UG金沢松田 康宏