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

睡眠中の園児たちを見守る「ルクミー午睡チェック」のアーキテクチャ / Architecture of LookMee Smart Baby Monitor

睡眠中の園児たちを見守る「ルクミー午睡チェック」のアーキテクチャ / Architecture of LookMee Smart Baby Monitor

AWS Startup Tech Meetup Online #5 での登壇資料です。
https://aws-startup-community.connpass.com/event/213928/

717e348de96d4638d6ff04aad91bc594?s=128

Hiroaki Akanuma

June 11, 2021
Tweet

Transcript

  1. © UniFa Inc. 睡眠中の園児達を ⾒守る「ルクミー 午睡チェック」の アーキテクチャ ユニファ株式会社

  2. © UniFa Inc. ⾃⼰紹介 Twitter: @akanuma

  3. © UniFa Inc. 事業・サービスについて

  4. © UniFa Inc. もっと⾒たい。 もっと⾒てほしい。 を、もっと叶えたい。 「保育の質を上げる」保育関係者のパートナー

  5. © UniFa Inc.

  6. © UniFa Inc. AWS Startup Architecture of the Year Japan

    2020 優勝
  7. © UniFa Inc.

  8. © UniFa Inc. 従来の午睡チェック業務 ⼿書きによる5分間隔でのうつ伏せ寝チェック

  9. © UniFa Inc. ルクミー午睡チェック概要

  10. © UniFa Inc. ルクミー午睡チェック概要

  11. © UniFa Inc. ルクミー午睡チェック概要 Web管理画⾯

  12. © UniFa Inc. 利⽤中の様⼦

  13. © UniFa Inc. 利⽤実績 導⼊施設数 約 3,200 施設 午睡センサー数 約

    35,000 個 タブレット数 約 5,000 台
  14. © UniFa Inc. システムアーキテクチャ

  15. © UniFa Inc. 想定された課題 アクセス特性 Ø ピークタイム: 11:00 – 15:00

    Ø 5分毎に iPad アプリから集中的にデータが送信される チェックシートデータ量 Ø 12レコード/園児/時 x 14時間 x 10園児 = 1,680レコード/⽇/施設 Ø 1,680 x 2,000施設 = 3,360,000レコード/⽇
  16. © UniFa Inc. Overview

  17. © UniFa Inc. 全体構成図

  18. © UniFa Inc. 全体構成図 オンライン処理

  19. © UniFa Inc. 全体構成図 バッチ処理

  20. © UniFa Inc. 全体構成図

  21. © UniFa Inc. 全体構成図

  22. © UniFa Inc. 午睡チェックシートデータの処理

  23. © UniFa Inc. 午睡チェックシートデータの処理 ピークタイムに合わせて EC2 を Auto Scaling ピークタイムに合わせて

    EC2 を Auto Scaling (API Server と同⼀インスタンス)
  24. © UniFa Inc. 午睡チェックシートデータの処理 Redis を使⽤して ステータスフラグを記録し Create/Update/Delete の 処理順番を保つ

  25. © UniFa Inc. 午睡チェックシートデータの処理 SQSを介した⾮同期処理 Worker が DynamoDBに書き込む

  26. © UniFa Inc. 午睡チェックシートデータの処理 DynamoDBのテーブルは⽉別で作成し キャパシティやアクセス⽅法を調整 過去テーブルへのアクセスは同期処理

  27. © UniFa Inc. 午睡チェックシートデータの処理 データ送信回数、アラート回数などの センサー単位での情報は DynamoDB Stream で Lambda

    Function を実⾏して都度集計し DynamoDB のテーブルに記録
  28. © UniFa Inc. 午睡チェックシートデータの処理

  29. © UniFa Inc. 午睡チェックシートデータの処理 DynamoDB の Write Capacity を 予め登録しておく

    Worker は起動時に⾃⾝の情報を登録 稼働中の Worker 数と Write Capacity の情報を取得 WriteCapacity: 120
  30. © UniFa Inc. 午睡チェックシートデータの処理 DynamoDB の Write Capacity を 予め登録しておく

    Worker は起動時に⾃⾝の情報を登録 稼働中の Worker 数と Write Capacity の情報を取得 Write Capacity の情報をもとに スロットリングが発⽣しないように 書き込み速度を調整 WriteCapacity: 120 4 0 4 0 4 0
  31. © UniFa Inc. 午睡チェックシートデータの処理 SQSに格納されてから 処理されるまでの時間。 確認時点で最⼤167秒。 ビジネス要件は300秒以内。

  32. © UniFa Inc. 午睡チェックシートデータの処理 SQSに送信されたデータ数。 確認時点で最⼤1.76万件/分。

  33. © UniFa Inc. 午睡チェックシートデータの処理 ワーカーによる処理数。 確認時点で最⼤7,790件/分。

  34. © UniFa Inc. Design for Failure 10回処理に失敗したデータは DLQに格納される。 送信順が不正だった場合は 処理に失敗するため

    DLQに格納され通知される。 4⽇間処理されなかった場合 削除される
  35. © UniFa Inc. Design for Failure CloudWatch Events で Lambda

    Function をキックし DynamoDB のバックアップ対象 テーブルのリストを抽出して SQSに格納
  36. © UniFa Inc. Design for Failure SQSに格納された テーブルリストをもとに 対象のテーブルのラベルを更新

  37. © UniFa Inc. Design for Failure DynamoDB のテーブルの ラベルをもとに対象を特定して AWS

    Backup でバックアップ取得
  38. © UniFa Inc. Design for Failure

  39. © UniFa Inc. Design for Failure 午睡チェック業務実⾏中の場合は サーバへ接続できなくなっても センサーと iPad

    間でチェック業務可能
  40. © UniFa Inc. Design for Failure セルラー回線(SORACOM Air Sim)を使うことで 保育園のWi-Fiの安定性の問題を回避

    同時に導⼊時の保育園側のハードルを下げる
  41. © UniFa Inc. ビジネスインパクト

  42. © UniFa Inc. 導⼊施設数 Ø サービス開始: 2018年4⽉(約3年経過) Ø 導⼊施設数: 約3,200施設(2020/06/30時点)

  43. © UniFa Inc. データ量増加推移 0 1 2 3 4 5

    6 7 8 9 10 201804 201805 201806 201807 201808 201809 201810 201811 201812 201901 201902 201903 201904 201905 201906 201907 201908 201909 201910 201911 201912 202001 202002 202003 202004 202005 202006 202007 Millions 2年半累計で約1.2億レコード 2020.04緊急事態宣⾔ コ ロ ナ 禍 に よ る 稼 働 減
  44. © UniFa Inc. アーキテクチャによるビジネス貢献 信頼性 Ø レスポンスタイムやパフォーマンスの劣化なし Ø サーバに接続できなくても稼働継続可能 運⽤上の優秀性

    Ø セルラー回線を使うことでWi-Fiの問題を回避 Ø 安定的な稼働と導⼊時のハードルを下げることに貢献
  45. © UniFa Inc. 安⼼を進化させる。 ほほ笑みが増えていく。 命に関わる業務での 安⼼・安全をサポート 求められる Well-Architected の柱

    Ø 信頼性 Ø 運⽤上の優秀性
  46. © UniFa Inc. もっと⾒たい。 もっと⾒てほしい。 を、もっと叶えたい。

  47. © UniFa Inc.

  48. © UniFa Inc. イベントやります︕ https://unifa.connpass.com/event/213885/

  49. © UniFa Inc. We are hiring!! インフラエンジニア、Rubyエンジニアをはじめとして 開発メンバー募集しています︕︕ お気軽にご連絡ください︕︕

  50. © UniFa Inc.