Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Microservices Challenges
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Gustavo Pantuza
April 01, 2019
Programming
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Microservices Challenges
This presentation approaches many challenges moving forward Microservices
Gustavo Pantuza
April 01, 2019
More Decks by Gustavo Pantuza
See All by Gustavo Pantuza
Roteamento distribuído para Satélites de baixa órbita através do protocolo GPSR
pantuza
0
36
Observability Engineering: os protocolos, a comunidade e o estado da arte
pantuza
3
290
[Kubecon Europe 2023] Ingesting 6.5 Tb of Telemetry Data Daily Through Open Telemetry Protocol and Collectors
pantuza
0
680
Projeto experimental comparando gRPC e Thrift
pantuza
0
140
eQUIC Gateway: Maximizing QUIC throughput using a Gateway Service based on eBPF + XDP
pantuza
0
690
Danian: tail latency reduction of networking application through an O(1) scheduler
pantuza
0
310
Wrapping C libraries into Python modules
pantuza
0
440
Computação Serverless: Conceitos, Aplicações e Desafios
pantuza
0
280
Makefile, automating daily tasks & simplifying Gettings Started
pantuza
3
1.1k
Other Decks in Programming
See All in Programming
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
160
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
5.1k
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
480
Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう / lets learn vue custom renderer by making 3d library
drumath2237
1
120
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
4
3k
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
610
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
270
Groovy as a human and AI friendly programming language
paulk
0
180
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
320
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
560
Code Review Best Practice
trishagee
74
20k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Making the Leap to Tech Lead
cromwellryan
135
10k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
390
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
600
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
620
Building the Perfect Custom Keyboard
takai
2
950
The Limits of Empathy - UXLibs8
cassininazir
2
760
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