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
Architektura Asynchroniczna w praktyce na przyk...
Search
fnxnet
April 10, 2016
Programming
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Architektura Asynchroniczna w praktyce na przykładzie BlaBlaCar
Prezentacja z 4Developers 2016
fnxnet
April 10, 2016
Other Decks in Programming
See All in Programming
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
220
残高管理から台帳サービスへの進化
artoy
1
200
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
カツオ、ご期待ください
suneo3476
0
190
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
160
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.2k
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
250
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
433
67k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
A Tale of Four Properties
chriscoyier
163
24k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Between Models and Reality
mayunak
4
500
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
The untapped power of vector embeddings
frankvandijk
2
1.9k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
440
Transcript
Asynchroniczna architektura w praktyce (na przykładzie BlaBlaCar) Mirosław Karczmarczyk
Tytułem wstępu
Tytułem wstępu Connecting people
BlaBlaCar w liczbach 30mln użytkowników 20 Instancji Frontu 87 Programistów
i architektow 11 Nodów bazy danych 200 Serwerów Mobilnych użytkowników 18mln
Co się dzieje po rezerwacji miejsca? Czas Wysyłamy maila do
rezerwującego Wysyłamy SMS’a do kierowcy Indeksujemy Zapisujemy w bazie Zbieramy statystyki Odpowiedź
Efekt ?
A gdyby tak… Czas Wysyłamy SMS’a do kierowcy Wysyłamy maila
Indeksujemy Zapisujemy w bazie Zbieramy statystyki Klik…
None
Asynchroniczność… Mikroserwisy!!!
• łatwość wdrożenia zmian • niezależność • osobne repozytoria •
skalowalność Cechy mikroserwisu
Skalowalność aplikacji
Komunikacja pomiędzy mikroserwisami Synchroniczna Asynchroniczna Kolejkowanie wiadomości Publisher - Subscriber
REST API
MAILER Serwis A MAILER Serwis B Workery FRONT Front Load
balancer Monitoring / Logi Baza Danych Indekser Cache API Load balancer Serwer kolejkowania wiadomości
None
Konsumer Konsumer Kolejka Publisher Konsumer
Fanout Exchange konsumer A konsumer A konsumer B konsumer C
Exchange Publisher Kolejka 1 Kolejka 2 Kolejka 3
Fanout Exchange
Routing keys Publisher konsumer A konsumer A konsumer B konsumer
C Exchange Kolejka 1 Kolejka 2 Kolejka 3 route_1 route_2 route_3 route_1 route_2
Routing keys
Konsumer / worker
Konsumer / worker c.d.
Konsumer / worker c.d.
Pimple - Dependency Injection
Pimple - Dependency Injection c.d.
Pimple - Dependency Injection c.d.
Symfony 2 - RabbitMQBundle
Symfony 2 - RabbitMQBundle c.d.
Symfony 2 - RabbitMQBundle c.d.
Symfony 2 - RabbitMQBundle c.d. $ ./app/console rabbitmq:consumer -m 50
-w testConsumer
A co jeśli… …masz 100 (1000 instancji) workerów? … przetwarzasz
2500 do 7500 wiadomości na sekundę w Rabbicie?
None
Długo działające procesy!!!
None
Swarrot - consume them all!!
Swarrot - consume them all!!
Swarrot - consume them all!!
Potrzebujemy czegoś więcej… Swarrot - consume them all!!
Swarrot - consume them all!! Enkapsulacja
Swarrot - consume them all!!
Swarrot - consume them all!!
Stack technologiczny BlaBlaCar
BlaBlaCar.com/dreamjobs @BlaBlaCarTech Backend Engineers Frontend Engineers iOS Engineers Android Engineers
WARSZAWA PARYŻ
None
Źródła: • http://queues.io/ • https://www.rabbitmq.com Przydatne pakiety: • swarrot/swarrot •
pimple/pimple • silex/silex • php-amqplib/RabbitMqBundle Podziękowania dla Olivier’a Dolbeau :)
None