Save 37% off PRO during our Black Friday Sale! »

swoole と laravel-swoole を用いたハイパフォーマンスアプリケーション構築

218473ff7abad0fcd72865da2b23bb5b?s=47 memory
March 10, 2021

swoole と laravel-swoole を用いたハイパフォーマンスアプリケーション構築

English: Build a high performance application with swoole and laravel-swoole
At: 2021/03/37 PHPerKaigi 2021

218473ff7abad0fcd72865da2b23bb5b?s=128

memory

March 10, 2021
Tweet

Transcript

  1. Ί΋Γʔ TXPPMFͱMBSBWFMTXPPMFΛ༻͍ͨ ϋΠύϑΥʔϚϯεΞϓϦέʔγϣϯߏங 1)1FS,BJHJ 1

  2. ࣗݾ঺հ 2

  3. @2020 Torana, Inc. @2020 Torana, Inc. Ί΋Γʔ ϓϩμΫτ։ൃ෦ Ϛωʔδϟʔ݉ςοΫϦʔυ Ί΋ΓʔͪΌΜͷϑΥʔΫݩͰ͢ɻ

    
 1)1Ͱ+7.Λ࣮૷ͨ͠ΓຊΛॻ͍ͯͨΓͯ͠ ·͢ɻೕ༮ࣇ޲͚͓΋ͪΌͷαϒεΫϦϓγϣ ϯαʔϏεΛఏڙ͢Δ5PSBOBͱ͍͏ձࣾʹ͍ ·͢ !NNS 3
  4. @2020 Torana, Inc. ࡢ೥຤ʹࢿۚௐୡ͠·ͨ͠ 4 8,200 Ҿ༻: https://jp.techcrunch.com/2020/12/07/torana-toysub/

  5. ΋͘͡ 5

  6. @2020 Torana, Inc. ΋͘͡ τϥʔφͰ͸ͲΕ͘Β͍ϋΠύϑΥʔϚϯεͳͷ͔ ϋΠύϑΥʔϚϯεʹ͢Δ·ͰͷಓͷΓ ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ ·ͱΊ 6

  7. τϥʔφͰ͸ͲΕ͘Β͍ 
 ϋΠύϑΥʔϚϯεͳͷ͔ 7

  8. @2020 Torana, Inc. τϥʔφͰ͸ͲΕ͘Β͍ϋΠύϑΥʔϚϯεͳͷ͔ ͳͥTXPPMFͳͷ͔ʁ  ౰ॳͷฐࣾϓϩμΫτͰ͸ҰཡͰ͸݅ͷද͕ࣔͩͬͨ 
 ϏδωεαΠυ͔Β͸݅Λৗ࣌දࣔͯ͠΄͍͠ͱ͍͏ཁ๬ ͕͋ͬͨ

     ֎෦͔Βऔಘ͢ΔΑ͏ͳ"1*΍ɺ෺ྲྀͱ͍ͬͨಛੑ͔Βॏ͍ͨ σʔλ͕େྔʹ͋Δɻ  ϝϯόʔ͕গͳ͍தͰखܰʹύϑΥʔϚϯεΛग़͍ͨ͠ɻ 8
  9. @2020 Torana, Inc. τϥʔφͰ͸ͲΕ͘Β͍ϋΠύϑΥʔϚϯεͳͷ͔ ͳͥMBSBWFMTXPPMFͳͷ͔ʁ  MBSBWFMTͱ͍͏ͷ΋͕͋ͬͨMBSBWFMTXPPMFΛબఆͨ͠ɻ  -BSBWFMͷطଘͷػೳΛαϙʔτ͍ͯ͠Δൣғ͕େ͖͍ͱ͍͏ͷ ͕Ұͭͷେ͖ͳཧ༝

     ΋͏Ұ͕ͭ։ൃऀͷ"MCFSU$IFO͞Μ͕1)1ΧϯϑΝϨϯε ԭೄʹདྷ͍ͯͯɺ࣮ࡍʹϓϩμΫτͰͷ࠾༻ࣄྫΛฉ͍͔ͨΒ 9
  10. @2020 Torana, Inc. τϥʔφͰ͸ͲΕ͘Β͍ϋΠύϑΥʔϚϯεͳͷ͔ ͳͥMBSBWFMTXPPMFͳͷ͔ʁ  ͪͳΈʹγϣϘ͍Ͱ͕͢ίϛοτ΋͠·ͨ͠ 10

  11. @2020 Torana, Inc. τϥʔφͰ͸ͲΕ͘Β͍ϋΠύϑΥʔϚϯεͳͷ͔ ͦ΋ͦ΋౰ॳ͸QIQGQNΛ࢖༻͍ͯͨ͠  ౰ॳ͸QIQGQNΛ࢖༻͍͕ͯͨ͠ɺύϑΥʔϚϯεʹ໰୊͕ ͋ͬͨ  σʔλΛऔಘ͠ͳ͍৔߹Ͱ΋਺ඵ୯ҐͰ͔͔͍ͬͯͨ

    11
  12. @2020 Torana, Inc. τϥʔφͰ͸ͲΕ͘Β͍ϋΠύϑΥʔϚϯεͳͷ͔ ͱΓ͋͑ͣMBSBWFMTXPPMFʹ৐Γ׵͑Δ  ૣ͍ͱᷚͷMBSBWFMTXPPMFʹ৐Γ׵͑  ৐Γ׵͚͑ͨͩͰ௨ৗͷ"1*ͩͱdNTͰϨεϙϯε͕ ฦͬͯ͘ΔΑ͏ʹͳͬͨ

     ݅औಘ͸ਖ਼֬ʹ͸ܭଌ͍ͯ͠ͳ͍͕MBSBWFMTXPPMFಋೖޙ Ͱ΋ඵ͔͔͍ͬͯͨ  ͦͷޙύϑΥʔϚϯενϡʔχϯάΛߦ͍ඵલޙʹͳͬͨ 12
  13. ઌʹँ͓͖ͬͯ·͢ɻ 
 ϓϩϙʔβϧͷഒߴ଎Խ͸࣮͸ӕͰ͢😿 13

  14. @2020 Torana, Inc. τϥʔφͰ͸ͲΕ͘Β͍ϋΠύϑΥʔϚϯεͳͷ͔ 14 28 ඵ → 1.5 ඵ

    τʔλϧͰ໿ 15 ഒߴ଎ԽΛ࣮ݱ
  15. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱͷ 
 ಓͷΓ 15

  16. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·ͰͷಓͷΓ QIQGQN͔ΒMBSBWFMTXPPMF΁  QIQGQNͱҧ͍MBSBWFMTXPPMF͸΢ΣϒαʔόʔΛࣗલͰཱͯ Δඞཁ͕͋Δ͕QIQGQNΛ࢖͏ͱ͖ͱಉ༷ʹϦόʔε 
 ϓϩΩγΛ࢖༻

     ಛʹۤͳ͘ɺϦόʔεϓϩΩγͷॻ͖ํ͕ॻ͍ͯ͋ΔͷͰࢀߟʹ ͨ͠  IUUQTHJUIVCDPNTXPPMFUXMBSBWFMTXPPMFXJLJ/HJOY $PO fi HVSBUJPO 16
  17. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·ͰͷಓͷΓ طଘͷίʔυͷॻ͖׵͑  طଘͷίʔυͷҰ෦Λίϧʔνϯ࢖༻͢ΔΑ͏ʹॻ͖׵͑  Ұ൪ॲཧ͕஗͍ՕॴΛॏ఺తʹ 

    ੩తͳϑΟʔϧυͷ஋ΛಈతͳϑΟʔϧυʹมߋ  MBSBWFMTXPPMFͷ΢ΣϒαʔόʔΛ࢖͏ͱ੩తϑΟʔϧυͷ ஋͸1)1ͷϥΠϑαΠΫϧ্Ϧηοτ͞Εͳ͍ͨΊɻ 17
  18. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·ͰͷಓͷΓ %#υϥΠόɺ3FEJTυϥΠόͷࣗ࡞  -BSBWFMطଘͷ%#ίωΫλ΍3FEJTίωΫλ͸ίϧʔνϯʹ ରͯ҆͠શͰ͸ͳ͍  ಉ࣌ॻ͖ࠐΈಡΈࠐΈ͕ൃੜͨ͠ͱ͖ʹϦιʔε͕

    
 ͿͬյΕͯ4&(7΋ग़ͣ͞ʹ1)1͕ऴྃ͢Δ  ͦͷͨΊTXPPMF͕ఏڙ͍ͯ͠Δ1%0ͷ$POOFDUJPO1PPM ͱ3FEJTͷ$POOFDUJPO1PPMΛ࢖༻ͨ͠ίωΫλΛࣗ࡞ 18
  19. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·ͰͷಓͷΓ %#υϥΠόɺ3FEJTυϥΠόͷࣗ࡞ 19 ࣗ࡞ͨ͠υϥΠόΛ ServiceProvider Λʹొ࿥

  20. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·ͰͷಓͷΓ %#ίωΫλɺ3FEJTίωΫλͷࣗ࡞  ͪͳΈʹMBSBWFMTXPPMFͰ͸ࢼݧతͳ࣮૷ͷҐஔͰ͔ͭɺอূ ͸Ͱ͖ͳ͍ͱॻ͔Ε͍ͯͯɺ͜ΕΛࣗ࡞ͨ͠  ͍ͣΕձࣾͱͯ͠044ʹ͢Δ͔΋ʁ

     IUUQTHJUIVCDPNTXPPMFUXMBSBWFMTXPPMFXJLJ; 2" 20
  21. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·ͰͷಓͷΓ 1)16OJU΍BSUJTBOίϚϯυΛඇಉظॲཧԽ  ඇಉظॲཧ͕Ͱ͖ΔΑ͏ʹ1)16OJU΍BSUJTBOίϚϯυΛ 
 ඇಉظॲཧ͕ՄೳͳΑ͏ʹվम 

    ͜ΕΛ΍Δͱ4XPPMFa1SPDFTT͕࢖͑ͳ͘ͳΔ  1)1ಉ࢜ͷϓϩηεؒ௨৴Ͱ͋Ε͹ճආՄೳͰ͸͋Δ 21
  22. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·ͰͷಓͷΓ ϗοτϦϩʔυ͕ͳ͍ͨΊ࣮૷  1)1ͷྑ͞ͷҰͭͱͯ͠ϑΝΠϧΛมߋͨ͠Βଈ࣌൓ө͞ΕΔ ఺Ͱ͋Δ͕MBSBWFMTXPPMFΛ༻͍Δͱɺଈ࣌൓ө͞Εͳ͍ɻ  ͕ͨͬͯ͠ɺϗοτϦϩʔυΛࣗલͰ࣮૷͢Δඞཁ͕͋Γɺ

    
 τϥʔφͰ͸ࣗલͷϗοτϦϩʔυΛ࣮૷ͨ͠  MBSBWFMTXPPMFʹ΋GTXBUDIΛ࢖༻ͨ͠ϗοτϦϩʔυͷ ػೳ͕උΘ͍ͬͯΔ͕ɺ؀ڥʹΑ্ͬͯख͘ಈ࡞ͤͣ 22
  23. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹ ى͖ͨ՝୊ 23

  24. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ σόοά͕ਏ͍  1)16OJUͷ్தͰམͪΔͱWBS@EVNQͰࢦఆͨ͠΋ͷ͕ 
 ग़ྗ͞Εͳ͍ 

    ߦͷWBS@EVNQΛ௥Ճ͢ΔͱผͷՕॴͰམͪΔΑ͏ʹͳͬͨ Γͯ͠Կ͕ݪҼ͔Θ͔Βͳ͍  ͜Ε͕՝୊ͷதͰҰ൪࣌ؒΛফඅͨ͠  ͦͷͨΊσόοά͕͠΍͍͢Α͏ͳઐ༻ͷΫϥεͳͲΛ༻ҙͨ͠ 24
  25. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ 25

  26. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ σόοά͕ਏ͍  ςετ͕௨ͬͯΔͷʹ4&(7͕ग़Δ 26

  27. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ 01$BDIF΍YEFCVH͸ಋೖͰ͖ͳ͍  01$BDIF΍YEFCVH͸ಋೖͰ͖ͳ͍͕01$BDIFΛಋೖ͢Δ ΄ͲͰ΋ͳ͍ύϑΥʔϚϯεΛൃشͰ͖͍ͯΔͷͰ໰୊ͳ͍  YEFCVHͷ୅ΘΓʹYEFCVHΛϑΥʔΫͯ͠TXPPMF༻ʹΧελ

    ϚΠζͨ͠TEFCVH͕͋ΔͷͰɺ͜ΕΛ࢖༻͢Δ 27
  28. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ OFXSFMJDͷ1)1ΤʔδΣϯτΛಋೖͰ͖ͳ͍  OFXSFMJDͷ1)1ΤʔδΣϯτΛೖΕΔͱ1)1ͷ࣮ߦίʔυ ͕ߦͰ΋ζϨΔͱɺؔ܎ͳ͍ͱ͜ΖͰ1)1͕མͪͨΓ 4&(7Λు͍ͨΓ͢Δ 

    OFXSFMJDʹ͸3&45"1*͕͋ΔͷͰ͜Εʹ੾Γସ͑ͨΓɺผͷ ؂ࢹπʔϧΛಋೖ͢Δඞཁ͕͋Δ  ͜ͷݪҼΛௐ΂Δͷʹ਺िؒΛফඅͨ͠ʜ 28
  29. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ D63-ܥͷϥΠϒϥϦ͕࢖͑ͳ͍  TXPPMFͰAFOBCMFTXPPMFDVSMAΛ༗ޮʹͯ͠Ϗϧυ͢Δͱ (V[[MF΍FMBTUJDTFSDITEL͕ɺDVSMͷܕ৘ใ·ͰΦʔόʔϥ Πυ͞ΕΔͨΊܕ͕߹Θͳ͘ͳΓಈ͔ͳ͘ͳΔ 

    4XPPMFa3VOUJNFFOBCMF$PSPVUJOFͰ 4800-&@)00,@$63-ΛΦϑʹ͢Δඞཁ͕͋Δ  τϥʔφͰ͸ͦ΋ͦ΋ɺ͜ͷϏϧυΦϓγϣϯΛແޮʹ͍ͯ͠Δ 29
  30. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ 8BJU(SPVQ΍#BSSJFSΛ࢖͏ͱϋϯά͢Δ  4XPPMFʹ͸$IBOOFMͷॲཧΛ଴ػ͢ΔͨΊͷखஈͱͯ͠(P ݴޠʹࣅͨ࢓૊Έͷ8BJU(SPVQ΍#BSSJFS͕͋Δ  ͨͩ͠ɺ͜ΕΒΛ࢖͏ͱॲཧ͕ϋϯάΞοϓͯ͠͠·͏

     8BJU(SPVQͱ#BSSJFSΛ࢖ΘͣɺࣗલͰ$IBOOFMΛ 
 ଴ػ͢Δ࣮૷͕ඞཁ͕͋Δ 30
  31. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ ͦͷ··ಋೖ͚ͨͩ͠Ͱ͸ίϧʔνϯͷԸܙΛड͚ΒΕͳ͍  طଘͷ-BSBWFMͷ··ͩͱϦιʔεͷѻ͍͕ϝϞϦ҆શͰ͸ͳ ͍ͨΊɺϝϞϦ҆શʹ࢖༻͢ΔͨΊʹ઀ଓ༻υϥΠόʔͷ 
 ࣗ࡞͕ඞਢ

     $POOFDUJPO1PPMʢෳ਺ͷϦιʔε͕ೖ͍ͬͯΔ΋ͷʣΛ࢖͏ Α͏ʹͨ͠৔߹ɺྫ͑͹%#΁ͷॻ͖ࠐΈ༻ͷίωΫγϣϯ͕ ෳ਺͋ΔͱτϥϯβΫγϣϯΛ։͍࢝ͯ͠Δ΋ͷͱɺ͍ͯ͠ͳ͍ 
 Ϧιʔε͕ަ͡ΔͨΊѻ͍ʹ஫ҙ͕ඞཁ 31
  32. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ 1)16OJUͰऴྃεςʔλείʔυ͕͓͔͘͠ͳΔ  1)16OJUΛඇಉظʹѻ͏ͱऴྃεςʔλείʔυ͕ৗʹʹ ͳΔɻݪҼ͸ະͩʹෆ໌ʜ  FYJUΛ1)16OJU಺Ͱ࣮ߦͤͣ͞ɺฦΓ஋ʹ͢Δͱ͕ͪΌΜͱ

    ฦΔ  UIJOLJOH@GBDF 32
  33. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ 1)16OJUͰऴྃεςʔλείʔυ͕͓͔͘͠ͳΔ 33

  34. @2020 Torana, Inc. ϋΠύϑΥʔϚϯεʹ͢Δ·Ͱʹى͖ͨ՝୊ 5PPNBOZDPOOFDUJPOT͕ग़Δ 34  .Z42-ͷ."9@$0//&$5*0/4ͷ஋Λ͋͛ͯରԠ  ଞʹ΋$BO`UDSFBUFNPSFUIBO

    NBY@QSFQBSFE@TUNU@DPVOUʢ͜ΕҎ্ϓϦϖΞυεςʔτϝ ϯτ࡞੒Ͱ͖ͳ͍ʣͱ͍͏Τϥʔʹ΋ૺ۰  BSSBZ@DIVOLͳͲΛ༻͍ͯ઀ଓ΍ϓϦϖΞυεςʔτϝϯτͷ ൃߦ͕ଟ͘ͳΒͳ͍Α͏ʹௐ੔
  35. ྗΛಘΔʹ͸ͦΕͳΓͷ୅ঈ͕ඞཁ 35

  36. ·ͱΊ 36

  37. @2020 Torana, Inc. ·ͱΊ લྫ͕ͳ͍՝୊͕ଟ͘ਏ͍͕ಘΒΕͨ΋ͷ΋େ͖͍  ಛʹσόοάͷͮ͠Β͞͸܈Λൈ͍ͯҰ൪ࣗ෼ͷ࣌ؒΛେྔʹ 
 ফඅͨ͠ 

    ͦ΋ͦ΋લྫ͕ͳ͍ɺ΋͘͠͸গͳ͍՝୊Ͱ͸͕͋ͬͨɺଟ͘ͷ φϨοδͱͳͬͨ  ࣌ؒͷϩεͱ͍͏୅ঈ͸େ͖͔͕ͬͨͦͷ෼ଟ͘ͷϝϦοτΛ ڗडͰ͖ͨ 37
  38. @2020 Torana, Inc. ·ͱΊ લྫ͕ͳ͍՝୊͕ଟ͘ਏ͍͕ಘΒΕͨ΋ͷ΋େ͖͍  ్தͰHP͔5ZQF4DSJQUʹͨ͠΄͏͕ઈରૣ͍ͱԿ౓ࢥͬͨ͜ ͱ͔ʜ  ͦΕͰ΋࠾༻ͷϝϦοτ΍1)1ͷ͍͍ͱ͜Ζ΋׆͔ͯ͠ੜ͖ͨ

    ͍ͱ͍͏ࢥ͍͔ΒͳΜͱ͔ඞࢮʹ΍ͬͨ  ༧ظͤͣ-BSBWFMͷ.Z42-$POOFDUJPOͱ3FEJT$POOFDUJPO पΓʹৄ͘͠ͳͬͯ͠·ͬͨ 38
  39. @2020 Torana, Inc. ·ͱΊ ϋΠύϑΥʔϚϯεͳΞϓϦέʔγϣϯͷߏங͸࣮ݱՄೳ  TXPPMFͱMBSBWFMTXPPMFΛ༻͍ͯϋΠύϑΥʔϚϯεͳ 
 ΞϓϦέʔγϣϯͷߏங͸Մೳ 

    ͦͷ୅ΘΓεΫϦϓτݴޠͱͯ͠ͷϝϦοτ͸͍͔ࣦͭ͘ΘΕΔ ͕ɺͦΕͰ΋ಋೖ͢ΔϝϦοτͷ΄͏͕উΔ 39
  40. ΈΜͳ΋TXPPMFͰ࠷ߴͷϥΠϑΛʂ 40

  41. 5)"/,:06'03:063 -*45&/*/( 41

  42. 8&"3&)*3*/( 42