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

Lambdaでサーバレス化した時に考慮し忘れちゃったこと

 Lambdaでサーバレス化した時に考慮し忘れちゃったこと

JAWS PANKRATION 2021の登壇資料の日本語版です。

Yasuhiro Matsuda

November 21, 2021
Tweet

More Decks by Yasuhiro Matsuda

Other Decks in Technology

Transcript

  1. Lambdaでサーバレス化した時に
    考慮し忘れちゃったこと
    JAWS-UG 金沢
    松田 康宏

    View Slide

  2. 自己紹介
    私は金沢市にある印刷会社のインフラエンジニア
    として2020年まで勤務し、AWSを利用したインフ
    ラの概念検証を担当
    2021年1月よりイースト株式会社に転職
    JAWS-UG金沢に2018年より参加し、コアメンバー
    として活動
    ファイナンシャルプランナー (AFP)
    趣味はランニング、ボウリング、家庭菜園
    #jawsug_kanazawa

    View Slide

  3. #jawsug_kanazawa

    View Slide

  4. 金沢支部の紹介
    1ヶ月ごとに勉強会を行なっており、AWSに興味ある方、
    より一層活用したい方、使っている仲間を見つけたい方
    に是非とも参加いただきたいです
    #jawsug_kanazawa
    2019年にAWS Community Day Kanazawaを開催し、120
    名以上の方にお集まりいただきました

    View Slide

  5. 本日のゴール
    ・手軽にサーバレスを実現できるLambdaにお
    ける落とし穴と対応策を理解する
    ・Lambdaのコールドスタートとスロットリン
    グについて理解する

    View Slide

  6. 本日お話すること
    ・サーバレス化した概要についてです
    ・サーバレスに移行した際の落とし穴
    ・どうすればよかったのか?

    View Slide

  7. サービス内容の紹介
    ・DONGRIという辞書アプリをイースト株式会社では提供して
    おり、各種辞典、用語集など幅広いラインナップから利用がで
    きます
    ・iOS, Android, Windows版を提供
    し、複数のディバイスを通して辞
    書が利用できることが特徴で、オ
    ンラインだけでなくオフラインで
    も利用できます

    View Slide

  8. システム面での特徴
    ・主に学校と自宅で利用されることが多い
    ・平日日中時間帯と夜間に利用が多い
    ・特に日中時間帯は授業で一斉に利用されることが多く、瞬
    間的なピークが発生しやすい

    View Slide

  9. 移行前のアーキテクチャ
    複数のEC2をロ
    ードバランサ―
    に接続し負荷分
    散を行うシンプ
    ルな構成

    View Slide

  10. 旧アーキテクチャが抱えていた課題
    ・拡張性がなく、冗長構成を維持するためのコストが高止まり
    ・ap-northeast-1bのみにインスタンスが構築されており、アベ
    イラビリティーゾーン障害時にサービス停止となる可能性
    ・Windows Serverをベースにしたシステムで保守コストが高

    ・EC2内にある独自データベースを保守することが困難

    View Slide

  11. 更新後のアーキテクチャ
    LambdaとDocumentDBを使った構成
    スケーリングできるようにするとと
    もにマネージドサービスに移行する
    ことで保守コストを押さえられた
    移行途中のため、DocumentDBに移
    行されていない辞書については従来
    のシステムにリクエストを転送し、
    検索を行っている

    View Slide

  12. 何が起こったか?
    負荷テストを行っていたところ、502エラーが発生
    デフォルト1000となっている同時実行数を超えたことが原因

    View Slide

  13. 同時実行数の緩和申請
    アカウントの同時実行
    数を1000→5000に緩和
    申請して問題を解決し
    たつもりでした

    View Slide

  14. しかし…
    再度負荷テストを実施したところ、異なるエラーが発生
    辞書の検索アルゴリズムが原因でスロットリングが発生していたことがわかる

    View Slide

  15. スロットリングについて

    View Slide

  16. スロットリングについて

    View Slide

  17. どうすればよかったのか?
    ・処理時間を減らす
    →コールドスタートを避けProvisioned Concurrrency Setteingsを使用
    ex. serverless-provisioned-concurrency-autoscaling

    View Slide

  18. コールドスタートとはなにか?

    View Slide

  19. 抜本的な対応策
    ・スパイクにも耐えらえる構成を採用することが重

    ・「ロマンシング サガ リ・
    ユニバースの大規模負荷を
    処理する Amazon ECS &
    Docker運用知見」が非常に
    参考になる

    View Slide

  20. まとめ
    ・採用するアーキテクチャの特徴を良く理解す

    ・概念実証時には負荷テストも考慮する
    ・ドキュメントをよく読もう
    ・他社の事例を見よう

    View Slide

  21. ご清聴ありがとうございました
    JAWS-UG金沢
    松田 康宏

    View Slide