Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cacoo with Microservices
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kohei
November 28, 2018
Technology
0
1.9k
Cacoo with Microservices
Kohei
November 28, 2018
Tweet
Share
More Decks by Kohei
See All by Kohei
なぜ Go はマイクロサービスのための言語なのか - Why Go is a language for microservices
cohhei
11
8.1k
Other Decks in Technology
See All in Technology
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
OpenClawで回す組織運営
jacopen
3
590
LINE Messengerの次世代ストレージ選定
lycorptech_jp
PRO
19
7.5k
Introduction to Bill One Development Engineer
sansan33
PRO
0
380
Kaggleで鍛えたスキルの実務での活かし方 競技とプロダクト開発のリアル
recruitengineers
PRO
1
170
プロジェクトマネジメントをチームに宿す -ゼロからはじめるチームプロジェクトマネジメントは活動1年未満のチームの教科書です- / 20260304 Shigeki Morizane
shift_evolve
PRO
1
120
Datadog Cloud Cost Management で実現するFinOps
taiponrock
PRO
0
140
LLM活用の壁を超える:リクルートR&Dの戦略と打ち手
recruitengineers
PRO
1
260
元エンジニアPdM、IDEが恋しすぎてCursorに全業務を集約したら、スライド作成まで爆速になった話
doiko123
1
320
自動テストが巻き起こした開発プロセス・チームの変化 / Impact of Automated Testing on Development Cycles and Team Dynamics
codmoninc
2
1.1k
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
830
LLM のプロダクト導入における開発の裏側と技術的挑戦
recruitengineers
PRO
1
110
Featured
See All Featured
How GitHub (no longer) Works
holman
316
140k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
97
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
460
Paper Plane (Part 1)
katiecoart
PRO
0
5.2k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
80
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
140
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
170
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.4k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
810
Git: the NoSQL Database
bkeepers
PRO
432
66k
How to make the Groovebox
asonas
2
2k
エンジニアに許された特別な時間の終わり
watany
106
240k
Transcript
Cacoo ͳͥ Kubernetes ʹΑΔ microservices ͷಓΛબΜͩͷ͔ʁ Alternative Architecture DOJO Offline
#1
ϒϩάಡΜͰͶɻ͓ΘΓ
- Cacoo ͷ։ൃνʔϜ͕ͲΜͳ՝Λ๊͍͔͑ͯͨ - Կނ microservices ͷಓΛબΜ͔ͩ - ͲΜͳٕज़ΛબΜ͔ͩ -
microservices Խͯ͠Ͳ͏͔ͩͬͨ - ݱঢ়ͷ՝
Kohei Kimura @cohhei 20181݄ Nulab ೖࣾ Cacoo νʔϜͷόοΫΤϯυΤϯδχΞ ΄΅ Go
Ԭ
Cloud-based diagrams, the easy way. Diagram maker for companies, teams,
and you
None
՝1: ϞϊϦγοΫͳΞϓϦέʔγϣϯ
ґଘؔ Ξοϓσʔτ Πϯϑϥ ։ൃޮ ௐࠪ ։ൃޮ Өڹௐࠪ ϨΨγʔ ίϛϡχ έʔγϣϯ
ϞϊϦε ίϛϡχ έʔγϣϯ ϦϙδτϦ Ωϟον Ξοϓ CI/CD εέʔϧ ίϛϡχ έʔγϣϯ
՝2: ϝϯςφϯε͕ऴྃͨ͠ ϑϨʔϜϫʔΫϥΠϒϥϦ
None
None
None
✓ αʔϏε͝ͱʹٕज़ΛબͰ͖Δ ✓ ෦తͳมߋ͕༰қʹͳΔ ✓ ʢ͏·͘ઃܭͰ͖ΕʣαʔόʔϦιʔεΛ࠷దԽͰ͖Δ ✓ ʢ͏·͘ઃܭͰ͖Εʣݎ࿚ͳγεςϜʹͳΔ microservices
ඪ: มߋΛ༰қʹ
micro services ෳͷαʔϏεͱDB ϑϩϯτΤϯυͷׂ ҟͳΔٕज़ ϨΨγʔͷߋ৽
ํɾݪଇ
- ໌֬ͳΦʔφʔγοϓ - খ͍͞΄Ͳྑ͍ - εΫϥον͔Βॻ͖ͳ͓ͯ͠ΈΔ - αʔϏεؒͷΠϯλʔϑΣʔεڧ͍ܕ͚ - ։ൃڥαʔϏε͝ͱʹࣗ༝ʹબ
- ϕετϓϥΫςΟεʹै͏
ٕज़ελοΫ
Backend/Middleware - Kubernetes - Protocol Buffers - gRPC - RabbitMQ
- Go Monitoring/Alerting - Elasticsearch + Kibana - Prometheus + Grafana - Zipkin
Dashboard Editor
Dashboard
None
Editor
None
None
Dashboard Editor
microservices ԽͷྲྀΕ
EC2ظ Kubernetesظ ECSظ - ৽͍͠ػೳΛผαʔϏεͰ - طଘػೳΛΓग़ͯ͠Dockernize - μογϡϘʔυͷαʔϏε -
ECS ͷαʔϏεΛҠߦ
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
Scaling - Horizontal Pod Autoscaler - Cluster Autoscaler
Monitoring / Alerting
Logging stdout ops
Metrics - Prometheus & Grafana
None
Metrics - goroutines - memory ͳͲ Alerting - Pod ͷ͕ҎԼʹͳͬͨͱ͖
- Τϥʔ͕େྔʹग़ͨͱ͖ ͳͲ
Zipkin
https://zipkin.io/pages/architecture.html HTTP
Backend/Middleware - Kubernetes - Protocol Buffers - gRPC - RabbitMQ
- Go Monitoring/Alerting - Elasticsearch + Kibana - Prometheus + Grafana - Zipkin
ͰɺͲ͏ʁ
ґଘؔ ‑ - ෦తͳมߋ͘͢͠ͳͬͨ - ϏϧυɾσϓϩΠ͕ߴ - ԬνʔϜ 㱻 ւ֎νʔϜ͕ಠཱ
- Protocol Buffers ͷߋ৽ - ը໘Λލ͙ػೳͷ։ൃ ͷͱ͖
PR/issue Ͱͷίϛϡχέʔγϣϯ
νϟοτͰͷίϛϡχέʔγϣϯ
՝: ৽͍͠ෳࡶੑ
- Seasar ͷґଘ͍ͬͯΔ - αʔϏεΛͲ͜Ͱ۠Δ͔ - αʔϏεՃ͗͢͠ΔͱΠϯϑϥͷෛ୲Ὄ - ίʔυ/yamlͷੑ -
DB Λ·͍ͨͩτϥϯβΫγϣϯ
·ͱΊ
Cacoo ͷ՝ - ݹ͍ϑϨʔϜϫʔΫ - ϞϊϦγοΫͳΞϓϦέʔγϣϯͷڧ͍ґଘؔ - ଟڌͰͷ։ൃ ͦΕΒΛղܾ͢ΔͨΊʹ microservices
Խ - খ͘͞࡞ͬͯ࿈ܞ - গׂͣͭͯ͠͠ ECS ্Ͱӡ༻ - ͦͷޙ Kubernetes
- ΞϓϦέʔγϣϯͷڥքͱΦʔφʔγοϓ͕໌֬ʹ - ܧଓతͳ։ൃ͕͘͢͠ͳͬͨ - ෦తʹมߋ͍͢͠ - ߴͳϏϧυɾσϓϩΠ - ·ͩ·ͩվળ͕ඞཁ
࠷ޙʹ
ͬͯͶɻ
Appendix
Protocol Buffers - αʔϏεؒͷσʔλεΩʔϚ - .proto ϑΝΠϧʹఆٛ - Cacoo Ͱ୯Ұͷ
proto ϦϙδτϦ → git submodule Ͱ֤αʔϏεʹՃ - ιʔείʔυΛੜ
- GraphQL service -> gRPC services - gRPC services ؒ
gRPC - ΞΧϯτɺϑΥϧμʔɺਤ ͳͲ
cacoo-service-account cacoo-service-organization cacoo-service-diagram cacoo-service-folder cacoo-service-subscription cacoo-service-integration Main GraphQL service
RabbitMQ - ෳͷϝοηʔδϯάύλʔϯ - WorkQueue - Publish/Subscribe - Routing -
Topics - RPC - ΤσΟλʔͷฤूΠϕϯτΛ௨͢Δ ͳͲ - εΩʔϚ Protocol Buffers Ͱఆٛ - DB ʹฒͿॏཁͳཁૉ
Kubernetes - OSS - ΤίγεςϜͷڧ͞ - ྫ: helm