2021-04-27(Tue) 19:00〜 Fusic Tech Live Vol.1:AWS 活用事例 にて発表 https://fusic.connpass.com/event/206957/
ΞΫΞγϟολʔ̵ IoTҟৗ௨ใγεςϜ։ൃهʙ AWSͱSORACOMͱmockmock2021-04-27(Tue)Fusic Tech Live Vol.1ɿAWS ׆༻ࣄྫઌਐٕज़෦ IoTνʔϜ Ԭቌ ༤ฏ1
View Slide
ࣗݾհԬቌ ༤ฏOkazaki Yuhei‣ ID- @yuuu @Y_uuu‣ ࣗݾհ• FusicͷIoTΫϥυΤϯδχΞ• ݩɾࠐΈΤϯδχΞ(2018͔ΒWebܥ)• ࠷ۙͷ͓ࣄઐΒAzure‣ Skill2imageʘNewʗ
IoTΫϥυΤϯδχΞͷ͓ࣄ3‣ IoT=ITͷ૯߹֨ಆٕ
IoTΫϥυΤϯδχΞͷ͓ࣄ4‣ σόΠεҎ֎ͷ෦(IoTʹ͓͚ΔΫϥυ)ͷ։ൃɾςετɾӡ༻Λ୲
࣍50. ΞΠεϒϨΠΫ ʙ IoTϓϩμΫτࠓͷΠνΦγ1. γεςϜ֓ཁ2. ΞʔΩςΫνϟ ʙ SORACOM3. ΞʔΩςΫνϟ ʙ AWS4. 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. ΞʔΩςΫνϟ ʙ SORACOM17
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. ΞʔΩςΫνϟ ʙ AWS22
AWS23‣ IoT Core͕ड৴ͨ͠σʔλΛSQSPUT
AWS24‣ Webଆࢸͬͯී௨ͷWebγεςϜ
AWS25‣ Worker͕SQS͔ΒGET‣ 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ಈ࡞Λ֬ೝͰ͖Δ
mockmock35‣ ࣌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 YouWe are Hiring!https://recruit.fusic.co.jp/