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
Kohei
November 28, 2018
Technology
2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cacoo with Microservices
Kohei
November 28, 2018
More Decks by Kohei
See All by Kohei
なぜ Go はマイクロサービスのための言語なのか - Why Go is a language for microservices
cohhei
11
8.3k
Other Decks in Technology
See All in Technology
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
0
390
When Token Pruning is Worse than Random: Understanding Visual Token Information in VLLMs
sansantech
PRO
0
230
【Oracle AI Spotlight ウェビナー】AWSか、Azureか、Google Cloudか。その議論にオラクルを含める意義。
oracle4engineer
PRO
1
190
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
0
170
DINO-EdgeQuery:Edge-First Polygon Decoding for Building Footprint Extraction from Satellite Imagery
lehupa
0
110
Point Cloud as a Foreign Language for Multi-modal Large Language Model
takmin
0
360
「面白い!」を信じ抜け。激動の時代を貫く、オンリーワン・エンジニアの条件
kizawa2020
2
650
「ミスを許さない手順書」を作ってみた 〜 個人的にはこれ以上できることはあまりなさそう/20260827-ssmjp-operation-procedure-update
opelab
17
17k
Digitization部 紹介資料
sansan33
PRO
2
7.8k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.3k
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
1
300
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
150
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
270
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Designing Experiences People Love
moore
143
24k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Deep Space Network (abreviated)
tonyrice
0
280
YesSQL, Process and Tooling at Scale
rocio
174
15k
Side Projects
sachag
455
43k
Speed Design
sergeychernyshev
33
2.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Product Roadmaps are Hard
iamctodd
55
13k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The browser strikes back
jonoalderson
0
1.6k
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