Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アクアシャッターf IoT異常通報システム開発記 〜 AWSとSORACOMとmockmock
Search
Y_uuu
April 27, 2021
Programming
1
650
アクアシャッターf IoT異常通報システム開発記 〜 AWSとSORACOMとmockmock
2021-04-27(Tue) 19:00〜
Fusic Tech Live Vol.1:AWS 活用事例 にて発表
https://fusic.connpass.com/event/206957/
Y_uuu
April 27, 2021
Tweet
Share
More Decks by Y_uuu
See All by Y_uuu
あの重機は今どこにある?- 重機管理IoTプロダクトのバックエンドをAWSで構築した話 -
yuuu
0
620
mruby-esp32におけるペリフェラルAPIの実装検討
yuuu
1
510
育成力 - エンジニアの才能を引き出す環境とチューターの立ち回り -
yuuu
4
4.4k
committee-railsとOpenAPI Generatorでスキーマ駆動なAPI開発をする
yuuu
0
710
mrubyでマイコンの世界に足を踏み入れる
yuuu
2
1.7k
mruby on IoT devices.
yuuu
4
2.2k
SORACOM ArcでオフィスのIoT化を進行中です⭐
yuuu
1
990
AWSのIoTサービスをおさらいしよう
yuuu
1
250
mrubyを1300円のボードで動かそう
yuuu
0
560
Other Decks in Programming
See All in Programming
Duckdb-Wasmでローカルダッシュボードを作ってみた
nkforwork
0
120
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
EventSourcingの理想と現実
wenas
6
2.3k
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
2
660
Remix on Hono on Cloudflare Workers
yusukebe
1
280
どうして僕の作ったクラスが手続き型と言われなきゃいけないんですか
akikogoto
1
120
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
250
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
530
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
330
Tauriでネイティブアプリを作りたい
tsucchinoko
0
370
タクシーアプリ『GO』のリアルタイムデータ分析基盤における機械学習サービスの活用
mot_techtalk
4
1.4k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
How STYLIGHT went responsive
nonsquared
95
5.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
BBQ
matthewcrist
85
9.3k
Music & Morning Musume
bryan
46
6.2k
Transcript
ΞΫΞγϟολʔ̵ IoTҟৗ௨ใγεςϜ։ൃه ʙ AWSͱSORACOMͱmockmock 2021-04-27(Tue ) Fusic Tech Live Vol.1ɿAWS
׆༻ࣄྫ ઌਐٕज़෦ IoTνʔϜ Ԭቌ ༤ฏ 1
ࣗݾհ Ԭቌ ༤ฏ Okazaki Yuhei ‣ I D - @yuuu
@Y_uuu ‣ ࣗݾհ • FusicͷIoTΫϥυΤϯδχΞ • ݩɾࠐΈΤϯδχΞ(2018͔ΒWebܥ ) • ࠷ۙͷ͓ࣄઐΒAzure ‣ Skil l 2 image ʘNewʗ
IoTΫϥυΤϯδχΞͷ͓ࣄ 3 ‣ IoT=ITͷ૯߹֨ಆٕ
IoTΫϥυΤϯδχΞͷ͓ࣄ 4 ‣ σόΠεҎ֎ͷ෦(IoTʹ͓͚ΔΫϥυ)ͷ։ൃɾςετɾӡ༻Λ୲
࣍ 5 0. ΞΠεϒϨΠΫ ʙ IoTϓϩμΫτࠓͷΠνΦγ 1. γεςϜ֓ཁ 2. ΞʔΩςΫνϟ
ʙ SORACO M 3. ΞʔΩςΫνϟ ʙ AW S 4. mockmockΛͬͨςετ 5. ·ͱΊ
ΞΠεϒϨΠΫ: IoTϓϩμΫτࠓͷΠνΦγ 6 ‣ εϚϗ͕ʮ伴ʯʹͳΔ ‣ Ոʹۙͮ͘ͱࣗಈղৣɺࣗಈࢪৣ(ΦʔτϩοΫ ) ‣ APIެ։͞Ε͍ͯΔͷͰ͍Ζ͍Ζ༡Δ
ηαϛεϚʔτϩοΫ
ΞΠεϒϨΠΫ: IoTϓϩμΫτࠓͷΠνΦγ 7 ‣ Ո͔ΒΕ͍ͯͯՈͷঢ়ଶ͕Θ͔Δ - ʮ伴ดΊ͚ͨͬʁʯͱෆ҆ʹͳΔ͜ͱ͕ͳ͘ͳͬͨ - Ո͕༧ఆ௨ΓͷߦಈΛ͍ͯ͠Δ͔ɺՄࢹԽ ‣
ԕִʹ͋ΔϞϊͷঢ়ଶΛՄࢹԽ - ҙ֎ͱخ͍͠ - ࠓ͓͢ΔγεςϜʮԕִࢹʯ͕ςʔϚͰ͢ ղৣ࣌ɾࢪৣ࣌ʹεϚϗʹ௨͕དྷΔ
ʘ͔͜͜ΒຊͰ͢ʗ 📣 ΞΫΞγϟολʔ̵ IoTҟৗ௨ใγεςϜ։ൃه 8
1. γεςϜ֓ཁ 9
લఏ: ։ൃʹ͓͚ΔεςʔΫϗϧμʔ 10 ɾγεςϜͷൃݩɺϢʔβʔ ɾSORACOM SIMͷൃɾཧ ɾσόΠεͷઃܭɾ։ൃɾςετ ɾγεςϜͷઃܭɾ։ൃɾςετ ɾAWSͷٻߦ σόΠεൃ
σόΠεೲ γεςϜൃ γεςϜೲ ࿈ܞͯ͠։ൃ
ຊհ͢ΔγεςϜ 11 ΞΫΞγϟολʔ̵ IoTҟৗ௨ใγεςϜ
ΞΫΞγϟολʔ̵ͱ 12 ‣ גࣜձࣾӉࠜమॴ͕ɾൢച ‣ େӍɾߑਫ࣌ʹݐઃඋͷਁਫΛ͙ਫ൘ ‣ ʮ24࣌ؒɺແಈྗɾແૢ࡞ʯΛചΓʹ͍ͯ͠Δ
ΞΫΞγϟολʔ̵ͱ 13
ΞΫΞγϟολʔ̵๊͕͑Δ՝ 14 ‣ ແಈྗɾແૢ࡞ͷͨΊɺಈ࡞ϩά͕Βͳ͍ - ࣮ࡍʹਁਫ͕ൃੜͯ͠ɺ࡞ಈͨ͠ͷ͔Θ͔Βͳ͍ - ൶ʹॏྔ͕͍ͬͯͯɺ࡞ಈෆೳʹͳ͍ͬͯͯؾ͔ͳ͍
IoTҟৗ௨ใγεςϜͷػೳ༷ 15 ‣ ʹσόΠε(+ηϯαʔ)Λޙ͢Δ͜ͱͰɺ ൶ىཱɾ൶෬ͱ͍ͬͨঢ়ଶΛγεςϜ্Ͱ֬ೝͰ͖ΔΑ͏ʹ͢Δ ‣ ͕࡞ಈͨ͜͠ͱΛࢦఆͨ͠Ѽઌ௨͢Δ ‣ σόΠεͷࢮ׆ࢹΛ͢Δ
શମΞʔΩςΫνϟ 16
2. ΞʔΩςΫνϟ ʙ SORACOM 17
SORACOMΛ࠾༻ͨ͠ཧ༝ 18 ‣ SIMΛ͏͜ͱͰ֎Ͱͷ௨৴Λ࣮ݱ ‣ SIMΛ1ຕ͔ΒൃՄೳ ‣ σόΠεͱΫϥυ͕γʔϜϨεʹ௨৴Ͱ͖Δ
IoT։ൃʹ͓͚ΔσόΠεͱΫϥυͷΪϟοϓ 19 σόΠε Ϋϥυ ϓϩτίϧ ϑΥʔϚοτ ೝূ ‣ σʔλͷૹड৴ʹؔͯ͠େ͖ͳΪϟοϓ͕͋Δ ϨΠϠͷ͍ϓϩτίϧ
(ྫ: TCP, UDP) ϨΠϠͷߴ͍ϓϩτίϧ (ྫ: HTTPS, MQTTS) όΠφϦͰߏԽͨ͠ σʔλ͕ѻ͍͍͢ ςΩετԽ͞Εͨσʔλ͕ ѻ͍͍͢(ྫ: JSON) ߴͳೝূίετ͕͔͔Δ ෆਖ਼ͳσόΠε͔Βͷ ΞΫηεΛ͙ͨΊೝূ͕ඞཁ
όΠφϦύʔαʔ+FunnelͰΪϟοϓΛຒΊΔ 20 ‣ ϓϩτίϧ: TCP→HTTPSʹม ‣ ϑΥʔϚοτ: όΠφϦˠJSONʹม ‣ IoT
CoreͷೝূFunnelͰҰݩԽ
όΠφϦύʔαʔ+FunnelͰΪϟοϓΛຒΊΔ 21 ‣ ϓϩτίϧ: TCP→HTTPSʹม ‣ ϑΥʔϚοτ: όΠφϦˠJSONʹม ‣ IoT
CoreͷೝূFunnelͰҰݩԽ ‣ σόΠεɾΫϥυͦΕͧΕ։ൃ͍͢͠
3. ΞʔΩςΫνϟ ʙ AWS 22
AWS 23 ‣ IoT Core͕ड৴ͨ͠σʔλΛSQSPU T
AWS 24 ‣ Webଆࢸͬͯී௨ͷWebγεςϜ
AWS 25 ‣ Worker͕SQS͔ΒGE T ‣ RDS֨ೲ ‣ ඞཁʹԠͯ͡ϝʔϧ௨(SES)
SQSΛͬͯσʔλΛEC2Ͱॲཧ 26 ‣ SQS→EC2Α͋͘Δઃܭ ‣ SQSͷલஈʹSNSΛڬΉͱ͜Ζ͕ϙΠϯτ - SQS͕σόοά͠ʹ͍͘ͷͰSNSΛڬΉ͜ͱͰɺσʔλͷ֬ೝΛ༰қʹ͢Δ - SQSҎ֎ͷૹ৴ઌ͕ඞཁʹͳͬͨͱ͖ʹରԠ͍͢͠
SQSΛͬͯσʔλΛEC2→RDSʹ֨ೲ 27 ‣ ࠓͳΒEvent BridgeΛͬͨํ͕ྑͦ͞͏ʁ - IoT Core→Event Bridge͕ະରԠ -
SNSΛڬΜͩσʔλૹ৴·ͩ·ͩ༗ޮ(ࠓޙʹظ)
αʔόϨεΞʔΩςΫνϟˠIaaSΞϯνύλʔϯʁ 28 ‣ ඞͣͦ͠͏ͱݴ͑ͳ͍ɺέʔεόΠέʔε - ϝϦοτ: WebγεςϜ͔ΒΞΫηεɾूܭ͍͢͠ - σϝϦοτ: εέʔϧ͠ʹ͍͘
‣ ࠓճن͕ͦ͜·Ͱେ͖͘ͳ͘ɺٸܹͳεέʔϧͷՄೳੑ͍ͱஅ - σόΠεͷଓ: ͓͓Αͦ100 - ௨৴ස: 1ճ/ɾ
αʔόϨεΞʔΩςΫνϟ+IaaSΞϯνύλʔϯʁ 29 ‣ ࠓͳΒLambda→RDS-Proxyͱ͍͏બࢶΞϦ
αʔόϨεΞʔΩςΫνϟ+IaaSΞϯνύλʔϯʁ 30 ‣ ࠓͳΒLambda→RDS-Proxyͱ͍͏બࢶΞϦ
αʔόϨεΞʔΩςΫνϟ+IaaSΞϯνύλʔϯʁ 31 ‣ ࠓͳΒLambda→RDS-Proxyͱ͍͏બࢶΞϦ
4. mockmockΛͬͨςετ 32
IoTͷςετ͍͠ 33 ‣ ͳΜΒ͔ͷํ๏ͰσʔλΛૹ৴͠ͳ͍ͱɺಈ࡞Λ֬ೝͰ͖ͳ͍ σόΠε͔Βͷ σʔλૹ৴͕ ͯ͢ͷ͡·Γ
ཧܗ: mockmock͕ΘΓʹσʔλΛૹ৴ 34 ಈ࡞Λ֬ೝͰ͖Δ
mockmock 35 ‣ ࣌SORACOM࿈ܞ͕ະϩʔϯν - E2EͰ֬ೝͰ͖ͳ͍ͱ͋·Γҙຯ͕ແ͍ͱߟ͑ͨ ‣ ༧͞ΕΔΫϥυଆͷෛՙ͕খ͍͞ - σόΠε͕গͳ͘ɺૹ৴ස͍ͷͰ
ຊ։ൃͰ͋·Γ׆༻͕Ͱ͖ͳ͔ͬͨ
ݱ࣮: ຊ։ൃͰͷςετ 36 ಈ࡞Λ֬ೝͰ͖Δ ‣ όοΫΤϯυͷςετ SORACOM Funnel͔Βͷ σʔλૹ৴Λٖ(ճ)
ݱ࣮: ຊ։ൃͰͷςετ 37 ‣ όοΫΤϯυͷςετ SORACOM Funnel͔Βͷ σʔλૹ৴Λٖ(ճ) ‣ E2Eςετ
σόΠε͔Βͷσʔλૹ৴ ಈ࡞Λ֬ೝͰ͖Δ
σόΠεͱΫϥυΛଓͨ͠ࡍʹൃੜ 38 ‣ ϝοηʔδΛ࿈ଓૹ৴ͨ͠ࡍͷঢ়ଶભҠʹ͋Γ
σόΠεͱΫϥυΛଓͨ͠ࡍʹൃੜ 39 ‣ ϝοηʔδΛ࿈ଓૹ৴ͨ͠ࡍͷঢ়ଶભҠʹ͋Γ
σόΠεͱΫϥυΛଓͨ͠ࡍʹൃੜ 40 ‣ ϝοηʔδΛ࿈ଓૹ৴ͨ͠ࡍͷঢ়ଶભҠʹ͋Γ
ཧܗ: mockmock͕ΘΓʹσʔλΛૹ৴ 41 ಈ࡞Λ֬ೝͰ͖Δ
ཧܗ: mockmock͕ΘΓʹσʔλΛૹ৴ 42 ಈ࡞Λ֬ೝͰ͖Δ ࠓͳΒΕΔʂ
5. ·ͱΊ 43
·ͱΊ 44 ‣ SORACOM SIMͰσόΠεͱΫϥυΛγʔϜϨεʹଓͰ͖Δ ‣ AWSͰड৴ͨ͠σʔλΛWebΞϓϦʹड͚ͤΔ ‣ mockmockΛ͑σόΠεͱΫϥυΛඇಉظͰ։ൃɾςετͰ͖Δ
45 ͝ਗ਼ௌ͍͖ͨͩ͋Γ͕ͱ͏͍͟͝·ͨ͠ Thank You We are Hiring ! https://recruit.fusic.co.jp/