Upgrade to Pro — share decks privately, control downloads, hide ads and more …

5000台の仮想デバイスからAWS IoTにデータをガンガン送り付ける! IoTのテスト用仮想デバイス作成サービスmockmockの舞台裏

Keita Mohri
January 16, 2018

5000台の仮想デバイスからAWS IoTにデータをガンガン送り付ける! IoTのテスト用仮想デバイス作成サービスmockmockの舞台裏

AWS Deep Night in 福岡

Keita Mohri

January 16, 2018
Tweet

More Decks by Keita Mohri

Other Decks in Technology

Transcript

  1. ୆ͷԾ૝σόΠε͔Β"84*P5ʹσʔλΛΨϯΨϯૹΓ෇͚Δʂ
    *P5ͷςετ༻Ծ૝σόΠε࡞੒αʔϏε
    ͷ෣୆ཪ
    ໟརܒଠ

    View Slide

  2. ໟརܒଠʢ΋͏Γ͚͍ͨʣ
    'VTJD$P -UE
    NPDLNPDLϓϩμΫτΦʔφʔ
    લ৬͸ ༯ոͱ͔Ͱ༗໊ͳ
    ๭ήʔϜձࣾ
    ࣾ಺ͷ͓՛ࢠͷྲྀ௨ΛڇࣖΔ

    View Slide

  3. ͬͯԿͰ͔͢ʁ

    View Slide

  4. View Slide

  5. View Slide

  6. *P5ͷ࿩

    View Slide

  7. Ϟϊ
    ʜ
    Ϟϊ͕ɺ

    View Slide

  8. Ϟϊ
    ʜ
    Πϯλʔωοτܦ༝Ͱɺ

    View Slide

  9. αʔόʔΞϓϦ
    Ϟϊ
    ʜ
    αʔόʹσʔλΛૹΓɺ

    View Slide

  10. αʔόʔΞϓϦ
    Ϟϊ
    ʜ
    ղੳͨ͠Γͯ͠

    View Slide

  11. αʔόʔΞϓϦ
    Ϟϊ
    ʜ
    Կ͔͢Δ

    View Slide

  12. ͷࣄྫ
    גࣜձࣾαχοΫε༷
    ଠཅޫൃిॴϞχλϦϯάγεςϜ
    גࣜձࣾϓϦϯγϓϧ༷
    ϗʔϜηΩϡϦςΟγεςϜ

    View Slide

  13. *P5ͷ࿩
    ͓ΘΓ

    View Slide

  14. ͯ͞ɺ
    *P5ͷ։ൃ͠·͢

    View Slide

  15. αʔόʔΞϓϦ
    Ϟϊ
    ʜ
    ςετ͍ͨ͠

    View Slide

  16. αʔόʔΞϓϦ
    Ϟϊ
    ʜ
    σʔλ͕΄͍͠

    View Slide

  17. αʔόʔΞϓϦ
    Ϟϊ
    ʜ
    ࠓ͙͢΄͍͠

    View Slide

  18. αʔόʔΞϓϦ
    Ϟϊ
    ʜ
    ͍ΖΜͳύλʔϯͰ΄͍͠

    View Slide

  19. αʔόʔΞϓϦ
    Ϟϊ
    ʜ
    ͨ͘͞Μ΄͍͠

    View Slide

  20. Ͳ͏΍ͬͯ
    ௐୡ͠Α͏ʁ

    View Slide

  21. ϦΞϧͳϞϊ͔Β
    ૹΒͤΑ͏

    View Slide

  22. ΄͍͠σʔλΛग़ͮ͠Β͍
    େྔௐୡ΋೉͍͠ʜ

    View Slide

  23. ͳΒ͹ࣗ෼Ͱ
    γϛϡϨʔλʔ࡞Ζ͏

    View Slide

  24. ͳ͔ͳ͔ͦ͜·Ͱ
    ख͕ճΒͳ͍ʜ

    View Slide

  25. View Slide

  26. ͦ͜Ͱ

    View Slide

  27. αʔόʔΞϓϦ
    ʜ
    ࢥ͍Ͳ͓ΓʹͳΔԾ૝ͷϞϊ

    View Slide

  28. ͍ͭͰ΋
    ΄͍͠σʔλΛ
    ΄͍͠ྔ͚ͩ
    ૹͬͯ͘ΕΔʂ

    View Slide

  29. View Slide

  30. ࢦఆ͞ΕͨΤϯυϙΠϯτʹରͯ͠ɺ
    ݸମࣝผՄೳ͔ͭ
    ࣌ܥྻʹมԽ͢ΔσʔλΛ
    ಉ࣌ฒߦͰେྔʹૹ৴͢ΔγεςϜ
    NPDLNPDLΛٕज़ࢹ఺Ͱઆ໌͢Δͱ

    View Slide

  31. αʔόʔΞϓϦ
    ;Θͬͱͨ͠ಈ࡞Πϝʔδ
    σʔλૹ৴ઌͱ͔
    σʔλੜ੒ఆٛͱ͔
    NPDLݻ༗஋ઃఆͱ͔

    View Slide

  32. αʔόʔΞϓϦ
    NPDLΛͭ͘Δ
    ;Θͬͱͨ͠ಈ࡞Πϝʔδ

    View Slide

  33. αʔόʔΞϓϦ
    NPDLΛ͏͔͢͝

    ;Θͬͱͨ͠ಈ࡞Πϝʔδ

    View Slide

  34. Πϝʔδ͖ͭ·ͨ͠ʁ
    ͦΕͰ͸ຊ୊ʂ

    View Slide

  35. ͷ෣୆ཪ

    View Slide

  36. NPDLNPDLͷઃܭ
    NPDLͷਖ਼ମ
    Ϧιʔε֬อ
    γεςϜશମͷಈ࡞
    NPDLNPDLͷ։ൃ
    ςετ
    ຊ೔͓࿩͢͠Δ͜ͱ

    View Slide

  37. NPDLNPDL
    ͷઃܭ

    View Slide


  38. NPDLNPDLͷઃܭ্ͷࢹ఺
    ࢖༻͢ΔϦιʔε͸ඞཁ࠷௿ݶʹ͍ͨ͠
    ΋ͪΖΜݪՁ͸গͳ͍ํ͕͍͍
    ӡ༻Λָʹ͍ͨ͠
    ΋͠໰୊͕ى͖ͨ৔߹ʹΰϝϯφαΠ͢ΔϢʔβʔΛ࠷খݶʹ
    αʔόʔʹΠϯετʔϧ͢Διϑτ΢ΣΞΛ࠷খݶʹ

    View Slide


  39. NPDLNPDLͷઃܭ্ͷࢹ఺
    ࢖༻͢ΔϦιʔε͸ඞཁ࠷௿ݶʹ͍ͨ͠
    ΋ͪΖΜݪՁ͸গͳ͍ํ͕͍͍
    ӡ༻Λָʹ͍ͨ͠
    ΋͠໰୊͕ى͖ͨ৔߹ʹΰϝϯφαΠ͢ΔϢʔβʔΛ࠷খݶʹ
    αʔόʔʹΠϯετʔϧ͢Διϑτ΢ΣΞΛ࠷খݶʹ

    View Slide

  40. ͜ΕΒΛ;·͑ͯ
    NPDLͷਖ਼ମΛܾΊΑ͏

    View Slide


  41. NPDLͷਖ਼ମ
    αʔόʔ
    ίϯςφ
    ϓϩηε
    εϨου
    ᩵୔
    ࣭ૉ

    View Slide


  42. NPDLͷਖ਼ମ
    αʔόʔ
    ίϯςφ
    ϓϩηε
    εϨου
    ᩵୔
    ࣭ૉ
    ਌ϓϩηε͕ࢮΜͩΒ૯่Εͩ͠ɺ
    NPDLͷΞοϓσʔτ΋଍ฒΈἧ͑ͳ͖Ό
    ·ͩ᩵୔ͩ͠ɺ
    αʔόʔʹ%PDLFSΛΠϯετʔϧ͠ͳ͖Ό
    ͍͘ΒͳΜͰ΋᩵୔͗͢Δ
    ͪΐ͏Ͳ͍͍

    View Slide


  43. NPDLͷਖ਼ମ
    ϓϩηε
    εΫϦϓτݴޠ
    ίϯύΠϧݴޠ
    αʔόʔʹ࣮ߦ؀ڥΛΠϯετʔϧ͠ͳ͖Ό
    ୯ҰόΠφϦΛ࡞Ε͹ɺ
    ΄΅ૉͷαʔόʔͰ͍͚ͦ͏ʂ

    View Slide

  44. ͜ͷNPDLΛಈ͔͢αʔόʔͷ
    Ϧιʔε֬อઓུΛܾΊΑ͏

    View Slide


  45. NPDLαʔόʔ NPDLαʔόʔ
    Ϧιʔε֬อʢ্ख͡Όͳ͍7FSʣ

    View Slide


  46. NPDLαʔόʔ NPDLαʔόʔ NPDLαʔόʔ
    Ϧιʔε֬อʢ্ख͡Όͳ͍7FSʣ

    View Slide


  47. NPDLαʔόʔ NPDLαʔόʔ NPDLαʔόʔ
    ϝϯς͠·͢ʂ ͓஌Βͤ͢ΔϢʔβʔ͕͍ͬͺ͍ʜ
    Ϧιʔε֬อʢ্ख͡Όͳ͍7FSʣ

    View Slide


  48. NPDLαʔόʔ NPDLαʔόʔ NPDLαʔόʔ
    NPDLఀࢭ͠·͢
    ٧ΊΕ͹୆ۭ͖ͦ͏ʜ
    NPDLఀࢭ͠·͢
    Ϧιʔε֬อʢ্ख͡Όͳ͍7FSʣ

    View Slide

  49. とはいえ、
    誰がどのぐらいmockを起動するか
    予測できないしなぁ…

    View Slide

  50. それなら予測できるように
    すればいいじゃない!

    View Slide


  51. NPDLͷಉ࣌Քಇ୆਺Λ
    Ϣʔβʔʹઃఆͯ͠΋Β͏
    ͦ͏ͩɺྉۚମܥͱඥ෇͚Α͏ʂ

    View Slide


  52. NPDLαʔόʔ NPDLαʔόʔ NPDLαʔόʔ
    Ϧιʔε֬อʢ্ख7FSʣ

    View Slide


  53. NPDLαʔόʔ NPDLαʔόʔ NPDLαʔόʔ
    Ϧιʔε֬อʢ্ख7FSʣ

    View Slide


  54. NPDLαʔόʔ NPDLαʔόʔ NPDLαʔόʔ
    Ϧιʔε֬อʢ্ख7FSʣ
    ϝϯς͠·͢ʂ ͓஌Βͤ͢ΔϢʔβʔ͕গͳ͍

    View Slide


  55. NPDLαʔόʔ NPDLαʔόʔ
    αʔόʔ͕୆ফͤͨʂ
    ࢒͍ͬͯΔNPDL΋੔಴͞ΕͯΔʂ
    Ϧιʔε֬อʢ্ख7FSʣ
    NPDLఀࢭ͠·͢
    NPDLఀࢭ͠·͢

    View Slide


  56. NPDLαʔόʔ NPDLαʔόʔ NPDLαʔόʔ
    NPDL୆਺Ͱ͸ͳ͘ΩϟύγςΟʹΑΔ՝ۚͳͷͰɺ
    ͜Μͳঢ়ଶͰՔಇ͍ͯͯ͠΋௧͘ͳ͍
    Ϧιʔε֬อʢ্ख7FSʣ

    View Slide

  57. ͜ͷϦιʔε֬อઓུͰ
    γεςϜશମΛಈ͔ͦ͏

    View Slide

  58. Web
    Web Worker
    Worker
    EFMBZFE@KPC
    Cron
    ՔಈϩάΛ4ʹΞοϓϩʔυ
    Քಈϩάͷूܭ
    εςʔλεมߋཁٻ
    NPDLىಈཁٻ
    ఆظతʹΠϯελϯεΛνΣοΫ͠ɺ
    ՔಈNPDL͕ͳ͚Ε͹ΠϯελϯεΛ࡟আ͢Δ
    Mock
    Mock
    Mock
    Mock
    Mock
    NPDLىಈ
    γεςϜશମͷಈ࡞

    View Slide

  59. Web Worker
    ۭ͖͕ແ͚Ε͹ɺ&$ΠϯελϯεΛ
    ৽ͨʹىಈ
    ۭ͖͕͋Δ.PDLαʔόʔΛ୳ͯ͠
    ىಈτϦΨʔϑΝΠϧΛஔ͘
    ىಈτϦΨʔϑΝΠϧΛݕ஌ͯ͠NPDLΛىಈ
    ͦͷࡍɺ4͔ΒNPDLͷઃఆϑΝΠϧΛड͚औΔ
    Mock
    ۭ
    Mock

    Mock

    Mock

    Mock

    NPDLͷىಈ

    View Slide

  60. 5PXFSϓϩηε
    NPDLͷىಈ΍ऴྃɺϩάऩूΛ࢘Δ؅ཧϓϩηε
    &$ىಈ࣌ʹ4͔ΒόΠφϦΛऔಘ
    NPDLαʔόʔͷத਎
    Tower
    Mock
    Mock
    Mock
    Worker
    Mock
    Trigger Files
    .PDLϓϩηε
    NPDLͷ໾ׂΛ͢Δϓϩηε
    5PXFS͔Βىಈ͞ΕΔͱ͖ʹɺ ·ͩແ͚Ε͹
    4͔Β
    ɹόΠφϦΛऔಘ
    ىಈ࣌ʹ4͔ΒઃఆϑΝΠϧΛऔಘ͠ɺͦΕʹԊͬͯ
    ɹݻ༗ͷಈ࡞Λ࣮ݱ
    ૄ݁߹
    ඇಉظ
    ϝϯςφϯεϑϦʔ
    τϦΨʔϑΝΠϧ "NB[PO.2

    View Slide

  61. NPDLNPDL
    ͷ։ൃ

    View Slide

  62. NPDLNPDLͷ։ൃ্ͷ೰Έ
    ϩʔΧϧͰͷ݁߹ςετ͕
    ͱʹ͔͘΍Γʹ͍͘ʂ

    View Slide

  63. ͦ͜ʹݱΕͨٹੈओʂ

    View Slide

  64. ͦ͜ʹݱΕͨٹੈओʂ
    AmazonLinuxの
    イメージもあるよ!

    View Slide

  65. EFMBZFE@KPC
    ՔಈϩάΛ.*/*0ʹΞοϓϩʔυ
    Քಈϩάͷूܭ
    εςʔλεมߋཁٻ
    NPDLىಈཁٻ
    ఆظతʹΠϯελϯεΛνΣοΫ͠ɺ
    ՔಈNPDL͕ͳ͚Ε͹ΠϯελϯεΛ࡟আ͢Δ
    NPDLىಈ
    %PDLFSͰ݁߹ςετ
    WEB Worker
    Cron
    Mock
    Aggregator CloudStorage

    View Slide

  66. NPDLNPDLͷઃܭ
    NPDLͷਖ਼ମ
    Ϧιʔε֬อ
    γεςϜશମͷಈ࡞
    NPDLNPDLͷ։ൃ
    σόοά
    ຊ೔ͷ·ͱΊ
    ָ͍ͯͬ͠ͺ͍Ք͍͗ͨ
    ୯ҰόΠφϦʹΑΔϓϩηε
    ΩϟύγςΟ
    ϐλΰϥεΠον
    ͕Μ͹ͬͯΔ
    %PDLFSͰϐλΰϥεΠον

    View Slide

  67. 5IBOLZPV
    NPDLNPDL ݕࡧ
    無料枠もあるので使ってみてね!

    View Slide