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.