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
Architektura Asynchroniczna w praktyce na przykładzie BlaBlaCar
Search
fnxnet
April 10, 2016
Programming
0
150
Architektura Asynchroniczna w praktyce na przykładzie BlaBlaCar
Prezentacja z 4Developers 2016
fnxnet
April 10, 2016
Tweet
Share
Other Decks in Programming
See All in Programming
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
480
"config" ってなんだ? / What is "config"?
okashoi
0
240
Behind VS Code Extensions for JavaScript / TypeScript Linnting and Formatting
unvalley
5
900
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
820
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
730
dbtのドメイン分割による データ基盤の改善とDigdagとの連携
sakama
0
100
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
190
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
1.1k
GitHub Copilotのススメ
marcy731
1
200
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
670
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
910
PostmanでAPIの動作確認が楽になった話
h455h1
0
170
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
241
1.2M
4 Signs Your Business is Dying
shpigford
175
21k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
Rebuilding a faster, lazier Slack
samanthasiow
73
8.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
648
58k
Writing Fast Ruby
sferik
621
60k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Testing 201, or: Great Expectations
jmmastey
28
6.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
Ruby is Unlike a Banana
tanoku
96
10k
The Cost Of JavaScript in 2023
addyosmani
16
3.9k
Designing for Performance
lara
601
67k
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