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
Gustavo Pantuza
April 01, 2019
Programming
0
200
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
200
[Kubecon Europe 2023] Ingesting 6.5 Tb of Telemetry Data Daily Through Open Telemetry Protocol and Collectors
pantuza
0
590
Projeto experimental comparando gRPC e Thrift
pantuza
0
67
eQUIC Gateway: Maximizing QUIC throughput using a Gateway Service based on eBPF + XDP
pantuza
0
490
Danian: tail latency reduction of networking application through an O(1) scheduler
pantuza
0
240
Wrapping C libraries into Python modules
pantuza
0
340
Computação Serverless: Conceitos, Aplicações e Desafios
pantuza
0
220
Makefile, automating daily tasks & simplifying Gettings Started
pantuza
3
980
Building reliable and efficient services through gRPC
pantuza
3
410
Other Decks in Programming
See All in Programming
Amazon Q CLI開発で学んだAIコーディングツールの使い方
licux
3
180
プロダクトという一杯を作る - プロダクトチームが味の責任を持つまでの煮込み奮闘記
hiliteeternal
0
450
AHC051解法紹介
eijirou
0
390
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
3
810
構文解析器入門
ydah
7
2.1k
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
hiyanger
12
3k
バイブスあるコーディングで ~PHP~ 便利ツールをつくるプラクティス
uzulla
1
330
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
3
600
Bedrock AgentCore ObservabilityによるAIエージェントの運用
licux
9
610
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
1
130
Strands Agents で実現する名刺解析アーキテクチャ
omiya0555
1
120
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
10
1.7k
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Fireside Chat
paigeccino
38
3.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
183
54k
RailsConf 2023
tenderlove
30
1.2k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Side Projects
sachag
455
43k
How to Ace a Technical Interview
jacobian
278
23k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Bash Introduction
62gerente
614
210k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
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