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

サーバーレスで豊島区の緊急設備トラブルを解決するアプリを作った話

kobaken
March 02, 2024
340

 サーバーレスで豊島区の緊急設備トラブルを解決するアプリを作った話

kobaken

March 02, 2024
Tweet

Transcript

  1. JAWS DAYS 2024 ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a JAWS DAYS 2024 小林

    賢司 サーバーレスで豊島区の緊急設備トラブルを解決する アプリを作った話
  2. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • サーバー管理が不要となり(サーバーは存在します)システムの運用を低減することが できる。 • アプリケーションの実行環境を素早く準備できるので、注力したいアプリケーション開発 に集中することができる。 •

    オートスケーリング、高可用性、使用量に応じた課金モデルなどの特徴があり、俊敏性 の向上とコストの最適化を実現できる。 サーバーレスとは? 10 AWSがサーバー管理、運用をしてくれる!!安心!! 使った分だけ使用料が発生するので安心!!(一部例外もあり)
  3. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • コンピューティング ◦ AWS Lambda、AWS Fargate •

    アプリケーション統合 ◦ Amazon EventBridge、AWS Step Functions、Amazon SQS、Amazon SNS、Amazon API Gateway、AWS AppSync • データストア ◦ Amazon S3、Amazon EFS、Amazon DynamoDB、Amazon RDS Proxy、Amazon Aurora Serverless、Amazon Redshift Serverless、Amazon Neptune Serverless、 Amazon OpenSearch Serverless、Amazon ElastiCache Serverless ※ただし、サーバーレスの定義として、どのサービスを含めるかは若干異なるケースもございます。 AWSのサーバーレスサービスの紹介 11 https://aws.amazon.com/jp/serverless/
  4. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • 提供されている機能を活用することで開発スピードを向上できる。 • 豊富なサーバーレスアーキテクチャが参考にできる。 • 新規サービス開発のため、売上の見込めない段階があり、初期コストを削減したい。 従量課金モデルが相性がよい。

    • アプリの運用を実施するお客様に、IT人材が不足しているため、定期的に発生する運 用業務を減らしたい。 • 拡張性、可用性が高く、柔軟であるため。 なぜ、サーバーレスを利用したのか? 12
  5. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a 昨年のre:Inventでコストの話がWarner Bros.氏からありましたが、 ”LAW II.Systems that Last Align

    Cost to Business.”(コストをビジネスに合わせて継続的に調整するシステ ム。)で書かれている通り、 システムの耐久性は、コストがビジネスモデルにどの程度適合しているかによって決まります。 システムを設計および構築するときは、収益源と利益の手段を考慮する必要があります。 収益を上げられる次元を見つけて、アーキテクチャが収益に沿っていることを確認することが重要です。 たとえば、電子商取引では、その次元は注文数である可能性があります。 注文が増えると、インフラストラクチャと運用コストが増加します。システムが適切に設計されていれば、スケールメ リットを活用できるので、それは問題ありません。 重要なのは、インフラストラクチャのコストがビジネスに目に見える影響を与えるということです。 建築業者として、私たちは収益について考え、その知識を選択の参考にする必要があります。 なぜなら、どんな犠牲を払ってでも成長することは、破滅の道につながるからです。 サーバーレスが全てではない。 22 https://thefrugalarchitect.com/laws/systems-that-last-align-cost-to-business.html
  6. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • コールセンター(Amazon Connect) ◦ 電話で受付できる仕組みを1日で作成 ◦ フリーダイヤル取得が1週間ぐらいかかった(電話番号選べなくなっていた)

    ◦ アプリからではなく、フリーダイヤル経由で依頼を受付 ◦ 自動音声案内から担当者へコール、電話履歴をメールに通知 どんなの作ったの? 28
  7. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • ステータス管理(Amazon EventBridge) ◦ EventBridgeのスケジュール機能で、 ▪ お知らせのPush通知

    • ユーザーに行動を促すための通知(見積もり承認や入金など) ▪ 案件ステータスの自動更新 • 期限内にユーザーがアクション(見積もり承認や入金など)を実行しなかっ た場合に強制的にステータスを変更 ▪ 各種マスタデータの洗い替え • 祝日マスタなど どんなの作ったの? 29
  8. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • よかったこと ◦ サーバーレスアーキテクチャなどを参考にすることで、開発スピードを早めることがで きた。 ◦ サービススタート時の初期費用を抑えることができた。(ランニングコスト)

    ◦ お客様の要望を迅速反映できた。 ◦ ITエンジニアが不在のため、システム運用管理業務の簡素化が行えた。 ◦ サーバーレス・マネージドサービスを活用することで、今まで考える必要があった実 装方法、運用方法などの検討が減り、開発に集中できた。 サーバーレスにしてどうだっだ? 32
  9. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • ちょっと不満だったところ ◦ 無償版のLocalStackだとDyanmoDBのデータが永続化できないため、 コンテナを落とすとデータが消える。 ◦ LocalStackでSQSからのLambda起動する環境を作るのが手間だった。

    ◦ 使ってるサービスがサーバーレス/マネージドサービスであるがために、 上記の事柄が発生した。 結論:AWSサービスをローカルで実現するのが面倒だった。 サーバーレスにしてどうだっだ? 33
  10. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • アプリケーションがLambdaに依存した処理になる ◦ 解決策:いつでもLambdaを切り離せるように作っておくとよい(ロジックは切り離し てテストしやすいようにする。) ◦ 解決策:ECS

    or EKSなどへの乗せ替えをしやすいようにしておく。 • Lambdaは、急激な負荷に耐えづらい ◦ 解決策:Provisioned ConcurrencyやApplication Auto Scalingの設定、 ECSへの移行 • サーバーレスは金額が高くなりがち ◦ 解決策:EC2、RDS、ECS on EC2の方が安くなる。 サーバーレスの課題 34
  11. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • Lambdaは定期的にランタイム更新が必要 ◦ 解決策:なし • サーバーレスの場合、ローカル開発がしづらい ◦

    解決策:Localstackやサービスのモック用コンテナの導入を検討 ◦ 解決策:無償版は制限があるので、有償版のLocalstackを利用する。 • Lambdaのタイムアウトの原因調査が難しい。 ◦ 解決策:Lambda側でのエラーハンドリング、X-Rayの利用 • Lambdaは、15分を超える処理には利用できない。 ◦ 解決策:ECS Farage、AWS Batch等を利用する。 サーバーレスの課題 35
  12. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a • AWS Pinpoint ◦ Amplify SDKがうまくいかなかったのと、Flutterで実装、技術調査が難航 ◦

    Firebase Cloud Messaging(FCM)の方がナレッジが豊富だった。 ◦ このあたり詳しい人教えて下さい。 • Amazon Location Service ◦ ごめんなさい、Google Maps APIの方が知見があったため。 • TiDB(AWSのサービスじゃないけどw) ◦ Aurora Serverless v3待ってます! 今回見送りしたAWSサービス 41
  13. ハッシュタグ:#jawsdays2024 #jawsug #jawsdays2024_a どんな体制? 42 プロジェクトリーダ/ AWSアーキテクト/テスター/その他 プロジェクトマネージャー / テックリード/バックエンドエンジニア

    デザイナー/Web制作 Flutterエンジニア バックエンドエンジニア フロントエンドエンジニア 開発メンバーはフルリモートで開発!!