©Szymon Szylhabel 4Developers 2015
Drabina Ekspertów Ścisły przewodnik po aspektach miękkich – część II
Enterprise makeover
Making sense of agile requirements
Przejrzysty i testowalny kod na Androidzie?
REST w praktyce - tej dobrej i tej złej
Skalowanie i integracja systemów w asynchronicznym stylu Do you think you're doing microservice architecture?
CQRS dla każdego
Kiedy, jak i po co migrować na NoSQL
©Szymon Szylhabel 4Developers 2015
Pytanie
Ile instancji Service Bus’a wymagane jest do tego żeby zapewnić HA ?
www.bottega.com.pl facebook.com/BottegaITSolutions
©Szymon Szylhabel 4Developers 2015
Dawno dawno temu ….
©Szymon Szylhabel 4Developers 2015
Hurra robimy SOA
©Szymon Szylhabel 4Developers 2015
Zależności
©Szymon Szylhabel 4Developers 2015
Zależności
• ADP – Acyclic Dependencies Principle• Klasyfikacja komunikacji - Command, Query,
Event• Kontrola i przepływ danych
©Szymon Szylhabel 4Developers 2015
„Klasyczne zalezności” zależności
CRM PDF Generator
CRM PDF Generator
Scenariusz 1
Scenariusz 2
Poll ing
Response
«flow»
Request
«flow»
Request
©Szymon Szylhabel 4Developers 2015
Odwrócone zależności (Event)
CRM PDF Generator
CRM
Command
Event
Dependency
Dependency
«flow»
«flow»
©Szymon Szylhabel 4Developers 2015
Orkiestracja
Sales Shipping
Warehouse Credit
Orchiestrator
©Szymon Szylhabel 4Developers 2015
Sagaclass RelationshipStateMachine : AutomatonymousStateMachine<Relationship>
{
public RelationshipStateMachine()
{
Event(() => Hello);
Event(() => PissOff);
Event(() => Introduce);
State(() => Friend);
State(() => Enemy);
Initially(
When(Hello).TransitionTo(Friend),
When(PissOff).TransitionTo(Enemy),
When(Introduce)
.Then((instance,data) => instance.Name = data.Name)
.TransitionTo(Friend)
);
}
...
©Szymon Szylhabel 4Developers 2015
Transakcyjność
• Transakcje rozproszone (MSDTC – two phase commit)
• Długie transakcje – blokowanie zasobów• Oddzielenie przyjęcia żądania od
przetwarzania = asynchroniczność
©Szymon Szylhabel 4Developers 2015
SOA wyzwania c.d.
• Wysoka dostępność( NLB nie jest wystarczające)
• Skalowanie• Odporność na błędy przetwarzania
UI Sales
CRM
Credit
©Szymon Szylhabel 4Developers 2015
Wymagania odnośnie infrastruktury
• Pub-sub• Transakcyjne zapisywanie do kolejki• Transakcyjne pobieranie z kolejki• Zapewniać HA• Pozwalać na skalowanie usług• Wspierać poprawę błędów przetwarzania•
©Szymon Szylhabel 4Developers 2015
Potrzebujemy Service Busa
©Szymon Szylhabel 4Developers 2015
Infrastruktura – podział
ServiceBus Message Broker
©Szymon Szylhabel 4Developers 2015
Dwa lata historii (Azure) Service Bus
09-2012 10-2012 11-2012 12-2012 01-2013 02-2013 03-2013 04-2013 05-2013 06-2013
10-2013 11-2013 12-2013 01-2014 02-2014 03-2014 04-2014 05-2014 06-2014 07-2014 08-2014
SDK1.8
SDK 2.0
SDK 2.1
SB 1.0
SB 1.1
SDK 2.2
SDK 2.3
SDK 2.4
Partitions Express Entities Event Hubs
Kompatybilne z SDK 1.8 Kompatybilne z SDK 2.1
©Szymon Szylhabel 4Developers 2015
Service Bus - Architektura
Windows & SQL ServerWindows & SQL Server
Service Bus VSS WriterService Bus VSS Writer
Service Bus Resource Provider
Service Bus Resource Provider
Service Bus SAS
Security & Entity Management,
Address resolution
Protocol Heads
(Rest, tcp, ampq)
Protocol Heads
(Rest, tcp, ampq)
Service Bus Gateway
.Net 4.5.Net 4.5
Windows Fabric 1.0Windows Fabric 1.0
Service Bus Message Broker
©Szymon Szylhabel 4Developers 2015
Zależności
• Commands – Queues (Aktywna, Tylko odczyt, tylko zapis,
nieaktywna)
– Sessions
• Events (pub-sub) – Topics, Subscriptions
– Filtry
– Deadlettering
• Namespaces
–
©Szymon Szylhabel 4Developers 2015
Zabezpieczenia• Autentykacja
– Shared Accees Key• Możliwość używania dwóch kluczy
• Działa między domenami
– Windows Integrated Security • Grupa lub użytkownik
• Active Directory
• Autoryzacja– Listen
– Send
– Manage
©Szymon Szylhabel 4Developers 2015
Service Bus - Transakcyjność
• Transakcje tylko lokalne– Tylko jedna kolejka/temat/subskrypcja– Brak innych zasobów (np. SQL)
• Obsługa modelu Peek&Lock– Pobranie wiadomości i zablokowanie jej– Abandom / Defer / Complete – Lock timeout / renewal
• Detekcja duplikatów
©Szymon Szylhabel 4Developers 2015
Wydajność
• Wiadomości– properties + filtry– express entities– Topiki nie zachowujące kolejności– Wiele odbiorców
• Skalowanie za darmo (sesje)• Wygładzanie peak’ów•
©Szymon Szylhabel 4Developers 2015
Wydajność
©Szymon Szylhabel 4Developers 2015
Wydajność
• Farma z 3 serwerów (quad CPU 2.3GHz, 24GB RAM, wiadomość 1kB )– Kolejka - 20 tyś. wiadomości na sekundę
– Temat z jedną subskrypcją (bez filtra) – 14 tyś. wiadomości na sekundę
– Temat z 1000 subskrypcji - 26 wiadomości na sekundę
•
• Pojedynczy wirtualny serwer ze słabym SQL serwerem – 40 wiadomości 1KB na sekundę
– 20 wiadomości 100KB na sekundę
– 5 wiadomości 1000KB na sekundę
•
• Laptop z i7, 8GB RAM, dysk SSD– 100 wiadomości 32kB na sekundę
•
©Szymon Szylhabel 4Developers 2015
SB – Wydajność
Halo 4
©Szymon Szylhabel 4Developers 2015
SB – architektura HA
©Szymon Szylhabel 4Developers 2015
I żyli długo i szczęśliwie …
• Zależności - mikro świat i makro – wspólne techniki
• Transakcyjność vs SOA• Odpowiednia infrastruktura = oszczędności• Dostępność •
REST w praktyce - tej dobrej i tej złej
©Szymon Szylhabel 4Developers 2015
Dziękuje
KontaktSzymon Szylhabel
•
Linki• Two phase commit - http://blog.jonathanoliver.com/how-i-avoid-two-phase-commit/
• ServiceBus 1.1 https://msdn.microsoft.com/pl-pl/library/dn282144.aspx
• Granularity (Robert C. Martin) http://www.objectmentor.com/resources/articles/granularity.pdf
• https://github.com/MassTransit/Automatonymous
• http://particular.net/nservicebus
•
©Szymon Szylhabel 4Developers 2015
Credits
• Architecture Now! 3 Jean Nouvel Photo: Copyright Jean Nouvel/Lewis Baltz Monolith (2001 - 2001) Morat, Switzerland
• http://hero.wikia.com/wiki/King_Julien
• http://www.samdutton.com/
• http://www.enterprisefeatures.com/how-does-it-benefit-from-a-move-to-the-cloud/
• https://www.flickr.com/photos/93779577@N00/15700437070
• https://msdn.microsoft.com/en-us/library/dn282144.aspx
• http://www.infoq.com/presentations/halo-4-orleans
• http://www.ebizq.net/topics/eai/features/1590.html
•
•
Top Related