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

PHPでgRPCって どこまでいけるの?

PHPでgRPCって どこまでいけるの?

PHPConferenceTokyo2019のLT発表資料です

近年、マイクロサービスの流行とともにプロトコルとして
gRPCが使われるのをよく目にします
PHPでgRPCを使おうと思ったとき、他の言語できるけれど
PHPでできないことはあるでしょうか?
Swooleを用いて、gRPCサーバを検証してみました

CyberAgent SGE Engineer

December 01, 2019
Tweet

More Decks by CyberAgent SGE Engineer

Other Decks in Technology

Transcript

  1. 1)1ͰH31$ͬͯ
    Ͳ͜·Ͱ͍͚Δͷʁ
    גࣜձࣾαΠόʔΤʔδΣϯτനҪӳ

    QIQDPO

    View Slide

  2. • גࣜձࣾαΠόʔΤʔδΣϯτ
    • 4(&౷ׅຊ෦ٕज़౷ׅࣨࣨ௕
    • ࢠձࣾࣾ$50
    • גࣜձࣾ$SBGU&HH
    • גࣜձࣾαϜβοϓ
    • നҪɹӳ
    • ΤϯδχΞ
    • #MPH
    IUUQBNFCMPKQHPPEPP
    ͓લɺ୭Α
    • 5XJUUFS
    !HPPEPP
    • %2
    ͙ͪ͢Ή '#

    ϓΫϦϙ ཱྀܳਓ

    View Slide

  3. "HFOEB
    w͸͡Ίʹ
    wH31$
    wH31$ͱ1)1
    w1)1ͷ࣮૷
    w·ͱΊ

    View Slide

  4. ͸͡Ίʹ

    View Slide

  5. H31$ͬͯ࠷ۙΊͬͪΌ
    ฉ͖·͢Ͷ ࢲݟ

    View Slide

  6. ஫໨౓͕ߴ͍ͬͯ͜ͱ
    Ͱ͢Ͷ

    View Slide

  7. ϓϩϙʔβϧΛग़͢ͱ͖ʹ
    ؾ͍͍ͮͯͳ͔ͬͨ͜ͱɾɾɾ

    View Slide

  8. IUUQTTQFBLFSEFDLDPNTINVSBLBNJQIQHSQDDMJFOUJOQIQDPO
    1)1$POGFSFODFͰ࿩͞Εͯͨɾɾɾ

    View Slide

  9. -BSWFM+1$POGFSFODFͰ࿩͞Εͯͨɾɾɾ
    IUUQTTQFBLFSEFDLDPNOQIQEFNPHSQDTBCBXPMJUFUBJEBLFGBMTFSFOTIFOHEBUVUB

    View Slide

  10. ఆظతʹ࿩͞Ε͍ͯΔ
    ࿩୊
    ̎ͭͷ͓࿩͸ඇৗʹྑ͍ࢿྉͰ͢

    View Slide

  11. ΈΜͳؾʹͳ͍ͬͯΔ
    ͱ͍͏͜ͱͰ
    ϙδςΟϒʹ͍͖·͢

    View Slide

  12. ͍ͭ΋࣌ؒ੾ΕʹͳΔͷ
    Ͱ͸͡Ίʹ݁࿦

    View Slide

  13. ·ͩ͸΍͔ͬͨ
    ͳʹ͕͸΍͔͔ͬͨ͸ͳ͍͖ͯ͠·͢

    View Slide

  14. H31$

    View Slide

  15. w (PPHMF͕։ൃΛ։࢝ͨ͠Φʔϓϯιʔεͷ
    ϦϞʔτϓϩγʔδϟίʔϧ 31$
    γεςϜ
    w )551Λτϥϯεϙʔτͱͯ͠ར༻
    w 1SPUPDPM#VGGFSTΛΠϯλϑΣʔεهड़
    ݴޠͱͯ͠ར༻
    Ҿ༻ɿhttps://ja.wikipedia.org/wiki/GRPC

    View Slide

  16. ௨৴ͷछྨ
    w6OBSZ31$
    w4FSWFSTUSFBNJOH31$
    w$MJFOUTUSFBNJOH31$
    w#JEJSFDUJPOBMTUSFBNJOH31$

    View Slide

  17. Ҿ༻ɿhttps://grpc.io/docs/guides/

    View Slide

  18. H31$ͱ1)1

    View Slide

  19. Ҿ༻ɿhttps://grpc.io/docs/

    View Slide

  20. 1)1΋αϙʔτ
    ͞Ε͍ͯΔ

    View Slide

  21. ͕

    View Slide

  22. (PPHMFάϧʔϓͷ΍ΓͱΓ
    It appears as of right now you can only create
    CLIENTS in PHP, but not servers. I was
    wondering what the technical blockers behind
    this were and if it's on the roadmap for a future
    release?
    Ҿ༻ɿhttps://groups.google.com/forum/#!topic/grpc-io/F3IyYaI_6S0
    (ҙ༁)PHPͰ͸gRPCͷΫϥΞϯτ͸࡞ΕΔ͚
    Ͳɺαʔόʔ͸࡞Ε·ͤΜɻকདྷతͳϩʔυ
    Ϛοϓ͋Γ·͔͢ʁ

    View Slide

  23. (PPHMFάϧʔϓͷ΍ΓͱΓ
    Ҿ༻ɿhttps://groups.google.com/forum/#!topic/grpc-io/F3IyYaI_6S0
    There are several problems with the idea of a gRPC
    server in PHP, and we have no plans for that.
    Basically, the only way it would work, is if you run
    PHP "naked", without its typical nginx or apache
    frontend.
    (ҙ༁)PHPͷgRPCαʔό͸͍͔ͭ͘໰୊͕͋Γɺղ
    ܾํ๏͕ݟ౰ͨΓ·ͤΜ
    جຊతʹɺ།Ұͷํ๏͸ɺnginx·ͨ͸Apacheͷϑ
    ϩϯτΤϯυͳ͠ʹ”ૉ”ͷPHPͰಈ͔͢͜ͱͰ͢

    View Slide

  24. 1)1ͰH31$ͷαʔόʔ
    ͸Ͱ͖ͳ͍
    4USFBNJOH͕Ͱ͖ͳ͍ʣ

    View Slide

  25. 1)1ࣗ਎͕ιέοτϦεχ
    ϯά͢Ε͹Մೳੑ͸͋Δ

    View Slide

  26. 4XPPMFͳΒͰ͖ΔͷͰ͸ʁ

    View Slide

  27. 4XPPMFΛ༻͍ͨϑϨʔϜϫʔΫ
    )ZQFSGͳΔ΋ͷ͕͋Δ
    ϦϙδτϦʹHSQDTFSWFSͷ
    ࣮૷͕͋Δʂ
    https://github.com/hyperf/hyperf

    View Slide

  28. 4XPPMFΛ༻͍ͨϑϨʔϜϫʔΫʹ
    ͍ͭͯ͸աڈͷࢿྉΛݟ͍ͯͩ͘͞
    https://speakerdeck.com/
    sgeengineer/isucon8deyu-xuan-luo-
    tisitafalsede-swoole-easyswoole-
    deshu-kihuan-ete-gan-xiang-zhan-
    debentizou-rasetemitahua
    https://speakerdeck.com/
    sgeengineer/
    swoolewotukatutahuremuwakusw
    oftwotafalsesimu
    https://speakerdeck.com/
    sgeengineer/
    swoolefalsehuremuwakuwokur
    abetemita

    View Slide

  29. H31$ͷ1)1αʔό͍͚Δ
    ͷͰ͸ʁ

    View Slide

  30. 1)1ͷ࣮૷

    View Slide

  31. HSQDJPͷ
    νϡʔτϦΞϧΛ
    )ZQFSGͰ
    ࣮૷ͯ͠ΈΔ

    View Slide


  32. 6OBSZ31$4FSWFS
    QSPUPϑΝΠϧ͸͜Μͳײ͡

    View Slide


  33. 6OBSZ31$4FSWFS

    View Slide


  34. 6OBSZ31$4FSWFS
    ϧʔςΟϯά

    View Slide


  35. 6OBSZ$MJFOU

    View Slide


  36. 6OBSZ
    ɹɹ$MJFOU

    View Slide

  37. ࣮ߦ

    View Slide

  38. TUSFBNJOH͸ʁ

    View Slide

  39. ΫϥΠΞϯτͷ࣮૷͸͋Δ

    View Slide

  40. αʔόʔ͸ແ͍ɾɾɾ

    View Slide

  41. ·ͱΊ

    View Slide

  42. w 1)1Ͱ΋H31$͍ͨ͠
    w 4XPPMFΛ࢖ͬͨ)ZQFSG͸
    H31$αʔόαϙʔτ
    w 6OBSZ31$͸Ͱ͖Δ
    w 4USFBNJOH31$͸·ͩ͸
    ΍͔ͬͨ

    View Slide

  43. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide