image from Modelowanie w Cosmos DB - zwrot

Modelowanie w Cosmos DB - zwrot

Kontynuujemy cykl o modelowaniu w Cosmos DB. W tym odcinku skończymy analizę potrzeb biznesowych obszarem zwrotu wypożyczonych rowerów.

W kolejnych odcinkach przejdziemy do analizy scenariuszy pod kątem wymagań bazy danych 💻

Wypożyczenia bez rezerwacji

Biznes wspomina o ostatnim obszarze - zwrotach, i pierwszym scenariuszu:

  • “No to pora zakończyć naszą opowieść zwrotem roweru. Na początek zwrot poza stacją. Pomimo, że to dodatkowo kosztuje, to i tak klienci się na to zgadzają.”
  • “Czyli zatrzymuję rower, i co dalej?”
  • “Otwierasz aplikację i aktywne wypożyczenia.”
  • “A to można mieć naraz kilka wypożyczeń?”
  • “A czemu nie? Możesz wypożyczyć rower dla siebie i dzieci. Kiedy masz już aktywne wypożyczenie to wybierasz właściwe i je kończysz. System zwraca rower do listy dostępnych rowerów. Następnie blokuje kłódkę rowerową.”

Nawiązując do poprzednich diagramów dodajemy licznik czasu i powiadomienie. Biznes kiwa głową i przechodzi dalej.

Wypożyczenie z rezerwacją

Kontynuujemy z drugim scenariuszem.

  • “Ok, to teraz druga opcja zwrotu - na stacji. Tutaj jest nieco inaczej. Klient podjeżdża na stację i wpina rower w wolne miejsce. Na tej podstawie system kończy wypożyczenie na dany rower.”
  • “Hmm, a czemu nie można po prostu otworzyć aktywnych wypożyczeń w apce i zwrócić rower?”
  • “Ponieważ to w rzeczywistości nie jest proste. Jak potwierdzimy, że rower jest na stacji? Stacja i tak musi wysłać informację o odebraniu rowera. Dodatkowo, skoro mamy rower i stację, to czemu zmuszać klienta do otwierania aplikacji?”
  • “Rzeczywiście. Co się dzieje dalej?”
  • “Dalej jest w sumie identycznie jak poprzednio - zwrot na listę dostępnych, blokada kłódki, licznik i powiadomienie.”

Wracamy z diagramem, dodając jedną ścieżkę:

  • “Po wysłaniu informacji o rowerze ze stacji nie da się tak po prostu zakończyć wypożyczenia. Najpierw musimy dostać wypożyczenie na bazie zwracanego roweru. System sam z siebie nie będzie wiedział do jakiego wypożyczenia należy dany rower.”
  • “Słuszna uwaga. My założyliśmy, że stanie się to automagicznie 😁”

Automatyczne zakończenie

Biznes rozpoczyna ostatni scenariusz:

  • “Pora na automatyczne zakończenie wypożyczenia. Tutaj nie ma wielkiej filozofii. Po tym, jak upłynie czas na wypożyczenie (24 godziny), to kończymy automatycznie wypożyczenie. Następnie powiadamiamy klienta, a także pracowników administracji.”
  • “Czy nie powinniśmy również zablokować kłódki w rowerze?”
  • “Niech was ręka boska broni by pisać taki kod 😱 Załóżmy, że ktoś tym rowerem jedzie. Przecież to mogłoby nawet zabić naszego klienta.”
  • “Co racja to racja.”

Domain Storytelling postscriptum

Dodatkowe ścieżki

Najpierw musimy dostać wypożyczenie na bazie roweru. System sam z siebie nie będzie wiedział do jakiego wypożyczenia należy dany rower.

Patrząc na kolejne etapy scenariusza możemy zauważyć luki i potrzebę dodatkowych ścieżek:

  • Aktor / System dostaje informację ABC
  • Aktor / System przetwarza informację CDE
  • ABC != CDE
  • Brakuje kroku mapującego ABC->CDE

Nie zawsze jest potrzeba dodawania takiego kroku, ale w przypadku powyżej ten krok ułatwia zrozumienie pracy systemu oraz pokazuje dodatkową złożoność.

Drobne akcje i głębokie konsekwencje

Zablokowanie kłódki przy automatycznym zakończeniu wypożyczenia wydaje się dobrym pomysłem. Ale czasem dobre pomysły mają bardzo złe konsekwencje. Jeśli odległość pomiędzy biznesem a osobami technicznymi byłaby zbyt wielka, to możliwe, że taka zmiana weszła by na produkcję.

Alberto Brandolini na jednej prezentacji powiedział:

Programmers make 1 million dollar decisions, without even knowing it.

Czasem na szali jest nawet ludzkie życie 🧑👩

comments powered by Disqus