Pro Yearly is on sale from $80 to $50! »

SORACOM Technology Camp 2020 - Day2 Deep Dive: IoTデバイス設計におけるベストプラクティス /technology-camp2020-day2-s08

7cd783377515bdf8207062840b7b2f4e?s=47 SORACOM
November 18, 2020

SORACOM Technology Camp 2020 - Day2 Deep Dive: IoTデバイス設計におけるベストプラクティス /technology-camp2020-day2-s08

多くのIoTデバイスは一度設置されると、問題が起きた際に現地に駆けつけて調査や対応が物理的に難しくなります。また、デバイスの数が増えてくると個別の対応はより困難になります。理想的なIoTデバイスは、ハードウェアの故障やソフトウェアのトラブル、回線の一時的な障害に対して自律的な回復手段を持っていることが求められます。

本セッションではそういったデバイスを実装するために考慮すべきプラクティスをご紹介します。

株式会社ソラコム
ソリューションアーキテクト 小梁川 貴史

7cd783377515bdf8207062840b7b2f4e?s=128

SORACOM

November 18, 2020
Tweet

Transcript

  1. %FFQ%JWF*P5σόΠεઃܭʹ͓͚Δ ϕετϓϥΫςΟε ιϦϡʔγϣϯΞʔΩςΫτɿখྊ઒ 

  2. ຊ೔ͷϋογϡλά TPSBDPN !403"$0.@13 IUUQTXXXGBDFCPPLDPNTPSBDPNKQ

  3. ࣗݾ঺հ גࣜձࣾιϥίϜ ιϦϡʔγϣϯΞʔΩςΫτ খྊ઒ و࢙ ͜΍ͳ͕Θ ͔ͨ͠  ܦྺ •

    4*ձࣾͰ։ൃΠϯϑϥઃܭɺߏஙͳͲ෯޿͘ܦݧ • ిػϝʔΧʔͰࣗࣾαʔϏεɺࣾ಺ڞ௨ϓϥοτϑΥʔϜͷ։ൃɺӡ༻ • ֎ࢿܥΫϥ΢υͷιϦϡʔγϣϯΞʔΩςΫτͱͯ͠ ύʔτφʔ୲౰ *P5εϖγϟϦετϓϩτλΠϐϯά
  4. ౰ηογϣϯʹ͍ͭͯ • ͓࿩͢Δ͜ͱ͠ͳ͍͜ͱ • ͜͜Ͱ͓࿩͢ΔσόΠε͸σόΠε্Ͱಈ͘ιϑτ΢ΣΞʹ͍ͭͯߟ͑Δ ΂͖ඇػೳཁ݅Λத৺ʹ͓࿩͠·͢ɻϋʔυ΢ΣΞతͳσόΠε ηϯαʔͳͲͷ࿩͸௚઀తʹ͸ग़͖ͯ·ͤΜɻ • σόΠεͱந৅తͳදݱͱͳΓ·͕͢ɺ*P5σόΠεͱͯ͠௨৴Λߦ͏΋ ͷΛࢦͯ͠ར༻͍ͯ͠·͢ɻʢ*P5ήʔτ΢ΣΠ΍#$ͷ੡඼ʣ

    • ඞͣ͠΋ղͱͳ͍ͬͯΔ΋ͷͰ͸ͳ͘ɺ๨Ε͕ͪͳݕ౼߲໨΍ͦΕʹର͢ Δରࡦྫͱͯ͠͝঺հ͠·͢ɻ • ର৅ͷํ • *P5γεςϜΞʔΩςΫτ • σόΠεઃܭऀ • *P5γεςϜʹؔΘΔόοΫΤϯυٕज़ऀ
  5. "HFOEB • ϓϩϏδϣχϯά • ঢ়ଶ؅ཧ • ϦϞʔτίϚϯυϦϞʔτϝϯςφϯε • ෼ࢄ •

    ·ͱΊ
  6. "HFOEB • ϓϩϏδϣχϯά • ঢ়ଶ؅ཧ • ϦϞʔτίϚϯυϦϞʔτϝϯςφϯε • ෼ࢄ •

    ·ͱΊ
  7. ϓϩϏδϣχϯά σόΠεΛར༻͢Δ·Ͱͷ޻ఔͰߟ͑Δ΂͖಺༰ʹ͍ͭͯ੔ཧ͠·͢ɻ ҎԼྫͰ͕͢ɺॳظઃఆ෦෼͸ɺόοΫΤϯυ։ൃऀͱͷဃ཭ΛੜΈ΍ ͍ͨ͢ΊʹɺશମΛઃܭ্ͨ͠Ͱػೳઃܭɺ෼୲Λݕ౼͢Δඞཁ͕͋Γ ·͢ɻ  ###$੡඼ͷ޻৔ੜ࢈ηοτΞοϓ͔Βར༻͞ΕΔ·Ͱͷϑ ϩʔ  ֎෦͔Βߪೖͨ͠(BUFXBZ΁ͷॳظηοτΞοϓ

     ࣮σόΠεͱόοΫΤϯυαʔϏε΁ͷొ࿥
  8. Α͋͘Δٞ࿦ • ޻৔ͰͰ͖Δ͜ͱͷൣғͷ֬ೝ • ೝূ৘ใͱͳΔݸผೝূݤͷઃఆ͸೉͍͜͠ͱ͕ଟ͍ • ෺ཧͷػثͱόοΫΤϯυΫϥ΢υαʔϏεͷݻ༗ࣝผࢠ %#ͱͷඥ෇͚ઃఆ • ੡඼ग़ՙલͷςετɺग़ՙ·Ͱͷϑϩʔ

    • ࣮ࡍͷՔಇςετ͕͋Δ৔߹ɺ՝͕ۚ࢝·ͬͯ͠·͏ 403"$0.ͷ4*.΋ಉ༷ɺάϩʔόϧ4*.Λ͝ར༻͍ͨͩ͘ ͜ͱͰதஅதεςʔλεͰແବΛল͚ΔՄೳੑ΋͋Γ·͢
  9. ղܾࡦ • ϒʔτετϥοϐϯάॲཧ • σόΠεॳճىಈ࣌ͷ௨৴Ͱ޻৔ग़ՙͰઃఆͰ͖ͳ͍ॲཧΛ σόΠεଆͷॲཧͱͯ͠࡞ΓࠐΉ • 403"$0. ϝλσʔλαʔϏε΍Ϋϥ΢υαʔϏεͷ ূ໌ॻൃߦػೳΛར༻

    • ࡏݿظ͕ؒ͋Δ੡඼ • ར༻։࢝ΛτϨʔεͰ͖ΔΑ͏ͳΠϕϯτ؅ཧɺ౷ܭػೳΛར ༻ɻ403"$0.4*.Λར༻͢Δ৔߹͸403"$0.*P54*.ɺ Πϕϯτϋϯυϥͷݕ౼
  10. "HFOEB • ϓϩϏδϣχϯά • ঢ়ଶ؅ཧ • ϦϞʔτίϚϯυϦϞʔτϝϯςφϯε • ෼ࢄ •

    ·ͱΊ
  11. σόΠε؅ཧ ੡඼ग़ՙࡁσόΠεͷঢ়ଶΛ؅ཧ͢Δ͜ͱͰɺӡ༻࣌ʹ͓͚Δ όοΫΦϑΟεۀ຿ͱͯ͠ͷσόΠε؅ཧ΍ϑΝʔϜ΢ΣΞ ΞοϓσʔτͷΑ͏ͳ௨஌ɺྉۚʹؔΘΔ಺༰Λݕ౼͓ͯ͘͠ ͱن໛͕େن໛ʹͳͬͨͱ͖ʹ΋γεςϜͰରԠ͕ՄೳʹͳΓ ·͢ɻ ΦϯϥΠϯͷσόΠεʁ GJSNWFS YZͷ΋ͷ͸ʁ γεςϜؒ࿈ܞ

    ঢ়ଶ໰͍߹Θͤ ࣮ଶͱ%#ͷTZOD TIBEPXEJHJUBMUXJO
  12. Α͋͘Δ՝୊ • ࣮ࡍͷσόΠεͱΫϥ΢υ΍ࣗࣾϗετʹ͓͚Δ؅ཧ༻ ͷ࿦ཧ໊ɺ4*.ͷ؅ཧΛ͍ͨ͠ • 4*.ͷར༻ྉ͕ߴ͍͚Ͳɺ͜Ε͸Ͳ͜Ͱ࢖ΘΕ͍ͯΔσό ΠεͩΖ͏ʁ • ར༻Λ΍ΊͨσόΠεͷ4*.͸ͲΕͩΖ͏ •

    σόΠε͸ࠓΦϯϥΠϯͳͷ͔ʁ • ࠓࢢ৔ʹग़͍ͯΔσόΠεͰ࢖ΘΕ͍ͯΔͷঢ়ଶ • σόΠεͷઃఆมߋɺϑΝʔϜ΢ΣΞΞοϓσʔτΛߦ ͍͍ͨ • ݸผɺಛఆɺάϧʔϓ୯ҐͳͲͷ؅ཧ୯Ґͷઃܭ • ܰ౓ͷઃఆมߋ • ΞϓϦέʔγϣϯશମͰͷઃఆมߋ
  13. ղܾࡦ • σόΠε؅ཧ • σόΠε؅ཧ༻ͷ%#΍Ϋϥ΢υαʔϏεͷػೳͷ׆༻ɺ 403"$0.ͷ৔߹ 4*.ϝλαʔϏεͷ׆༻ͳͲ • ࣗ෼ͷϢʔεέʔεԿΛத৺ʹσόΠεΛΈΔͷ͔Ͱ࿦ཧ໊΍Ϋ ΤϦͷઃܭΛ͢Δ͜ͱ͕ॏཁ

    • ઃఆมߋ΍ϑΝʔϜ΢ΣΞΞοϓσʔτ • Ϋϥ΢υαʔϏεͷσόΠε؅ཧػೳͰ͸ɺઃఆมߋͱ௨ ஌ػೳ͕ҰମԽ͍ͯ͠Δ΋ͷ͕͋Δ • ঢ়ଶ֬ೝ༻ͷϝοηʔδػೳɺ"1*ͷݕ౼ • ϑΝʔϜϑΝΠϧͷஔ͖৔ॴͳͲͷݕ౼ɿΦϒδΣΫτετϨʔ δ΍ 403"$0.)BSWFTU'JMFTͷར༻Λݕ౼ɻ オブジェクトストレージを利用する場合はセキュアアクセスの設計も重要
  14. 403"$0.)BSWFTU'JMFTΛ׆༻ͨ͠ ϑΝʔϜΞοϓσʔτ௨஌ͷྫ ࠷৽'8 ೔࣍ि݄࣍࣍Ͱ໰͍߹Θͤ 6QMPBE )BSWFTU'JMFTͰ͸ϑΝΠϧͷϝλ৘ใͱͯ͠&5BHΛαϙʔτͯ͠ ͍ΔͨΊมߋ͕ಉ͡ύεʹ໰͍߹ΘͤΛͯ͠มߋ͕͋ͬͨࡍʹͷΈ μ΢ϯϩʔυ͕Մೳ &5BHʹมߋ͕͋ͬͨࡍʹμ΢ϯϩʔυ )BSWFTU'JMFT

    403"$0.TFSWJDFFOEQPJOU ΍ Ϋϥ΢υαʔϏεࣗࣾαʔϏεͷ ΤϯυϙΠϯτ ྫ '8μ΢ϯϩʔυ ηϯγϯάσʔλͷΞοϓϩʔυ͸ ར༻͍ͯ͠ΔΤϯυϙΠϯτ΁
  15. "HFOEB • ϓϩϏδϣχϯά • ঢ়ଶ؅ཧ • ϦϞʔτίϚϯυϦϞʔτϝϯςφϯε • ෼ࢄ •

    ·ͱΊ
  16. ϦϞʔτίϚϯυϝϯςφϯε *P5σόΠεͷಛੑͱͯ͠ɺଟ͘ͷ৔߹σόΠε΁ͷ ϑΟʔυόοΫ΍ίϚϯυ࣮ߦΛߦ͍͍ͨέʔε͸ଟ ͋͘Γ·͢ɻ͜͜Ͱ͸Α͋͘ΔϑΟʔυόοΫύλʔ ϯͱཁ݅ʹ͍ͭͯ੔ཧ͠·͢ɻ • σόΠεͷঢ়ଶ • ઃఆ •

    ࠶ىಈ σόΠεͷঢ়ଶ͸ʁ ίϚϯυ࣮ߦΛ͍ͨ͠ ݁Ռ DPNNBOE
  17. Α͋͘Δٞ࿦ • σόΠεͷঢ়ଶऔಘͳͲσόΠεͷࠓͷঢ়ଶΛऔಘ ͍ͨ͠ • σόΠεͷઃఆঢ়گ • ͓٬༷͔Βෆௐͷ໰͍߹Θͤͷ࿈བྷΛݩʹ ෆఆظͳϩάऔಘ΍NFNPSZEVNQͷऔಘͳͲ ࡞ۀ΍ϫʔΫϩʔυΛέΞ͍ͨ͠

    • ௚઀తͳ(6*ͷૢ࡞ɺ΋͘͠͸ෆఆظͳλΠϛϯά ͔ͭෆఆظͳίϚϯυͷ࣮ߦΛߦ͍͍ͨ • σόΠε΁ͷ௚઀઀ଓ • ϩάΠϯ
  18. ղܾࡦ  ௨৴ϕʔεͰͷίϚϯυ࣮ߦґཔ • ࣄલʹ΍Γ͍ͨ͜ͱ͕੔ཧͰ͖͓ͯΓɺίϚϯυ͕ࣄલʹ ༻ҙͰ͖Δ • σόΠε04ͷίϚϯυͰ࣮ݱͰ͖Δ • ্ه͕੔ཧͰ͖͍ͯΔલఏͰɺ.255)551

    5$16%1 ʹ ΑΔίϚϯυ࣮ߦͷݕ౼͕Ͱ͖·͢ɻϝοηʔδͷϖΠϩʔυ .255ͷ৔߹ UPQJD ʹίϯςΩετ٧ΊͯɺσόΠε͕ίϚ ϯυΛ࣮ߦɺ݁ՌΛϦϓϥΠͰ௨஌͢Δ
  19. ղܾࡦ  ௚઀ϩάΠϯͰͷૢ࡞ *171/΍ɺηΩϡΞτϯωϦϯάαʔϏεͷར༻Λݕ౼͢Δ ඞཁ͕͋Γ·͢ɻ 403"$0.ͷ৔߹ɺ403"$0.(BUF  /BQUFSαʔϏε ͷར༻͕ީิͱͳΓ·͢ɻ

  20. ͓٬༷γεςϜ SORACOM Canal SORACOM Direct SORACOM Door SORACOM Gate ઀ଓ༻αʔό

    SORACOM Gate   ਖ਼౰ͳϢʔβ  ΞΫηεΛϦΫΤετ ʢ4*.*% ϙʔτ ༗ޮظؒʣ  άϩʔόϧ*1ͱϙʔτ 403"$0. /BQUFS  ࢦఆͷάϩʔόϧ*1ͱ ϙʔτʹΞΫηε 403"$0.(BUF 403"$0./BQUFS
  21. "HFOEB • ϓϩϏδϣχϯά • ঢ়ଶ؅ཧ • ϦϞʔτίϚϯυϦϞʔτϝϯςφϯε • ෼ࢄ •

    ·ͱΊ
  22. ෼ࢄͷඞཁੑ খن໛ͳ͏ͪ͸໰୊͕ͳ͔ͬͨ͸ͣͳͷʹɺσόΠεͷ୆਺͕ ૿͑ΔʹͭΕͯ௨৴ྔɺ௨৴Τϥʔ͕ൃੜ૿Ճ͍ͯ͠Δɻ σʔλΛ΍ΓऔΓ͢Δࡍͷ࣌ؒىಈ΍पظىಈΛ࣌ࠁϕʔεʹ ͢Δͱॲཧ΍௨৴͕ඇޮ཰ʹͳΔ͜ͱ͕͋Δɻ DSPO    

    EBUBTFOE JGIUUQFSSPS\ TMFFQ SFUSZ ^
  23. Α͋͘Δ՝୊ ޙͰؾ͕ͭ͜ͱ͕ଟ͍ͷͰٞ࿦Ͱ͸ͳ͘՝୊ • ͳͥूத͕ඇޮ཰ͳͷ͔ • Ϋϥ΢υαʔόͷεέʔϧ؍఺ͱͯ͠୹࣌ؒߴෛՙͰ΋εέʔϧ͕ؒʹ߹ Θͳ͍͜ͱ͕͋Δɻ • όοΫΤϯυͷॲཧྔΛ௒͑ΔϦΫΤετϦτϥΠ͕ଓ͘ͱαʔϏεμ ΢ϯ΋ى͖ಘΔ

    • ίετ؍఺ͱͯ͠΋ɺશମͱͯ͠ͷ୯Ґ࣌ؒʹඞཁͳॲཧྔ͕૿͑Δɺ௨ ৴ྔ͕૿͑Δ 定刻起動、固定リトライ値の設定 retry 瞬間的なピークが続き 処理が捌ききれない、 ピークに合わせたサー バの準備は無駄が多い (オートスケールなども 間に合わない) retry データ取得は定時、送信タイミング/retryに 幅を持たせる 許容可能な時間の分 だけピークを低くでき る。バックエンドの リソースも均等に使う ことでメリットがでる
  24. ରࡦ • ෼ࢄͷߟ͑ํ • ཚ਺΍4FFE஋+JUUFSʹΑΔ෼ࢄΞϧΰϦζϜ • αʔόαΠυ͔ΒͷϨεϙϯεͰͷXBJU෼ࢄɺϝϯςϯεதͷ ରԠ • ڐ༰Ͱ͖Δσʔλ౸ୡͷ෯ɺ݁Ռ੔߹ੑͰૹ৴λΠϛϯάʹ͹Β

    ͖͕ͭ͋ͬͨ΋Α͍ઃܭͷݕ౼ • ϦτϥΠͷߟ͑ํ • ϦτϥΠͷߟ͑ํͱͯ͠ΤΫεϙωϯγϟϧόοΫΦϑ ࢦ਺ؔ਺తޙୀ ͱ͍͏ߟ͑ํ͕͋Δ • ௨৴Τϥʔͱϝϯςφϯε͸ίʔυΛ෼͚ΔͳͲΤϥʔʹ͖ͪΜ ͱҙຯఆٛɺͦΕʹ߹ΘͤͨσόΠεΞΫγϣϯͷ࣮૷Λ͢Δ
  25. "HFOEB • ϓϩϏδϣχϯά • ঢ়ଶ؅ཧ • ϦϞʔτίϚϯυϦϞʔτϝϯςφϯε • ෼ࢄ •

    ·ͱΊ
  26. ·ͱΊ ຊ೔͸։ൃॳظʹɺ๨ΕΒΕ͕ͪͳඇػೳཁ݅ʹ ϑΥʔΧεΛ౰͓ͯͯ࿩͍͖ͤͯͨͩ͞·ͨ͠ɻ օ༷͕࢖ΘΕ͍ͯΔzσόΠεzͷఆٛʹΑΓɺຊ೔ͷ࿩ ʹ͋Δ࿩ʹɺ౰ͯ͸·Δ΋ͷ΍౰ͯ͸·Βͳ͍΋ͷ͕ ͋Δ͔ͱࢥ͍·͢ͷͰɺνΣοΫͷΑ͏ͳܗͰݟ͍ͯ ͚ͨͩΕ͹ͱࢥ͍·͢ɻ

  27. ؔ࿈ηογϣϯͷ͝঺հ %BZ • σόΠεɺΫϥ΢υͷ૒ํ޲௨৴ σβΠϯύλʔϯͱ࣮ફ • %FFQ%JWFແઢςΫϊϩδʔͱ ௨৴ϓϩτίϧͱলిྗੑೳ

  28. 403"$0.ͷئ͍ Ϋϥ΢υ 㱺ଟ͘ͷϏδωεɺ8FCαʔϏε 403"$0. 㱺ଟ͘ͷ*P5ϏδωεɺγεςϜ ͨ͘͞Μͷ *P5ϓϨΠϠʔ͕ੜ·Ε·͢Α͏ʹ

  29. ੈքதͷώτͱϞϊΛͭͳ͛ ڞ໐͢Δࣾձ΁