Komponentowe i rozproszone

Slides:



Advertisements
Podobne prezentacje
nowoczesny system zarządzania przedsiębiorstwem
Advertisements

PREZENTACJA SYSTEMU eDokumenty
Messaging w .NET.
Mechanizmy pracy równoległej
Architektura SAP R/3 Wybrane zagadnienia.
Decyzje projektowe w .NET Framework
WEB SERVICE Stefan Rutkowski.
e-commerce jako efektywny rozwój dystrybucji
CORBA Łukasz Wnęk.
Microsoft Professional Developer Days 2004
ADAM Active Directory w trybie aplikacyjnym
ASP.NET 2.0 AJAX Extensions 1.0
Architektura systemu Gra strategiczna „Strusia Jama”
Internet Communication Engine
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Systemy operacyjne.
Proxy (WWW cache) Sieci Komputerowe
Enteprise Java Beans Emil Wcisło.
Co to jest SOA Czym SOA nie jest
Wzorce projektowe w J2EE
Artur Szmigiel Paweł Zarębski Kl. III i
Rozproszone bazy danych
Systemy zarządzania treścią CMS
Projektowanie i programowanie obiektowe II - Wykład IV
SYSTEMY INFORMATYCZNE - Altamira, CRM i Remedy
SIEĆ P2P 1. Definicja sieci równouprawnionej. To taka sieć, która składa się z komputerów o takim samym priorytecie ważności, a każdy z nich może pełnić.
CDN OPT!MA integracja z Systemem Microsoft Office 2003.
komputerowy system przyjmowania, wysyłania i przetwarzania zgłoszeń
Topologie sieci lokalnych.
Prezentacja i szkolenie
Rozdział 1: Wprowadzenie do systemu Windows 2000 i podstaw sieci
Sieciowe Systemy Operacyjne
Komponentowe systemy rozproszone Wprowadzenie. Komponent... jest to podstawowa jednostka oprogramowania z kontraktowo (deklaratywnie) opisanymi interfejsami,
Komponentowe i rozproszone Interludium. OOA vs SOA OOA (obiekty rozproszone): CORBA, COM(+), EJB Współdzielenie obiektów SOA (serwisy rozproszone): Autonomiczne.
Enterprise Architecture Patterns
Wybrane zagadnienia relacyjnych baz danych
Modelowanie obiektowe Diagramy UML – diagram przypadków użycia
S IMON SAYS … A RCHITECTURE ! Usługi zdalne Technologie, techniki i praktyki implementacji.
Prezentują: Marek Wałach UX Designer Marcin Ceran PHP Developer.
Sieci komputerowe.
W ą t e k (lekki proces) thread.
Skalowanie aplikacji JPA na przykładzie Oracle TopLink Grid
Service Oriented Architecture
Archiwizacja bazy danych
Jednym z podstawowych celów tworzenia sieci komputerowych jest współdzielenie zasobów, takich jak pliki lub drukarki. Każdy z takich zasobów musi być udostępniony,
Przykłady analiza i projektowanie
Modelowanie obiektowe - system zarządzania projektami.
Komponentowe systemy rozproszone Wprowadzenie. Komponent... jest to podstawowa jednostka oprogramowania z kontraktowo (deklaratywnie) opisanymi interfejsami,
Diagramy przepływu danych
XML w serwisach webowych. Zapotrzebowanie na serwisy XML.
Połączenia aplikacji Klient/Serwer
Komponentowe i rozproszone Interludium czyli krótki wykład o rozpraszaniu.
Optymalna konfiguracja Microsoft SQL Server 2014
Struktura systemu operacyjnego
Zintegrowane systemy informatyczne
Usługi webowe & Service- Oriented Architecture (SOA) S2523 Anna Jenerowicz.
Architektura Rafał Hryniów. Architektura Wizja projektu systemu, którą dzielą twórcy Struktura komponentów systemu, ich powiązań oraz zasad i reguł określających.
Komponentowe systemy rozproszone Interludium czyli krótki wykład o rozpraszaniu.
STAĆ CIĘ NA INNOWACJE Systemy Call Center Sp. z o.o.
Komponentowe i rozproszone (Web)Service Oriented Architecture.
Komponentowe i rozproszone Kompozycja gui Cap theorem Wydajne Systemy Rozproszone CQRS.
Komponentowe systemy rozproszone Pub/sub, Broker vs. ESB.
Komponentowe systemy rozproszone
Topologie fizyczne i logiczne sieci
LOGISTYKA Punkt rozdziału.
Projekt modułu BANK INTERNETOWY Moduł funkcji banku
Windows Workflow Foundation
Aplikacje i usługi internetowe
Konteneryzacja i DevOps
Zapis prezentacji:

Komponentowe i rozproszone Systemy rozproszone

MGB 2003 System ≠ aplikacja Aplikacja: jeden proces, jeden system op., jeden komputer System: wiele procesow, (zwykle) wiele systemów op. i wiele komputerów System = N*aplikacja => połączenia © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Połączenia nie są bez znaczenia … MGB 2003 Połączenia nie są bez znaczenia … Typowe założenia deweloperów (i architektów) dla systemów rozproszonych: Sieć jest niezawodna Opóźnienia nie są problemem Pasmo nie jest problemem Sieć jest bezpieczna Topologia się nie zmienia Administrator zawsze wie co robić Koszty transportu danych nie są problemem Sieć jest jednorodna Deutsch 94 Gosling 97 © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Połączenia nie są bez znaczenia … MGB 2003 Połączenia nie są bez znaczenia … Typowe założenia deweloperów (I architektów) dla systemów rozproszonych: … System jest atomowy/monolityczny System jest skończony Logika biznesowa może (i powinna) być scentralizowana Neward 06 © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

3 wymiary systemu Scalability Availiability Reliability

Przykładowy sklep Marketing Sklep Księgowość Spedycja Magazyn Obsługa Klientów

Przykładowa funkcjonalność

Księgowość Marketing Obsługa Klientów Spedycja Sklep Magazyn

MGB 2003 A gdzie są dane? © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Księgowość Marketing Obsługa Klientów Spedycja Sklep Magazyn

Może być gorzej? Marketing Towary Sklep Spedycja Transakcje Księgowość Obsługa Klientów Spedycja Sklep Magazyn Towary Transakcje Klienci

To była tylko jedna akcja … MGB 2003 To była tylko jedna akcja … Są i inne: Raporty Przeceny Przyjecie nowych towarów Wysyłka Zwroty i reklamacje * Liczba użytkowników © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Podejście synchroniczne – powoli, ale przynajmniej działa Procesy głównie czekają na wyniki/zasoby/potwierdzenie Deadlock/problemy w jednym podsystemie może zdegradować cały system Lepszy sprzęt często oznacza, że poświęcamy więcej cykli (szybszego) procesora na czekanie Timeout – powoduje ponowienie żądania (a stare może być jeszcze przetważane) System działa w developmencie a w produkcji (od razu lub nie) całość pada

Podejście synchroniczne - czasem nie działa … Maintenance/awaria jednego serwera może spowodować zatrzymanie całego systemu Przenosimy serwer - Jak np. zmienić adresację w sieci? Skalujemy system – jak dodać drugą instancję serwisu magazyn? Co z utrzymywaniem starych wersji ?

Zależności Utrudniają development Utrudniają wdrażanie Ograniczają stabilność Utrudniają zarządzanie i utrzymanie Nie można ich wyeliminować ale trzeba je ograniczać ...

Zależności (coupling) w kodzie Powiązanie wynika z zalezności Wywołanie funkcji zalęzy od sygnatury czyli kod wywołujacy zależy od definicji funkcji Miary zależności w kodzie Ca – liczba klas (funkcji), które zależą od danej klasy (funkcji) Ce - liczba klas (funkcji), od których zależy dana klasa (funkcja)

Zależności (coupling) w systemach Platformowe (protokół, format – interoperability) Czasowe (żądanie - odpowiedź) Przestrzenne (adresy – identyfikacja)

Kilka scenariuszy Zmiana szczegółów implementacyjnych serwisu Zmiana (deplyment) komponentu od którego zależy wiele serwisów Upadek bazy = timeout + utrata danych Deadlock = rollback transakcji Upadek serwisu = blad przy wywołaniu

Redukcja powiązań ... jest złożona Platformowe Czasowe Przestrzenne Afferent Efferent ... jest złożona

Jak ? Ca, Ce – zależności w kodzie, SOA – opieramy się na kontraktach Platformowe – użycie XML Przestrzenny – wirtualne endpointy, routowanie (np. po typie komunikatu) Czasowe – asynchroniczne komunikaty

Wołanie synchroniczne Serwis A Serwis B Wołanie synchroniczne czekanie praca zwrot Tradycyjne WS, RPC, COM, WCF (?)

Wołanie asynchroniczne Typowa implementacja tworzy nowy wątek, który czeka synchronicznie i wykonuje callback (w swoim kontekście) Wątek główny i tak czeka na wyniki (ale może ew. uruchomić kilka zapytań)

Wołania jednokierunkowe ASP.NET: oneway WCF: IsOneWay=True Kolejki

Wołania jednokierunkowe ASP.NET: oneway WCF: IsOneWay=True Kolejki Klient Serwis Wysyła i pracuje dalej Id Odpowiedź: ekspozycja interfejsu przez klienta pooling w oczekiwaniu na odpowiedź

Podejście request response (synch lub asynch) Możliwe problemy

Krytyczny update dla Windows MGB 2003 Upadek serwera [HTTP] $$ Order DB App Tx Call 1 of 3 Call 2 of 3 Krytyczny update dla Windows Rollback Co sie dzieje z zamówieniem ? © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Baza jest wyłączona Co sie dzieje z zamówieniem? App Tx MGB 2003 Baza jest wyłączona [HTTP] $$ Order Call 1 of 3 DB App Tx Exception Down Zapis do logu Co sie dzieje z zamówieniem? © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Gdy przydarzy sie deadlock MGB 2003 Gdy przydarzy sie deadlock [HTTP] $$ Order DB App Tx Call 1 of 3 Call 2 of 3 Exception A B Zapis do logu Co sie dzieje z zamówieniem ? Deadlock © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Co zmiania messaging? Tx Q App Zamówienie wraca do kolejki Rollback MGB 2003 Co zmiania messaging? Rollback $$ Order Tx Q Receive Rollback App DB Call 1 of 3 Call 2 of 3 Zamówienie wraca do kolejki © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Wołania usług vs. messaging Rollback $$ Order A B C D Nie można wycofać [HTTP] Invoke DB WS Deadlock

Wołania usług vs. messaging $$ Order A B C D Msg [HTTP] Invoke DB Messaging Gateway WS Przy błędzie komunikat nie zostanie wysłany

Wzorzec: Adres zwrotny MGB 2003 Wzorzec: Adres zwrotny Serwis A Serwis B Addres zwrotny Addres zwrotny Kiedyś w przyszłości Oddzielny kanał dla odpowiedzi © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Adres zwrotny jest ważny MGB 2003 Adres zwrotny jest ważny Service A Server 1 Service B Server 2 Service A Server 3 Request 0 Request 1 Response 1 Pozwala na równoważenie obciążenia Iub utworzenie potoku obsługujacego zlecenia © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Skorelowane Request/Response MGB 2003 Skorelowane Request/Response Serwis A Serwis B Ticket (guid) Kiedyś w przyszłości Ticket (guid) W bardziej skomplikowanych przypadkach id umożliwia skojarzenie req. i resp. © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Publish / Subscribe Zdarzenia na poziomie systemowym MGB 2003 Publish / Subscribe Zdarzenia na poziomie systemowym Wystąpienie zdarzenia oznacza wysłanie komunikatu Obsługa zdarzenia odpowiada obsłużeniu komunikatu Zdarzenia powinny być rozpatrywane na poziomi biznesowym (zmienił sie stan zamówienia, ktoś ma inny adres, rabt itd.) © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Kolejność zdarzeń Rachunko wosc Sprzedaz Spedycja Zaakceptowane Opłacone Czeka na Opłacone (które już było) Nie ma zamówienia w DB Komunikat zostaje odrzucony Spedycja

Kolejność zdarzeń Nie należy zakładać konkretnej kolejności nadchodzenia komunikatów W przypadku problemów mozna założyć próbę ponownego przetworzenia komunikatu w przyszłości Zyski to m.in. Lepsza skalowalność Większa odporność na błędy

Własność komunikatu Co oznacza własność ? MGB 2003 Własność komunikatu Co oznacza własność ? W ReqResp nie za bardzo wiadomo kto jest wlaścicielem formatu/protokolu W PubSub właścicielem jest publikujący © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Publish / Subscribe MGB 2003 © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

MGB 2003 Subscribe Aby zredukować powiazania przestrzenne (spatial coupling) niezbędne jest mapowanie między typem komunikatu i adresem sewisu Subskrypcja oznacza gotowość do obsługi danego typu komunikatów rejestracja handlera oznacza właśnie subbskrypcje (może przekładać się na wysłanie wewnętrznych komunikatów w obrębie infrastruktury) W takim wypadku zapamietywany jest adres handlera. © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Subscriber Publisher Subscriber Subscriber Subscriber Subscriber

Subscriber Publisher Subscriber Subscriber Subscriber Subscriber abcdefgh Subscriber abcdefgh abcdefgh Subscriber Subscriber abcdefgh abcdefgh Subscriber

Styl architektoniczny MGB 2003 Styl architektoniczny An architectural style is a coordinated set of architectural constraints that restricts the roles/features of architectural elements and the allowed relationships among those elements within any architecture that conforms to that style. Fielding 2000 Zbiór wskazówek nt. tego co jest a co nie jest dozwolone. © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

SOA jest stylem architektonicznym MGB 2003 SOA jest stylem architektonicznym SOA opiera się na komunikatach Soa zakłada autonomię serwisów … Dwa najczestsze podejscia Bus vs. Broker służą redukcji powiązań przstrzennych © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Styl architektoniczny Broker MGB 2003 Styl architektoniczny Broker Inicjator żąda usługi od brokera Broker obsługuje po kolei żądania i przekazuje je dalej Service B Service A Service C Broker Service D © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Cechy Broker-a Broker jest fizycznie odseparowany MGB 2003 Cechy Broker-a Broker jest fizycznie odseparowany Cała komunikacja odbywa się przez niego Broker musi obsłużyć upadki serwisów i przekazywanie wiadomości Broker stanowi “single point of failure” – musi być wydajny i niezwykle stabilny Technologie: BizTalk, CORBA, UDDI © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

MGB 2003 Zalety Broker-a Dzieki skoncentrowaniu komunikacji w jednym miejscu łatwo zarządzać centralnie konfiguracją Łatwe jest uzyskanie inteligentnego przekazywania danych, tramsformacje, orkiestracje itd. Nie wymaga wielu zmian w serwisach © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Wady Broker-a Narusza autonomię serwisów MGB 2003 Wady Broker-a Narusza autonomię serwisów Stanowi “single point of failure” i b. często jest wąskim gardłem Wyjasnicz czemu B. narusza autonomie S. © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Styl architektoniczny Szyna MGB 2003 Styl architektoniczny Szyna Źródła i ujścia zdarzeń komunikują się za pośrednictwem kanałów w szynie Źródło umieszcza komunikaty (zdarzenia) w kanale a ujscie jest notyfikowane odostępności komunikatu Source Sink Bus Sink Source © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Topologia Szyny App App Bus.dll Bus.dll App App Bus.dll Bus.dll MGB 2003 Topologia Szyny App Bus.dll App Bus.dll App Bus.dll App Bus.dll © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Cechy Szyny Szyna niekoniecznie jest fizycznie odseparowana MGB 2003 Cechy Szyny Szyna niekoniecznie jest fizycznie odseparowana Kanały mogą być zarówno fizyczne jak logiczne Komunikacja jest rozproszona pomiedzy wieloma kanalami Szyna jest prostsza Brak ”single point of failure” © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Zalety Szyny Brak “single point of failure” MGB 2003 Zalety Szyny Brak “single point of failure” Nie narusza autonomii serwisu The “anti-broker” © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Wady szyny Trudniejsza do zaprojektowania niż Broker MGB 2003 © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Komercyjne implementacje ESB MGB 2003 Komercyjne implementacje ESB Adeptia ESB Suite Neudesic Neuron-ESB webmethods Enterprise Service Bus (SoftwareAG) NServiceBus Oracle Enterprise Service Bus (BEA Logic) (TIBCO) ActiveMatrix™ Service Bus Progress Sonic ESB IBM WebSphere ESB Red Hat JBoss Fuse IBM WebSphere Message Broker IONA (acquired by Progress) ttxNgine (3Txpert GmbH) InterSystems Ensemble Microsoft BizTalk Server Windows Azure Service Bus © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Otwarte implementacje ESB MGB 2003 Otwarte implementacje ESB Apache ServiceMix Mule Apache Synapse UltraESB JBoss ESB Talend ESB MassTransit Shuttle Service Bus NetKernel Red Hat Fuse ESB (based on Apache ServiceMix) NServiceBus Rhino Service Bus Petals ESB Spring Integration Open ESB WSO2 ESB © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Połączenie obu światów

MGB 2003 Co to jest serwis? Serwis jest techniczną realizacją pewnych biznesowych możliwości. Serwis powinien przejechowywać (niekoniecznie być właścicielem) wszystkie dane i reguły niezbędne mu do działania © 2003 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Czym serwis nie jest Serwis, który dostarcza tylko funkcjonalność a nie posiada stanu jest funkcją Np walidacja Serwis, który tylko posiada i udostępnia dane jest bazą danych CRUD

Przykład Sales Marketing Customer Care Place Order Save status locally Save pricing locally Subscribe to Product Pricing Updated Subscribe to Customer Status Updated Publish Product Pricing Updated Publish Customer Status Updated Customer Care Marketing Publish Order Accepted

Zdarzenia w przykładowym systemie Uzupełnienie magazynu Zmiana Ceny Otrzymanie zamówienia Wysyłka towaru Wystawienie faktury

Który serwis jest właścicielem strony?

Który serwis jest właścicielem strony? Żaden

Posadowienie serwisów Jeden komputer może gościć wiele serwisów Jedna aplikacja może obejmować wiele serwisów Pojedynczy workflow może angażować wiele serwisów Pojedyncza strona może łączyć dane z wielu serwisów

Kompozycja strony Server Katalog Ceny Magazyn Cross Sell

Amazon.com - sprzedaż

Który serwis odpowiada za proces?

Który serwis odpowiada za proces? Żaden

Składowe workflow-u Rachunkowość Spedycja Sprzedaż Spedycja

Cache = efektywność+problemy UI Facade BL DAL DB Cache If the result is that users are going to be seeing stale data anyway – why go all the way to the database? And if we’re going to be putting a cache in there anyway – we’re practically ensuring staleness, we just don’t tell anybody, right?

Zapytania ?

Dane zmieniają się często Lista klientów Dane poprawne 10 minit temu We see this on Twitter and Facebook – telling us how long ago something happened

Zapytania powinny być proste UI Query only Persistent View Model They’re tightly coupled anyway – sticking a bunch of layers in between won’t change that. This can be as simple as statically defined views on top of your tables. For security, you can define SELECT permissions on those views. Normalizacja implikuje zapytania oparte na wielu tabelach Widoki kosztują

Command Query Responsibility Segregation

CQRS Komendy są przetwarzane oddzielnie od zapytań Wynik aktualizacji danych jest replikowany do widoku zapytań (cache) Możliwe jest w przechowywanie tylko listy komend i bieżącego stanu w cache They’re tightly coupled anyway – sticking a bunch of layers in between won’t change that. This can be as simple as statically defined views on top of your tables. For security, you can define SELECT permissions on those views.

Ale co zrobić z nieaktualnymi danymi w cache dla potrzeb query Co jeżeli do generowana updateu użyte zostana niektualne dane Orders ID Total Date Shipped Account etc 317 $37.87 1/9/09 Yes A17T5 318 $99.99 3/7/09 319 $100.11 4/8/09 P313Z 320 $69.47 9/9/09 No P599Z They’re tightly coupled anyway – sticking a bunch of layers in between won’t change that. This can be as simple as statically defined views on top of your tables. For security, you can define SELECT permissions on those views. Save Cancel

Nowoczesny interfejs Może wcale nie trzeba korzystać z nieaktualnych danych lub nie trzeba ich pokazywać Ważne jest uchwycenie intencji Można troche “oszukać” Wysyłka może pójść na adres, który był aktualny kilka minut wcześniej Nie można oczekiwać, że zawse uda sie rezygnacja z wysyłki w ciagu kilku sekund Właściwy zakup udbywa sie przy potwierdzeniu a nie kliknieciu kup They’re tightly coupled anyway – sticking a bunch of layers in between won’t change that. This can be as simple as statically defined views on top of your tables. For security, you can define SELECT permissions on those views.

System rezerwacji I’m using this image because it’s small enough to understand what’s going on – to see the detail of what’s available, reserved, confirmed, etc. Now imagine larger scales…

System rezerwacji Each one of the slots here is a block of seats – not just one.

Tradycyjne podejście Checkboxy Po co użytkownikowi kilka miejsc Bo chce zarezerwowac miejsca obok siebie dla rodziny/przyjaciół Problemem mogą wyścigi jesli kilka osób sprbuje zarezerwowac nakładające sie obszary

Uchwycenie intencji użytkownika Rezerwacja grupowea: Mała grupa – siedzi razem Duża grupa – kilka małych grup Podaj liczbę miejsc Podaj typ miejsc – określa koszt Propozycja z czasowym ograniczeniem – wymaga potwierdzenia/płatności

Koszyk nie jest aktualny! Produkt pokazywany na podstawie cmd Odgadywanie zmian Koszyk nie jest aktualny! Produkt pokazywany na podstawie cmd

Komenda vs. encja Łatwiej walidować komendę Z mała iloscią danych Bardziej konkretną Chodzi o potencjalną poprawność (wynik nie jest ostateczny) Walidacja dyżych encji jest trudna