rozproszona i asynchroniczna architektura - case study - spread it
TRANSCRIPT
Rozproszona i asynchroniczna architektura oparta na Azure - case study
Krzysztof Szabelski
Krzysztof Szabelski
Konsultant techniczny, trener, prelegent
Obszary zainteresowań► .NET► Architektura systemów► Przywództwo techniczne► Microsoft Azure
Prywatnie► Skialpinista,► Motocyklista,► Podróżnik
Great software… because we put People first► Software development
services► Training and consulting
Dziś w programie
Asynchroniczność na poziomie architektury
Mikroserwisy
Chmura obliczeniowa w
praktyce
Dobre rozwiązania
Złe rozwiązania
Prawdziwy projekt –
prawdziwe doświadczenia
O projekcie• Powiedzmy, że chodzi o:
• Nowatorski system zamawiania i obsługi taksówek.• SaaS • Multitenant• Mali klienci (małe miasteczka)
• Wymagania niefunkcjonalne• Dostępność bliska 24/7• Duża liczba zleceń w szczycie• Niezbędna responsywność dla użytkownika, nawet w szczycie
Website
Services
Browser application
SQL Databases
Storage blob
Email Service
Commands Service
SignalR Hub Host
New order topic
Application Insights
Order DatabaseOrder Service
Notification topic
Mobile Gateway Push Notification Ack Service
Notification timeout topic
Notification ack topic
Timedout notification topic
Order Processor Service
Mobile App
Asynchroniczność na poziomie architektury
Browser application
Booking Commands Service
Bookings Hub Host
New booking topic
Booking DatabaseBooking Service
Notification topic
Booking Processor Service
Scenariusz 1 – normalne działanie
Asynchroniczność na poziomie architektury
Browser application
Booking Commands Service
Bookings Hub Host
New booking topic
Booking DatabaseBooking Service
Notification topic
Booking Processor Service
Scenariusz alternatywny – maksymalna prostota
Asynchroniczność na poziomie architektury
Browser application
Booking Commands Service
Bookings Hub Host
New booking topic
Booking DatabaseBooking Service
Notification topic
Booking Processor Service
Scenariusz 2 – godziny szczytu
Δt=?
Asynchroniczność na poziomie architektury
Browser application
Booking Commands Service
Bookings Hub Host
New booking topic
Booking DatabaseBooking Service
Notification topic
Booking Processor Service
Scenariusz 3 – wzrost liczby klientów
Asynchroniczność na poziomie architektury
Browser application
Booking Commands Service
Bookings Hub Host
New booking topic
Booking DatabaseBooking Service
Notification topic
Booking Processor Service
Scenariusz 4 – coś poszło nie tak
Mikroserwisy• Osiągnięte korzyści• Segmentacja danych • Modularność systemu
• Koszty i nieosiągnięte korzyści• Koszty vs prędność• Brak odporności na awarie pojedynczych serwisów – ukryte zależności• Niezależny deployment – nadmierna komplikacja dla jednego zespołu
Mikroserwisy
„Almost all the successful microservice stories have started with a monolith. Almost all (...) system that was built as a microservice system from scratch, has ended up in serious trouble.”
Martin Fowler
Chmura obliczeniowa w praktyce
IaaS czy PaaS?+ Koszt usług- Koszt obsługi- Czas uruchomienia- Podatność na błędy ludzkie
+ Koszt obsługi+ Czas uruchomienia+ Bezpieczeństwo/skalowalność - Ograniczenia- Koszt usług
Microsoft Azure – wykorzystane usługi
• Cloud Service• Trochę przestarzałe• App Services (Web App) – lepsza alternatywa
• SQL Database • Ograniczony Sql Server – perspektywa DB Nazi• Wygodny SQL Server – perspektywa developera
• Azure Service Bus• Tanio, wygodnie i stabilnie, żyć nie umierać
• Application Insights• Send Grid• Search
Podsumowanie• PaaS – the way to go!• Realnie globalny zasięg dla małej organizacji• Duża oszczędność czasu zarządzania środowiskiem
• Microservices• Unikaj• Lub bądź pewien, że wiesz co robisz i rób to dobrze
• Kolejki i przetwarzanie w tle• Potężny, obosieczny miecz • Używaj z rozwagą, licz się z konsekwencjami
Dziękuję!
Krzysztof [email protected]://krzysztofszabelski.com/