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

Cacoo with Microservices

Kohei
November 28, 2018

Cacoo with Microservices

Kohei

November 28, 2018
Tweet

More Decks by Kohei

Other Decks in Technology

Transcript

  1. Cacoo ͸ͳͥ Kubernetes ʹΑΔ
    microservices ΁ͷಓΛબΜͩͷ͔ʁ
    Alternative Architecture DOJO Offline #1

    View Slide

  2. ϒϩάಡΜͰͶɻ͓ΘΓ

    View Slide

  3. - Cacoo ͷ։ൃνʔϜ͕ͲΜͳ՝୊Λ๊͍͔͑ͯͨ
    - Կނ microservices ͷಓΛબΜ͔ͩ
    - ͲΜͳٕज़ΛબΜ͔ͩ
    - microservices Խͯ͠Ͳ͏͔ͩͬͨ
    - ݱঢ়ͷ՝୊

    View Slide

  4. Kohei Kimura
    @cohhei
    2018೥1݄ Nulab ೖࣾ
    Cacoo νʔϜͷόοΫΤϯυΤϯδχΞ
    ΄΅ Go
    ෱Ԭ

    View Slide

  5. Cloud-based diagrams, the easy way.
    Diagram maker for companies, teams, and you

    View Slide

  6. View Slide

  7. ՝୊1: ϞϊϦγοΫͳΞϓϦέʔγϣϯ

    View Slide

  8. ґଘؔ܎
    Ξοϓσʔτ
    Πϯϑϥ
    ։ൃޮ཰
    ௐࠪ
    ։ൃޮ཰
    Өڹௐࠪ
    ϨΨγʔ ίϛϡχ
    έʔγϣϯ
    ϞϊϦε
    ίϛϡχ
    έʔγϣϯ
    ϦϙδτϦ
    Ωϟον
    Ξοϓ
    CI/CD
    εέʔϧ
    ίϛϡχ
    έʔγϣϯ

    View Slide

  9. ՝୊2: ϝϯςφϯε͕ऴྃͨ͠
    ϑϨʔϜϫʔΫ΍ϥΠϒϥϦ

    View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. ✓ αʔϏε͝ͱʹٕज़Λબ୒Ͱ͖Δ
    ✓ ෦෼తͳมߋ͕༰қʹͳΔ
    ✓ ʢ͏·͘ઃܭͰ͖Ε͹ʣαʔόʔϦιʔεΛ࠷దԽͰ͖Δ
    ✓ ʢ͏·͘ઃܭͰ͖Ε͹ʣݎ࿚ͳγεςϜʹͳΔ
    microservices

    View Slide

  14. ໨ඪ: มߋΛ༰қʹ

    View Slide

  15. micro
    services
    ෳ਺ͷαʔϏεͱDB
    ϑϩϯτΤϯυͷ෼ׂ
    ҟͳΔٕज़
    ϨΨγʔͷߋ৽

    View Slide

  16. ํ਑ɾݪଇ

    View Slide

  17. - ໌֬ͳΦʔφʔγοϓ
    - খ͍͞΄Ͳྑ͍
    - εΫϥον͔Βॻ͖ͳ͓ͯ͠ΈΔ
    - αʔϏεؒͷΠϯλʔϑΣʔε͸ڧ͍ܕ෇͚
    - ։ൃ؀ڥ͸αʔϏε͝ͱʹࣗ༝ʹબ୒
    - ϕετϓϥΫςΟεʹै͏

    View Slide

  18. ٕज़ελοΫ

    View Slide

  19. Backend/Middleware
    - Kubernetes
    - Protocol Buffers
    - gRPC
    - RabbitMQ
    - Go
    Monitoring/Alerting
    - Elasticsearch + Kibana
    - Prometheus + Grafana
    - Zipkin

    View Slide

  20. Dashboard
    Editor

    View Slide

  21. Dashboard

    View Slide

  22. View Slide

  23. Editor

    View Slide

  24. View Slide

  25. View Slide

  26. Dashboard
    Editor

    View Slide

  27. microservices ԽͷྲྀΕ

    View Slide

  28. EC2ظ
    Kubernetesظ
    ECSظ
    - ৽͍͠ػೳΛผαʔϏεͰ
    - طଘػೳΛ੾Γग़ͯ͠Dockernize
    - μογϡϘʔυͷαʔϏε
    - ECS ͷαʔϏεΛҠߦ

    View Slide

  29. region
    region
    Production Cluster Testing Cluster
    cacoo
    cacoo-beta
    cacoo-testing-e2e
    cacoo-testing-load
    cacoo
    monitoring
    monitoring
    storages
    storages
    namespaces namespaces
    stress test
    by selenium

    View Slide

  30. Scaling
    - Horizontal Pod Autoscaler
    - Cluster Autoscaler

    View Slide

  31. Monitoring / Alerting

    View Slide

  32. Logging
    stdout
    ops

    View Slide

  33. Metrics - Prometheus & Grafana

    View Slide

  34. View Slide

  35. Metrics
    - goroutines
    - memory ͳͲ
    Alerting
    - Pod ͷ਺͕൒෼ҎԼʹͳͬͨͱ͖
    - Τϥʔ͕େྔʹग़ͨͱ͖ ͳͲ

    View Slide

  36. Zipkin

    View Slide

  37. https://zipkin.io/pages/architecture.html
    HTTP

    View Slide

  38. Backend/Middleware
    - Kubernetes
    - Protocol Buffers
    - gRPC
    - RabbitMQ
    - Go
    Monitoring/Alerting
    - Elasticsearch + Kibana
    - Prometheus + Grafana
    - Zipkin

    View Slide

  39. ͰɺͲ͏ʁ

    View Slide

  40. ґଘؔ܎ ‑
    - ෦෼తͳมߋ͠΍͘͢ͳͬͨ
    - ϏϧυɾσϓϩΠ͕ߴ଎
    - ෱ԬνʔϜ 㱻 ւ֎νʔϜ͕ಠཱ
    - Protocol Buffers ͷߋ৽
    - ը໘Λލ͙ػೳͷ։ൃ ͷͱ͖

    View Slide

  41. PR/issue Ͱͷίϛϡχέʔγϣϯ

    View Slide

  42. νϟοτͰͷίϛϡχέʔγϣϯ

    View Slide

  43. ՝୊: ৽͍͠ෳࡶੑ

    View Slide

  44. - Seasar ΁ͷґଘ͸࢒͍ͬͯΔ
    - αʔϏεΛͲ͜Ͱ۠੾Δ͔
    - αʔϏε௥Ճ͗͢͠ΔͱΠϯϑϥͷෛ୲Ὄ
    - ίʔυ/yamlͷ৑௕ੑ
    - DB Λ·͍ͨͩτϥϯβΫγϣϯ

    View Slide

  45. ·ͱΊ

    View Slide

  46. Cacoo ͷ՝୊
    - ݹ͍ϑϨʔϜϫʔΫ
    - ϞϊϦγοΫͳΞϓϦέʔγϣϯͷڧ͍ґଘؔ܎
    - ଟڌ఺Ͱͷ։ൃ
    ͦΕΒΛղܾ͢ΔͨΊʹ microservices Խ
    - খ͘͞࡞ͬͯ࿈ܞ
    - গͣͭ͠෼ׂͯ͠ ECS ্Ͱӡ༻
    - ͦͷޙ Kubernetes ΁

    View Slide

  47. - ΞϓϦέʔγϣϯͷڥքͱΦʔφʔγοϓ͕໌֬ʹ
    - ܧଓతͳ։ൃ͕͠΍͘͢ͳͬͨ
    - ෦෼తʹมߋ͠΍͍͢
    - ߴ଎ͳϏϧυɾσϓϩΠ
    - ·ͩ·ͩվળ͕ඞཁ

    View Slide

  48. ࠷ޙʹ

    View Slide

  49. ࢖ͬͯͶɻ

    View Slide

  50. Appendix

    View Slide

  51. Protocol Buffers
    - αʔϏεؒͷσʔλεΩʔϚ
    - .proto ϑΝΠϧʹఆٛ
    - Cacoo Ͱ୯Ұͷ proto ϦϙδτϦ
    → git submodule Ͱ֤αʔϏεʹ௥Ճ
    - ιʔείʔυΛੜ੒

    View Slide

  52. - GraphQL service -> gRPC services
    - gRPC services ؒ΋ gRPC
    - ΞΧ΢ϯτɺϑΥϧμʔɺਤ ͳͲ

    View Slide

  53. cacoo-service-account
    cacoo-service-organization
    cacoo-service-diagram
    cacoo-service-folder
    cacoo-service-subscription
    cacoo-service-integration
    Main
    GraphQL
    service

    View Slide

  54. RabbitMQ
    - ෳ਺ͷϝοηʔδϯάύλʔϯ
    - WorkQueue
    - Publish/Subscribe
    - Routing
    - Topics
    - RPC
    - ΤσΟλʔͷฤूΠϕϯτΛ௨஌͢Δ ͳͲ
    - εΩʔϚ͸ Protocol Buffers Ͱఆٛ
    - DB ʹฒͿॏཁͳཁૉ

    View Slide

  55. Kubernetes
    - OSS
    - ΤίγεςϜͷڧ͞
    - ྫ: helm

    View Slide