MonitorMe: uznany za najlepszą architekturę na świecie na O'Reilly Katas 2024

The O'Reilly Software Architecture Katas, organizowany przez Marka Richardsa i Neala Forda, to konkurs, w którym zespoły z całego świata mierzą się z wymagającymi problemami architektonicznymi. Odkryj architektoniczne podejście do MonitorMe, zwycięskiego projektu naszego zespołu.

Obejrzyj wideo, aby poznać zwycięski projekt

Nasze podejście do architektury

W architekturze częstym błędem jest nadmierne skupianie się na małych elementach bez uwzględnienia całości. Prowadzi to do zbyt złożonych rozwiązań, które mijają się z głównym celem. Interesariusze mają wtedy trudności ze zrozumieniem wizji, grzęznąc w szczegółach. Często skupiają się na kwestiach technicznych, które mogą nie mieć znaczenia dla użytkowników lub innych osób. 

Dlatego zastosowaliśmy naszą metodę, zwaną Kostką Rubika dla Architektów . Pozwala nam ona spojrzeć na aplikację z 6 różnych perspektyw:

  1. Perspektywa wymagań funkcjonalnych
  2. Perspektywa wymagań niefunkcjonalnych
  3. Perspektywa architektury technicznej
  4. Perspektywa wdrożenia aplikacji
  5. Funkcje fitness
  6. Perspektywa budowania zespołu i podział ról

Wyzwanie - czy możemy uratować życie w ciągu jednej sekundy?

Na to pytanie postanowił odpowiedzieć nasz zwycięski zespół w konkursie O'Reilly Software Architecture Kata.

Piotr Filipowicz, Sebastian Dąbkowski, Wojciech Kasa i Artur Kruszewski mieli 10 dni na przygotowanie rozwiązania architektonicznego dla MonitorMe. Aplikacja ratująca życie, zaprojektowana do zbierania danych z czujników, przetwarzania ich w czasie rzeczywistym i wysyłania krytycznych alertów zarówno do stacji pielęgniarskich, jak i urządzeń mobilnych.

Wymagania te mogą być spełnione przez cztery główne przepływy danych:

  • Zbieranie danych z czujników i ich wizualizacja na stanowisku pielęgniarki.
  • Alarmowanie personelu medycznego zarówno na urządzeniach mobilnych, jak i na stacji pielęgniarskiej w przypadku wykrycia anomalii w oparciu o zdefiniowane i łatwe do rozszerzenia reguły.
  • Przeglądanie parametrów życiowych pacjenta (maksymalnie 24 godziny).
  • Wysłanie migawki do MyMedicalData.
monitorme_slide

01.

Perspektywa wymagań funkcjonalnych

W przypadku wymagań biznesowych uważnie wysłuchaliśmy klienta i spisaliśmy jego wymagania. Następnie zidentyfikowaliśmy listę wymagań funkcjonalnych.

Następnym krokiem było zebranie zdarzeń, zidentyfikowanie aktorów i działań, które mogą wywołać.

Przeprowadziliśmy Event Storming aby zidentyfikować główne komponenty systemu MonitorMe. Te wspólne warsztaty pomogły nam zwizualizować przepływy pracy w systemie, zidentyfikować zdarzenia w domenie i określić interakcje między komponentami.

Dzięki temu procesowi zidentyfikowaliśmy niezbędne komponenty i ich relacje, informując o projekcie i wdrożeniu systemu. Oto wyniki.

02.

Wymagania niefunkcjonalne. Identyfikacja cech architektury

Wymagania biznesowe [GitHub ] i wyniki Event Storming [GitHub] doprowadziły nas do głębszego przyjrzenia się projektowi i zidentyfikowania kluczowych cech architektonicznych [GitHub], które są bardzo ważne dla systemu MonitorMe.

Wybór odpowiedniej architektury jest kluczowy dla efektywnego projektowania. Określa ona również efektywny przepływ danych w systemie. Biorąc pod uwagę te cechy, można wybrać odpowiednie oprogramowanie i sprzęt. Będą one spełniać potrzeby systemu. Zapewnia to prawidłowe działanie systemu, jego skalowalność, łatwość konserwacji i wysoką wydajność.

Trzy najważniejsze cechy architektoniczne są tym, co znaleźliśmy na podstawie wymagań i naszej wiedzy.

01 Ewoluowalność

Możliwość dostosowania systemu do spełniać zmieniające się potrzeby biznesowe

02 Wydajność

Aby przesłać dane w maksymalnie 1 sekundę

03 Elastyczność

Do obsługi nieoczekiwany szczyt obciążenia i skoki transmisji danych transmisja

Jeśli jesteś pasjonatem architektury, nie przegap tych dwóch odcinków naszego podcastu (w języku polskim)

03.

Perspektywa architektury technicznej

Po zidentyfikowaniu trzech najważniejszych cech, możemy po prostu wybrać styl architektury, który najlepiej pasuje do naszego przypadku biznesowego Architecture Decision Records [GitHub].

W oparciu o kryteria oceny elastyczności, ewolucyjności i wydajności wybrano architekturę sterowaną zdarzeniami. Decyzja jest poparta oceną 14 gwiazdek zgodnie ze schematem wyboru stylów architektonicznych.

monitor_2

Projektowanie architektury

Wykorzystując podejście C4, w szczególności skupiając się na widokach Context (C1) i Container (C2), możemy skutecznie wizualizować ogólną strukturę i kluczowe zależności w systemie MonitorMe.

 

Widok kontekstowy (C1)

Widok kontekstu pozwala nam zrozumieć wysokopoziomowe relacje i interakcje między systemem a jego zewnętrznymi komponentami lub systemami. Wszystkie decyzje architektoniczne są dokumentowane jako Architecture Decision Records (ADR).

Cały opis widoku Context można znaleźć tutaj [GitHub].

Widok kontenera (C2)

Widok kontenera pokazuje wewnętrzne komponenty systemu. Porządkuje je również w kontenery, takie jak usługi, bazy danych i interfejsy użytkownika. Ta metoda pomaga nam zrozumieć architekturę systemu. Ułatwia komunikację i podejmowanie decyzji podczas rozwoju.

Poniższa ilustracja przedstawia widok końcowy kontenera (C2).

Cały opis widoku Context można znaleźć tutaj [GitHub].

Widoki komponentów (C3)

Podczas projektowania architektury aplikacji czasami zagłębiamy się w poziom C3. Na tym poziomie ilustrujemy kluczowe przypadki użycia, wizualizując je za pomocą diagramów sekwencji. Takie podejście pomaga nam pokazać, które części znajdują się w każdym przypadku użycia. Zapewnia to jasną i skuteczną komunikację funkcjonalności systemu.

Zidentyfikowano cztery główne przypadki użycia systemu:

04.

Perspektywa wdrożenia aplikacji

Wybraliśmy Kubernetes dla naszej lokalnej infrastruktury, aby zwiększyć dostępność i wydajność.

Jego automatyczne skalowanie optymalizuje zasoby w oparciu o zapotrzebowanie, wydajnie obsługując obciążenia. Mechanizmy przełączania awaryjnego i równoważenia obciążenia Kubernetes zapewniają wysoką dostępność i nieprzerwaną obsługę. Takie podejście skutecznie zarządza naszą rozwijającą się aplikacją przy jednoczesnym zachowaniu standardów niezawodności.

Ostateczny schemat wdrożenia wygląda jak na poniższym diagramie. Jeśli chcesz zobaczyć szczegóły, przejdź do sekcji Wdrożenie [GitHub].

05.

Funkcje fitness. Perspektywa weryfikacji stworzonej architektury

Podczas opracowywania i optymalizacji systemu korzystamy z funkcji fitness, aby upewnić się, że spełnia on nasze cele w zakresie wydajności i jakości. Oceny te pomagają nam udoskonalić system, aby zapewnić jego optymalne działanie w rzeczywistych warunkach, zgodnie z celami biznesowymi klienta.

Funkcje te oceniają różne aspekty, takie jak

  1. Dokładność - zapewnienie, że system dostarcza prawidłowe wyniki.
  2. Wydajność - pomiar szybkości, wykorzystania zasobów i czasu reakcji.
  3. Skalowalność - sprawdzenie, czy system może skutecznie obsługiwać zwiększone obciążenie lub rozmiar danych.
  4. Niezawodność - ocena stabilności i tolerancji na błędy.
  5. Użyteczność - ocena tego, jak intuicyjny i przyjazny dla użytkownika jest system.
  6. Bezpieczeństwo - zapewnienie solidnej ochrony danych i ochrony przed nieautoryzowanym dostępem.
  7. Elastyczność - potwierdzenie zdolności systemu do dostosowywania się do zmian.
  8. Koszt - analiza kosztów wdrożenia, utrzymania i kosztów operacyjnych

Oceny te pomagają nam udoskonalić system, aby zapewnić jego optymalne działanie w rzeczywistych warunkach, zgodnie z celami biznesowymi klienta.

monitor_fitness

06.

Perspektywa budowania zespołu i podział ról

Zidentyfikowaliśmy dwa kluczowe strumienie w topologiach naszych zespołów: Zespół A i Zespół B. Razem zintegrują się one płynnie, tworząc platformę wspierającą całą naszą działalność.

Monitor_Xaas

Chcemy świętować Twój sukces!

Nasz zespół rozwiąże najbardziej złożone wyzwania architektoniczne dla Twojej firmy. Skontaktuj się z nami, aby umówić się na spotkanie.

A w międzyczasie obejrzyj reakcję naszego zespołu na ogłoszenie zwycięzcy 🙂

Dziękujemy za przeczytanie. 

Otrzymuj powiadomienia o nadchodzących Katas 2024/2025

Od czasu do czasu prowadzimy własne katas otwarte dla programistów, którzy chcą poprawić swoje umiejętności i nauczyć się czegoś nowego. Aby być na bieżąco z informacjami o kolejnych wydarzeniach, zapisz się na listę oczekujących, a wkrótce poinformujemy Cię o szczegółach.  

Czytaj więcej

Pobierz

Pobierz

Pobierz

Pobierz

Oznacza to również subskrypcję naszego newslettera

Pobierz przewodnik po outsourcingu