睡眠中の園児たちを見守る「ルクミー午睡チェック」のアーキテクチャ / Architecture of LookMee Smart Baby Monitor
by
Hiroaki Akanuma
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
© UniFa Inc. 睡眠中の園児達を ⾒守る「ルクミー 午睡チェック」の アーキテクチャ ユニファ株式会社
Slide 2
Slide 2 text
© UniFa Inc. ⾃⼰紹介 Twitter: @akanuma
Slide 3
Slide 3 text
© UniFa Inc. 事業・サービスについて
Slide 4
Slide 4 text
© UniFa Inc. もっと⾒たい。 もっと⾒てほしい。 を、もっと叶えたい。 「保育の質を上げる」保育関係者のパートナー
Slide 5
Slide 5 text
© UniFa Inc.
Slide 6
Slide 6 text
© UniFa Inc. AWS Startup Architecture of the Year Japan 2020 優勝
Slide 7
Slide 7 text
© UniFa Inc.
Slide 8
Slide 8 text
© UniFa Inc. 従来の午睡チェック業務 ⼿書きによる5分間隔でのうつ伏せ寝チェック
Slide 9
Slide 9 text
© UniFa Inc. ルクミー午睡チェック概要
Slide 10
Slide 10 text
© UniFa Inc. ルクミー午睡チェック概要
Slide 11
Slide 11 text
© UniFa Inc. ルクミー午睡チェック概要 Web管理画⾯
Slide 12
Slide 12 text
© UniFa Inc. 利⽤中の様⼦
Slide 13
Slide 13 text
© UniFa Inc. 利⽤実績 導⼊施設数 約 3,200 施設 午睡センサー数 約 35,000 個 タブレット数 約 5,000 台
Slide 14
Slide 14 text
© UniFa Inc. システムアーキテクチャ
Slide 15
Slide 15 text
© UniFa Inc. 想定された課題 アクセス特性 Ø ピークタイム: 11:00 – 15:00 Ø 5分毎に iPad アプリから集中的にデータが送信される チェックシートデータ量 Ø 12レコード/園児/時 x 14時間 x 10園児 = 1,680レコード/⽇/施設 Ø 1,680 x 2,000施設 = 3,360,000レコード/⽇
Slide 16
Slide 16 text
© UniFa Inc. Overview
Slide 17
Slide 17 text
© UniFa Inc. 全体構成図
Slide 18
Slide 18 text
© UniFa Inc. 全体構成図 オンライン処理
Slide 19
Slide 19 text
© UniFa Inc. 全体構成図 バッチ処理
Slide 20
Slide 20 text
© UniFa Inc. 全体構成図
Slide 21
Slide 21 text
© UniFa Inc. 全体構成図
Slide 22
Slide 22 text
© UniFa Inc. 午睡チェックシートデータの処理
Slide 23
Slide 23 text
© UniFa Inc. 午睡チェックシートデータの処理 ピークタイムに合わせて EC2 を Auto Scaling ピークタイムに合わせて EC2 を Auto Scaling (API Server と同⼀インスタンス)
Slide 24
Slide 24 text
© UniFa Inc. 午睡チェックシートデータの処理 Redis を使⽤して ステータスフラグを記録し Create/Update/Delete の 処理順番を保つ
Slide 25
Slide 25 text
© UniFa Inc. 午睡チェックシートデータの処理 SQSを介した⾮同期処理 Worker が DynamoDBに書き込む
Slide 26
Slide 26 text
© UniFa Inc. 午睡チェックシートデータの処理 DynamoDBのテーブルは⽉別で作成し キャパシティやアクセス⽅法を調整 過去テーブルへのアクセスは同期処理
Slide 27
Slide 27 text
© UniFa Inc. 午睡チェックシートデータの処理 データ送信回数、アラート回数などの センサー単位での情報は DynamoDB Stream で Lambda Function を実⾏して都度集計し DynamoDB のテーブルに記録
Slide 28
Slide 28 text
© UniFa Inc. 午睡チェックシートデータの処理
Slide 29
Slide 29 text
© UniFa Inc. 午睡チェックシートデータの処理 DynamoDB の Write Capacity を 予め登録しておく Worker は起動時に⾃⾝の情報を登録 稼働中の Worker 数と Write Capacity の情報を取得 WriteCapacity: 120
Slide 30
Slide 30 text
© UniFa Inc. 午睡チェックシートデータの処理 DynamoDB の Write Capacity を 予め登録しておく Worker は起動時に⾃⾝の情報を登録 稼働中の Worker 数と Write Capacity の情報を取得 Write Capacity の情報をもとに スロットリングが発⽣しないように 書き込み速度を調整 WriteCapacity: 120 4 0 4 0 4 0
Slide 31
Slide 31 text
© UniFa Inc. 午睡チェックシートデータの処理 SQSに格納されてから 処理されるまでの時間。 確認時点で最⼤167秒。 ビジネス要件は300秒以内。
Slide 32
Slide 32 text
© UniFa Inc. 午睡チェックシートデータの処理 SQSに送信されたデータ数。 確認時点で最⼤1.76万件/分。
Slide 33
Slide 33 text
© UniFa Inc. 午睡チェックシートデータの処理 ワーカーによる処理数。 確認時点で最⼤7,790件/分。
Slide 34
Slide 34 text
© UniFa Inc. Design for Failure 10回処理に失敗したデータは DLQに格納される。 送信順が不正だった場合は 処理に失敗するため DLQに格納され通知される。 4⽇間処理されなかった場合 削除される
Slide 35
Slide 35 text
© UniFa Inc. Design for Failure CloudWatch Events で Lambda Function をキックし DynamoDB のバックアップ対象 テーブルのリストを抽出して SQSに格納
Slide 36
Slide 36 text
© UniFa Inc. Design for Failure SQSに格納された テーブルリストをもとに 対象のテーブルのラベルを更新
Slide 37
Slide 37 text
© UniFa Inc. Design for Failure DynamoDB のテーブルの ラベルをもとに対象を特定して AWS Backup でバックアップ取得
Slide 38
Slide 38 text
© UniFa Inc. Design for Failure
Slide 39
Slide 39 text
© UniFa Inc. Design for Failure 午睡チェック業務実⾏中の場合は サーバへ接続できなくなっても センサーと iPad 間でチェック業務可能
Slide 40
Slide 40 text
© UniFa Inc. Design for Failure セルラー回線(SORACOM Air Sim)を使うことで 保育園のWi-Fiの安定性の問題を回避 同時に導⼊時の保育園側のハードルを下げる
Slide 41
Slide 41 text
© UniFa Inc. ビジネスインパクト
Slide 42
Slide 42 text
© UniFa Inc. 導⼊施設数 Ø サービス開始: 2018年4⽉(約3年経過) Ø 導⼊施設数: 約3,200施設(2020/06/30時点)
Slide 43
Slide 43 text
© 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緊急事態宣⾔ コ ロ ナ 禍 に よ る 稼 働 減
Slide 44
Slide 44 text
© UniFa Inc. アーキテクチャによるビジネス貢献 信頼性 Ø レスポンスタイムやパフォーマンスの劣化なし Ø サーバに接続できなくても稼働継続可能 運⽤上の優秀性 Ø セルラー回線を使うことでWi-Fiの問題を回避 Ø 安定的な稼働と導⼊時のハードルを下げることに貢献
Slide 45
Slide 45 text
© UniFa Inc. 安⼼を進化させる。 ほほ笑みが増えていく。 命に関わる業務での 安⼼・安全をサポート 求められる Well-Architected の柱 Ø 信頼性 Ø 運⽤上の優秀性
Slide 46
Slide 46 text
© UniFa Inc. もっと⾒たい。 もっと⾒てほしい。 を、もっと叶えたい。
Slide 47
Slide 47 text
© UniFa Inc.
Slide 48
Slide 48 text
© UniFa Inc. イベントやります︕ https://unifa.connpass.com/event/213885/
Slide 49
Slide 49 text
© UniFa Inc. We are hiring!! インフラエンジニア、Rubyエンジニアをはじめとして 開発メンバー募集しています︕︕ お気軽にご連絡ください︕︕
Slide 50
Slide 50 text
© UniFa Inc.