Strona główna / Studia przypadków / MonitorMe
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:
- Perspektywa wymagań funkcjonalnych
- Perspektywa wymagań niefunkcjonalnych
- Perspektywa architektury technicznej
- Perspektywa wdrożenia aplikacji
- Funkcje fitness
- 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.
Wymyślili przegląd biznesowy [GitHub ] i wydestylowali wymagania [GitHub].
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.

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.

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
- Dokładność - zapewnienie, że system dostarcza prawidłowe wyniki.
- Wydajność - pomiar szybkości, wykorzystania zasobów i czasu reakcji.
- Skalowalność - sprawdzenie, czy system może skutecznie obsługiwać zwiększone obciążenie lub rozmiar danych.
- Niezawodność - ocena stabilności i tolerancji na błędy.
- Użyteczność - ocena tego, jak intuicyjny i przyjazny dla użytkownika jest system.
- Bezpieczeństwo - zapewnienie solidnej ochrony danych i ochrony przed nieautoryzowanym dostępem.
- Elastyczność - potwierdzenie zdolności systemu do dostosowywania się do zmian.
- 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.

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ść.

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
TREWOR: Asystent czatu AI upraszczający złożoną dokumentację w różnych branżach
Przywitaj się z TREWOR, asystentem czatu AI do analizy dużej dokumentacji
USA-AUTO-ONLINE: 100 razy szybsze wyświetlanie stron i udostępnianie użytkownikom 100 000 aukcji więcej dzięki nowemu projektowi platformy
Dowiedz się, jak pomogliśmy USA-AUTO-ONLINE wyświetlać użytkownikom więcej aukcji na komputerze z mniejszą ilością pamięci RAM i mniejszym procesorem.
Ulepszone prognozowanie kosztów dzięki niestandardowemu konfiguratorowi dla 300-osobowego zespołu sprzedaży
Zobacz, jak opracowaliśmy zaawansowany konfigurator umów do prognozowania kosztów i zarządzania umowami w branży produkcyjnej.
Trainplanet: Poprawa skalowalności i doświadczenia użytkownika poprzez połączenie wielu usług w jedną
Stworzenie portalu umożliwiającego rezerwację pociągów w całej Europie z największym szwedzkim dostawcą biletów kolejowych.
TREWOR: Asystent czatu AI upraszczający złożoną dokumentację w różnych branżach
Przywitaj się z TREWOR, asystentem czatu AI do analizy dużej dokumentacji
USA-AUTO-ONLINE: 100 razy szybsze wyświetlanie stron i udostępnianie użytkownikom 100 000 aukcji więcej dzięki nowemu projektowi platformy
Dowiedz się, jak pomogliśmy USA-AUTO-ONLINE wyświetlać użytkownikom więcej aukcji na komputerze z mniejszą ilością pamięci RAM i mniejszym procesorem.
Ulepszone prognozowanie kosztów dzięki niestandardowemu konfiguratorowi dla 300-osobowego zespołu sprzedaży
Zobacz, jak opracowaliśmy zaawansowany konfigurator umów do prognozowania kosztów i zarządzania umowami w branży produkcyjnej.
Trainplanet: Poprawa skalowalności i doświadczenia użytkownika poprzez połączenie wielu usług w jedną
Stworzenie portalu umożliwiającego rezerwację pociągów w całej Europie z największym szwedzkim dostawcą biletów kolejowych.