$30 off During Our Annual Pro Sale. View Details »

ここが辛いよサーバーレス だが私は乗り越えた #builderscon

ここが辛いよサーバーレス だが私は乗り越えた #builderscon

Mitsuki Ogasahara

August 05, 2017
Tweet

More Decks by Mitsuki Ogasahara

Other Decks in Technology

Transcript

  1. ͕͜͜ਏ͍ΑαʔόʔϨε
    ͕ͩࢲ͸৐Γӽ͑ͨ
    খּݪΈ͖ͭ / @yamitzky

    View Slide

  2. wಋೖ
    wlαʔόʔϨεzͷશମਤ
    w+9௨৴ࣾͷαʔόʔϨεϩάج൫ͷྫ
    w৐Γӽ͑ͨฤ
    w͕͜͜ਏ͍Αຊ൪ͱͷࠩ෼
    w͕͜͜ਏ͍ΑϚωʔδυ
    wਅʹ৐Γӽ͑ΔαʔόʔϨε
    ໨࣍

    View Slide

  3. wখּݪΈ͖ͭ!ZBNJU[LZ
    wใಓϕϯνϟʔʮ+9௨৴ࣾʯͷ

    1ZUIPOc4DBMBc+BWB4DSJQUcػցֶश
    ΤϯδχΞ
    ࣗݾ঺հ

    View Slide

  4. wখּݪΈ͖ͭ!ZBNJU[LZ
    wใಓϕϯνϟʔʮ+9௨৴ࣾʯͷ

    1ZUIPOc4DBMBc+BWB4DSJQUcػցֶश
    ΤϯδχΞ
    w48
    ࣗݾ঺հ

    View Slide

  5. ಋೖฤ

    View Slide

  6. ࠓ೔࿩͢lαʔόʔϨεzͷఆٛ

    View Slide

  7. ࠓ೔࿩͢lαʔόʔϨεzͷఆٛ

    View Slide

  8. ࠓ೔࿩͢lαʔόʔϨεzͷఆٛ
    wશମΛؚΊͨ࿩ʹ͍ͨ͠

    View Slide

  9. wϩάج൫΍"1*ͳͲͰ೥൒΄ͲαʔόʔϨε
    Λ׆༻
    +9௨৴ࣾͷʮαʔόʔϨεϩάج൫ʯ

    View Slide

  10. wैདྷͷΞϓϦέʔγϣϯʹൺ΂ͯɺ

    ΠϯϑϥʗϦιʔεʹର͢Δؔ৺͕গͳ͘ࡁΉ
    wϦΫΤετ࣌ʹ͚ͩϦιʔεΛ֬อ͢Ε͹ྑ͍
    ͷͰɺ҆͘ͳΔ܏޲͕͋Δ
    wϚωʔδυΛ૊Έ߹ΘͤͯΞϓϦέʔγϣϯΛ
    ૊ΈཱͯΔ
    αʔόʔϨεͷಛ௃

    View Slide

  11. αʔόʔϨεWTαʔόʔϨε͡Όͳ͍
    ඇαʔόʔϨεࣄલʹܭࢉϦιʔεΛ֬อ͠ɺϓϩηεΛ্ཱ͓ͪ͛ͯ͘
    αʔόʔϨεܭࢉϦιʔε͸֬อͤͣɺ

    ཁٻ͕དྷͨΒϓϩηεΛ্ཱͪ͛ɺϦιʔεΛ֬อ͠ɺ͙͢ʹϓϩηε͕ࢮ͵
    $MVTUFS

    View Slide

  12. ϩʔΧϧ؀ڥͱຊ൪؀ڥ͕

    ҧͬͯਏ͍
    ͕ͩࢲ͸৐Γӽ͑ͨ

    View Slide

  13. ྫ.BDͰ਺ֶతܭࢉ͢ΔϓϩάϥϜΛ࡞Δ
    ·ͣিಥ͢Δ໰୊
    $ pip install numpy

    View Slide

  14. σϓϩΠ͢Δͱى͜Δ͜ͱ

    View Slide

  15. View Slide

  16. ྫ.BDͰ਺ֶతܭࢉ͢ΔϓϩάϥϜΛ࡞Δ
    ·ͣিಥ͢Δ໰୊
    $ pip install numpy
    ͢Ͱʹμϝ

    View Slide

  17. w'BB4͸ී௨-JOVYͰ࡞ΒΕ͍ͯΔ
    wOVNQZ͸lίϯύΠϧz͕ඞཁͳϥΠϒϥϦ
    wίϯύΠϧ͕ඞཁͳ΋ͷΛ.BD΍8JOEPXT
    Ͱ࡞ͬͯ΋-JOVYͰ͸ಈ͔ͳ͍
    ͳͥμϝͳͷ͔

    View Slide

  18. w.BD্Ͱ-JOVYΛಈ͔ͤΔ΋ͷ͕͋Δ
    Ͳ͏͢Ε͹͍͍͔

    View Slide

  19. wΞϓϦέʔγϣϯ͸%PDLFS্Ͱ࡞Γɺ

    ੜ੒෺͸AEPDLFSDQAͯ͠σϓϩΠ
    w"QFY΍TFSWFSMFTTͳͲͷσϓϩΠπʔϧΛ
    ࢖͏ͱΑΓྑ͍
    %PDLFSΛ࢖ͬͨlαʔόʔϨεޓ׵z։ൃ
    docker-compose.yml

    View Slide

  20. w$΍3VTU΍(PͳͲͷίϯύΠϧͨ͠

    όΠφϦͰ΋ɺ-BNCEB্Ͱಈ͔ͤΔ
    wཁ͢Δʹ-JOVY্Ͱ΍Δͷ͕େࣄ
    ͜Ε͕Ͱ͖Δͱɻɻɻ

    View Slide

  21. wlαʔόʔϨεz͸ϚωʔδυΛ૊Έ߹ΘͤΔ
    ຊ൪ͱϩʔΧϧͷࠩ෼1BSU̎

    View Slide

  22. wαʔόʔϨεͰॏ׆༻͢Δl4zl%ZOBNP%#z
    ͳͲ͸044Ͱ͸ͳ͍
    wˠ$*΍ϩʔΧϧ։ൃͰࠔΔ
    Ϛωʔδυͷ໰୊఺

    View Slide

  23. ϚωʔδυΛϩʔΧϧ։ൃͰ࢖͏ͳΒ
    ݁࿦γϛϡϨʔγϣϯͨ͠044Λ࢖͏

    View Slide

  24. wϚωʔδυ͸l͍͍ͩͨzγϛϡϨʔγϣϯͰ
    ͖ΔϓϩμΫτ͕ଘࡏ͢Δ
    w%ZOBNP%#-PDBMɺGBLFTɺFUDʜ
    ϚωʔδυͷγϛϡϨʔγϣϯ044

    View Slide

  25. w%ZOBNP%#Λຊ൪Ͱ࢖͏ͷͱಉ͡Α͏ͳ69͕
    ಘΒΕΔ
    %ZOBNP%#-PDBMY(6*
    https://hub.docker.com/r/yamitzky/dynamodb-gui/

    View Slide

  26. wςετ༻ͷ%ZOBNP%#ςʔϒϧͳͲΛ༻ҙ͠
    ͯɺ௚઀࢖ͬͨ΄͏͕ྑ͍͜ͱ΋͋Δ
    w͓ۚ΍ݖݶ΍ωοτϫʔΫͷؔ܎Ͱ࢖͑ͳ͍͜
    ͱ΋͋Δ͠ɺσόοάͷ͠΍͢͞ͷ໰୊΋͋Δ
    ී௨ʹ%ZOBNP%#΍4࢖͏ͷ͸μϝͳͷʁ

    View Slide

  27. w"1*Λ։ൃ͢Δͱ͖ʹૺ۰͢Δ໰୊
    wαʔόʔϨε"1*ͷlమ൘z͸"1*(BUFXBZ
    w"1*(BUFXBZ͸ϩʔΧϧʹ͸ଘࡏ͠ͳ͍

    ˠαʔόʔϨεͰಈͨ͘Ίʹ࡞ͬͨ"1*Λ

    ϩʔΧϧͰͲ͏σόοά͢Δ͔ʁ
    ຊ൪ͱϩʔΧϧͷࠩ෼1BSU

    View Slide

  28. αʔόʔϨε"1*Λ࡞ΔͳΒ
    ݁࿦ࠓ·Ͱ௨Γ

    ϑϨʔϜϫʔΫͰ࡞Δ

    View Slide

  29. ͍··Ͱ௨Γ࡞Δͱ͸
    8"'
    ࣗ࡞"1*
    ϩʔΧϧ؀ڥ
    8"'
    ࣗ࡞"1*
    αʔόʔϨε؀ڥ
    $ python main.py -BNCEBͰಈ͔͢
    Ξμϓλʔ

    View Slide

  30. 1ZUIPOͷ৔߹
    'MBTL%KBOHP
    ࣗ࡞"1*
    ϩʔΧϧ؀ڥ
    'MBTL%KBOHP
    ࣗ࡞"1*
    αʔόʔϨε؀ڥ
    84(*Λ-BNCEB
    Ͱಈ͔͢Ξμϓλʔ
    84(*

    View Slide

  31. w1ZUIPOʹ͓͚Δʮαʔόʔʯͷඪ४ن֨ Πϯ
    λʔϑΣʔε

    ˠ3VCZʹ͓͚Δ3BDLతͳ
    w'MBTL΋%KBOHP΋CPUUMF΋84(*ͱ͍͏ඪ
    ४ͷ্ʹ࡞ΒΕ͍ͯΔ
    84(*ͱ͸

    View Slide

  32. w͢ͰʹϥΠϒϥϦ͕͍͔ͭ͋͘Δ
    wIUUQTHJUIVCDPNBXTMBCTBXT
    TFSWFSMFTTFYQSFTT
    wIUUQTHJUIVCDPNTMBOLBXTHJ
    wIUUQTHJUIVCDPN.JTFSMPV;BQQB
    w8"'ͷن໿Λ-BNCEBͷن໿ʹม׵͢Δ͚ͩͳͷ
    Ͱɺ͢Ͱʹ044͕ͳͯ͘΋ͳΜͱ͔ͳΔ
    طଘͷϑϨʔϜϫʔΫPO-BNCEB

    View Slide

  33. w%PDLFSΛ׆༻ͯ͠ɺαʔόʔϨε؀ڥͱϩʔ
    Χϧ؀ڥͷࠩ෼ΛݮΒͦ͏
    wطଘͷϑϨʔϜϫʔΫʹ৐͚ͬͯ"1*Λ࡞Ζ͏
    ͜͜·Ͱͷ·ͱΊ

    View Slide

  34. Ϛωʔδυ͕ਏ͍
    ͕ͩࢲ͸৐Γӽ͑ͨ

    View Slide

  35. ࣭໰-BNCEB͸σϓϩΠͨ͠Βɺ

    ͋ͱ͸l͓·͔ͤzͳͷ͔ʁ

    View Slide

  36. ʊਓਓਓਓਓਓਓਓਓਓਓʊ
    ʼɹ-BNCEBಥવͷࢮɹʻ
    ʉ:?:?:?:?:?:?:?:?:?:ʉ

    View Slide

  37. w8"'΍84(*ͷ্ʹ৐ͤΕ͹ɺ

    "ࣾ΍(ࣾ΍.͕ࣾϛαΠϧ߈ܸ͞Εͯ΋ͳΜ
    ͱ͔ͳΔ
    -BNCEBಥવͷࢮରࡦ
    ۓٸ࣌͸௨ৗͷαʔόʔͰ
    ΞϓϦέʔγϣϯΛಈ͔͢

    View Slide

  38. ࣭໰Ϛωʔδυͬͯো֐ͳ͍Μ͚ͩͬʁ

    View Slide

  39. wαʔόʔϨεͰҰ൪ͭΒ͔ͬͨࣄҊ
    wࣗ෼ͷແྗ͞Λࢥ͍஌Δ
    ,JOFTJTಥવͷΤϥʔ

    View Slide

  40. wαʔόʔϨεͰҰ൪ͭΒ͔ͬͨࣄҊ
    wࣗ෼ͷແྗ͞Λࢥ͍஌Δ
    w̍िؒفͬͨΒ௚ͬͨ
    ,JOFTJTಥવͷΤϥʔ

    View Slide

  41. w4ʹো֐͕ى͖ͨΒʁ,JOFTJT͸ʁ
    %ZOBNP%#͸ʁ
    wͦͷͱ͖ɺσʔλͷܽଛ͸ଘࡏ͠ͳ͍ʁ
    wো֐ʹඋ͑ɺ༗ঈαϙʔτ΋େࣄ
    Ϛωʔδυͷো֐͸૝ఆ͠Α͏

    View Slide

  42. ਅʹ৐Γӽ͑Δ

    αʔόʔϨε

    View Slide

  43. wݱ࣮໰୊ɺʮαʔόʔϨεʹΫϥ΢υࡇΓʯ
    w-BNCEBʹଘࡏ͢Δ֤छ੍໿
    wϓϥΠϕʔτωοτϫʔΫͷ੍໿
    wύϑΥʔϚϯεͷ੍໿
    wˠΫϥ΢υґଘʹϚωʔδυΏ͑ʹɺ

    ɹ৐Γӽ͑Α͏͕ͳ͍ɾɾɾͷ͔ɾɾɾʁ
    ϚωʔδυΏ͑ͷݶք

    View Slide

  44. w'BB4ͬͯl-BNCEBzͱ͔l$MPVE'VODUJPOz
    ͚ͩͳͷ͔ʁ
    w'BB4͸lΫϥ΢υͷձࣾz͔͠ఏڙͰ͖ͳ͍

    ΋ͷͳͷ͔ʁ
    wˠ࣮͸ɺͦΜͳ͜ͱͳ͍
    ͦ΋ͦ΋ɺαʔόʔϨεͬͯ

    View Slide

  45. w#VJMEJOH4FSWFSMFTT"QQTXJUI%PDLFS
    ࡞ΔαʔόʔϨε
    https://blog.docker.com/2016/06/building-serverless-apps-with-docker/
    ͜͜Λࣗ෼ͨͪͰ༻ҙ͢Δ͔ɺΫϥ΢υ͕༻ҙ͢Δ͔ͷҧ͍

    View Slide

  46. lαʔόʔϨεz͸࡞ΕΔ

    View Slide

  47. wܭࢉϦιʔεͷϓʔϧΛΫϥ΢υ͕࣋ͭͷ͔ɺ

    ࣗࣾͰ࣋ͭͷ͔ͷҧ͍
    w΋ͪΖΜɺࣗ෼͕ؔ৺Λ࣋ͭඞཁͷ͋Δ΋ͷ͸

    ૿͑Δ
    w+9௨৴ࣾͰ͸ɺ-BNCEBͱ&$4Λ࢖͍෼͚ͯΔ
    wˠlϚωʔδυzʹͩ͜ΘΔඞཁ͸ɺ࣮͸ͳ͍
    ࡞ΔlαʔόʔϨεz

    View Slide

  48. wࠓ೔͸ɺlαʔόʔϨεzΛӡ༻ͯ͠ਏ͔ͬͨ໰୊ͱɺ

    ͦͷղܾࡦΛ঺հ͠·ͨ͠
    wαʔόʔϨε΍Ϛωʔδυ͸ɺࠇຐज़Ͱ͸ͳ͘

    lͨͩͷ-JOVYzlͨͩͷίϯςφٕज़zͱଊ͑ɺ৐Γӽ͑Δ
    wϚωʔδυͷαʔόʔϨεͱɺࣗࣾαʔόʔϨεɺ

    ࢖͍෼͚͕େࣄ
    wใಓϕϯνϟʔʮ+9௨৴ࣾʯ͸ΤϯδχΞืूதͰ͢ʂ
    ·ͱΊ

    View Slide