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
Microservices Challenges
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Gustavo Pantuza
April 01, 2019
Programming
0
220
Microservices Challenges
This presentation approaches many challenges moving forward Microservices
Gustavo Pantuza
April 01, 2019
Tweet
Share
More Decks by Gustavo Pantuza
See All by Gustavo Pantuza
Observability Engineering: os protocolos, a comunidade e o estado da arte
pantuza
3
230
[Kubecon Europe 2023] Ingesting 6.5 Tb of Telemetry Data Daily Through Open Telemetry Protocol and Collectors
pantuza
0
610
Projeto experimental comparando gRPC e Thrift
pantuza
0
90
eQUIC Gateway: Maximizing QUIC throughput using a Gateway Service based on eBPF + XDP
pantuza
0
570
Danian: tail latency reduction of networking application through an O(1) scheduler
pantuza
0
250
Wrapping C libraries into Python modules
pantuza
0
370
Computação Serverless: Conceitos, Aplicações e Desafios
pantuza
0
230
Makefile, automating daily tasks & simplifying Gettings Started
pantuza
3
1.1k
Building reliable and efficient services through gRPC
pantuza
3
440
Other Decks in Programming
See All in Programming
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
1
110
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
480
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
Basic Architectures
denyspoltorak
0
680
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
5
520
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
420
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
140
今から始めるClaude Code超入門
448jp
8
9k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
CSC307 Lecture 06
javiergs
PRO
0
690
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Side Projects
sachag
455
43k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
280
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
So, you think you're a good person
axbom
PRO
2
1.9k
The Spectacular Lies of Maps
axbom
PRO
1
520
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
190
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
67
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Transcript
Gustavo Pantuza Microservices Challenges
None
Agenda Context Considerations Use cases
Monolith
Monolith • Big code base • Difficult to scale •
Easy to monitor/troubleshoot • Many responsibilities • Complex to deploy
microservice
Microservice • Small code base • Single responsibility • Complex
to troubleshoot • Complex to monitor • Easier to test and deploy
None
None
Microservices challenges Step 1 Application example Step 2 Show a
problem Step 3 Propose a solution
Circuit breaker Step 1
Step 2 If the microservices I integrate fail, how can
I guarantee my authentication system? Circuit breaker
Step 3 If x% of failure send emails to guarantee
authentication Circuit breaker
Scale Step 1
Scale Step 2 How to increase load without saturate computational
resources?
Scale Step 3 Horizontal auto scale CPU: 50% CPU: 95%
CPU: 85% CPU: 50% CPU: 50%
Scale Step 3 $> kubectl autoscale \ deployment php-apache \
--cpu-percent=50 \ --min=1 \ --max=10
Freshness Step 1
Step 2 Content must be updated and ever been shown
to end users Freshness
Step 3 Cache pipeline Proactive purge Freshness
Passo 1 Integration
Passo 2 Integration How to add new applications without changing
my previous services?
Passo 3 Integration • APIs Agregation • Enforce availability on
BFF BFF - Backend for Front-end
Reliability Step 1 API
Step 2 If my service becomes unavailable what my clients
should do? Reliability
Step 3 Retry Backoff Cache Reliability
Capacity Step 1 Varnish
Capacity Step 2 As traffic grows system starts paginating and
denying connections
User space Capacity Step 3 Turn off swap TCP/IP tuning
Kernel space Operating system Tuning . swapoff --all . sysctl -w net.ipv4.tcp_fin_timeout=15
Monitoring Step 1
Monitoring Step 2 How to minimize failure detection and recovery
time?
Monitoring Step 3 • Zabbix • cachet Feedback system •
Prometheus • Graylog
Design Step 1
Step 2 Software changes should not impact all clients Design
Step 3 Tenants Design USD BRL EUR . Extensibility .
Customizable
Communication Step 1 APIs
Passo 2 How to compute votes and minimize response time?
Communication
Passo 3 Buffer in memory 1000 votes or 10 seconds
... Communication
Distribution Step 1
Distribution Step 2 How to avoid a single point of
failure?
Distribution Step 1 Application distribution over network PoDs
Availability Step 1 A B C D E F G
H Application servers/containers
Availability Step 2 How to evenly distribute load over all
application servers/containers?
Availability Step 3 Load balancing A B C D E
F G H • IPVS • Neutrino • HAProxy • Nginx L4 L7
DRY Step 1 A B C D Authentication Authorization
Step 2 How to avoid repeating computations on many services?
DRY
Step 3 API Gateway DRY A B C D G
Kong HQ
Step 1 Interfaces { "what": "A json example", "test": true,
"values": [42, 10, 5.32], "data": { "name": "Test Name", "type": null } }
Step 2 How to change my services contracts without breaking
my clients integration? Interfaces
Step 3 Generic and versioned Interfaces Interfaces . JSON Schema
. ProtoBuffers /* Proto Buffers */ message Example { string what = 1; boolean test = 2; repeated int32 values = 3; optional DataMessage data = 4; } message DataMessage { string name = 1; optional string type = 2; }
Step 1 Networking
Step 2 How to deploy multiple microservices clusters and do
not collide sub-networks? Networking
Step 3 Overlay networking . KubeRouter . VXLAN . Open
vSwitch . IPIP tunnel . GRE Networking Subnet: 10.0.10.0/24 Subnet: 10.0.10.0/24 vRouter: 192.168.0.100/32 vRouter: 192.168.0.200/32
Step 1 Filtering Host Hypervisor VMs
Step 2 How to filter traffic without overloading network equipments?
Filtering
Step 3 Software Defined Networking . Open vSwitch . Netfilter/IP
tables Filtering Host Hypervisor VMs OvS
Step 1 A B C D Tracing
Step 2 How to know which service has failed? Tracing
Step 3 Tracing X-Request-ID GET /myservice/myresource HTTP/1.1 Host: myservername X-Request-ID:
30f14c6c1fc85cba12bfd093aa8f90e3 Accept: */* A B C D Request Identification
None
Questions? https://blog.pantuza.com https://github.com/pantuza https://twitter.com/gpantuza