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/

Hiroaki Akanuma

June 11, 2021
Tweet

More Decks by Hiroaki Akanuma

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. © UniFa Inc.

    View Slide

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

    View Slide

  7. © UniFa Inc.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. © UniFa Inc.
    利⽤実績
    導⼊施設数 約 3,200 施設
    午睡センサー数 約 35,000 個
    タブレット数 約 5,000 台

    View Slide

  14. © UniFa Inc.
    システムアーキテクチャ

    View Slide

  15. © UniFa Inc.
    想定された課題
    アクセス特性
    Ø ピークタイム: 11:00 – 15:00
    Ø 5分毎に iPad アプリから集中的にデータが送信される
    チェックシートデータ量
    Ø 12レコード/園児/時 x 14時間 x 10園児 = 1,680レコード/⽇/施設
    Ø 1,680 x 2,000施設 = 3,360,000レコード/⽇

    View Slide

  16. © UniFa Inc.
    Overview

    View Slide

  17. © UniFa Inc.
    全体構成図

    View Slide

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

    View Slide

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

    View Slide

  20. © UniFa Inc.
    全体構成図

    View Slide

  21. © UniFa Inc.
    全体構成図

    View Slide

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

    View Slide

  23. © UniFa Inc.
    午睡チェックシートデータの処理
    ピークタイムに合わせて
    EC2 を Auto Scaling
    ピークタイムに合わせて
    EC2 を Auto Scaling
    (API Server と同⼀インスタンス)

    View Slide

  24. © UniFa Inc.
    午睡チェックシートデータの処理
    Redis を使⽤して
    ステータスフラグを記録し
    Create/Update/Delete の
    処理順番を保つ

    View Slide

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

    View Slide

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

    View Slide

  27. © UniFa Inc.
    午睡チェックシートデータの処理
    データ送信回数、アラート回数などの
    センサー単位での情報は
    DynamoDB Stream で
    Lambda Function を実⾏して都度集計し
    DynamoDB のテーブルに記録

    View Slide

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

    View Slide

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

    View Slide

  30. © UniFa Inc.
    午睡チェックシートデータの処理
    DynamoDB の Write Capacity を
    予め登録しておく
    Worker は起動時に⾃⾝の情報を登録
    稼働中の Worker 数と
    Write Capacity の情報を取得
    Write Capacity の情報をもとに
    スロットリングが発⽣しないように
    書き込み速度を調整
    WriteCapacity:
    120
    4
    0
    4
    0
    4
    0

    View Slide

  31. © UniFa Inc.
    午睡チェックシートデータの処理
    SQSに格納されてから
    処理されるまでの時間。
    確認時点で最⼤167秒。
    ビジネス要件は300秒以内。

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  35. © UniFa Inc.
    Design for Failure
    CloudWatch Events で
    Lambda Function をキックし
    DynamoDB のバックアップ対象
    テーブルのリストを抽出して
    SQSに格納

    View Slide

  36. © UniFa Inc.
    Design for Failure
    SQSに格納された
    テーブルリストをもとに
    対象のテーブルのラベルを更新

    View Slide

  37. © UniFa Inc.
    Design for Failure
    DynamoDB のテーブルの
    ラベルをもとに対象を特定して
    AWS Backup でバックアップ取得

    View Slide

  38. © UniFa Inc.
    Design for Failure

    View Slide

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

    View Slide

  40. © UniFa Inc.
    Design for Failure
    セルラー回線(SORACOM Air Sim)を使うことで
    保育園のWi-Fiの安定性の問題を回避
    同時に導⼊時の保育園側のハードルを下げる

    View Slide

  41. © UniFa Inc.
    ビジネスインパクト

    View Slide

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

    View Slide

  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緊急事態宣⾔










    View Slide

  44. © UniFa Inc.
    アーキテクチャによるビジネス貢献
    信頼性
    Ø レスポンスタイムやパフォーマンスの劣化なし
    Ø サーバに接続できなくても稼働継続可能
    運⽤上の優秀性
    Ø セルラー回線を使うことでWi-Fiの問題を回避
    Ø 安定的な稼働と導⼊時のハードルを下げることに貢献

    View Slide

  45. © UniFa Inc.
    安⼼を進化させる。
    ほほ笑みが増えていく。
    命に関わる業務での
    安⼼・安全をサポート
    求められる Well-Architected の柱
    Ø 信頼性
    Ø 運⽤上の優秀性

    View Slide

  46. © UniFa Inc.
    もっと⾒たい。
    もっと⾒てほしい。
    を、もっと叶えたい。

    View Slide

  47. © UniFa Inc.

    View Slide

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

    View Slide

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

    View Slide

  50. © UniFa Inc.

    View Slide