Aktualizacja aplikacji do monitorowania narażenia na promieniowanie

Firma Innowise zmodernizowała aplikację do monitorowania narażenia na promieniowanie, poprawiając czas reakcji o 3,3 razy i kładąc podwaliny pod zwiększenie funkcjonalności oprogramowania.

Klient

Branża
Opieka zdrowotna
Region
UE
Klient od
2024

Naszym klientem jest europejska firma konsultingowa i technologiczna specjalizująca się w ochronie przed promieniowaniem, zarządzaniu jakością i bezpieczeństwem. Firma wspiera przedsiębiorstwa z branży opieki zdrowotnej, transportu i energetyki oraz pomaga im zachować zgodność z regionalnymi przepisami dotyczącymi ochrony przed promieniowaniem i międzynarodowymi normami, w tym ISO 9001, ISO 14001 i ISO 19443.

Jeden z ich flagowych produktów, kompleksowa platforma SaaS, jest wykorzystywany przez ponad 200 firm codziennie do monitorowania narażenia pracowników na promieniowanie i stanu ich zdrowia. Aplikacja internetowa, której celem jest poprawa bezpieczeństwa i samopoczucia pracowników, umożliwia obliczanie poziomu ekspozycji na promieniowanie w oparciu o ręczne wprowadzanie danych dozymetrycznych. Aplikacja oferuje również monitorowanie danych zdrowotnych pracowników, spersonalizowane badania kontrolne i proaktywną ocenę ryzyka medycznego dla osób pracujących w potencjalnie niebezpiecznych środowiskach.

Szczegółowe informacje o kliencie nie mogą być ujawnione zgodnie z postanowieniami NDA.

Wyzwanie

Głęboko zakorzenione problemy z aplikacjami utrudniające rozwój firmy

Aplikacja do monitorowania narażenia na promieniowanie była dostępna na rynku już od ponad 10 lat, ale jej baza kodu nie przeszła w tym czasie żadnych znaczących aktualizacji ani zmian. Wraz z rozwojem działalności klienta wzrosło zapotrzebowanie na bardziej solidne, skalowalne rozwiązanie.

Firma chciała zmodernizować oprogramowanie, naprawić błędy i rozwiązać kilka problemów systemowych, które wpływały na wydajność i ogólną użyteczność:

  • Nieodpowiednia wydajność. Aplikacja znacznie zwalniała, gdy wielu klientów końcowych wysyłało zapytania jednocześnie, co czasami skutkowało czasem oczekiwania przekraczającym 500 ms i powodowało frustrację użytkowników. Ponieważ klient miał plany ekspansji biznesowej i spodziewał się wzrostu bazy użytkowników, ze wskaźników wydajności jasno wynikało, że aplikacja nie była w stanie poradzić sobie ze zwiększonym obciążeniem.
  • Ograniczone możliwości. Z biegiem lat działalności, klient zdał sobie sprawę, że aplikacja nie posiadała kilku ważnych funkcji niezbędnych do lepszego spełnienia wymagań klientów. Chcieli rozszerzyć rozwiązanie do monitorowania narażenia na promieniowanie o nowe, zaawansowane funkcje.
  • Słaba architektura aplikacji. Pierwotna architektura nie została zaprojektowana z myślą o skalowalności, przez co klient obawiał się, że nie będzie w stanie sprostać dalszemu rozwojowi.
  • Fragmentaryczna dokumentacja. Duża część dokumentacji aplikacji była przestarzała lub niekompletna. Aby usprawnić aktualizacje aplikacji i wdrażanie nowych użytkowników, klient musiał odzwierciedlić wszystkie aspekty istniejącego rozwiązania w dokładnej dokumentacji projektu.
W tym czasie aplikacja do monitorowania narażenia na promieniowanie była obsługiwana przez zewnętrzny zespół, który nie był w stanie rozwiązać tych problemów wystarczająco szybko. Klient poszukiwał więc doświadczonego zespołu ds. opieki zdrowotnej. partner w tworzeniu oprogramowania do przejęcia modernizacji aplikacji monitorującej narażenie na promieniowanie.

Wdrożenie

Dogłębny audyt aplikacji, modernizacja i refaktoryzacja

Zespół Innowise rozpoczął projekt od dogłębnego audytu aplikacji monitorującej narażenie na promieniowanie, aby zrozumieć podstawowe przyczyny problemów wpływających na system. Oto, co znaleźliśmy:
  • Przestarzała technologia. Aplikacja wykorzystywała starsze wersje języków programowania, w tym Node.js i Angular.js, a także różne wersje języków w całej aplikacji.
  • Nieefektywne zapytania SQL. W sposobie pisania zapytań SQL występował szereg anty-wzorców, które przyczyniały się do niskiej wydajności aplikacji.
  • Problemy z kontrolą wersji. Aplikacja cierpiała z powodu nieefektywnych praktyk kontroli wersji oprogramowania, z nieaktualnymi plikami, wtyczkami innych firm i plikami wykonywalnymi przechowywanymi pod kontrolą źródła.
  • Zdezorganizowane repozytoria. Struktura repozytoriów i projektów nie była intuicyjna, co utrudniało nawigację i zarządzanie bazą kodu.
  • Wdrożenie ręczne. Aplikacja była wdrażana ręcznie, bez potoku CI/CD, co zwiększało ryzyko biznesowe i prowadziło do potencjalnych błędów ludzkich.
  • Brak mechanizmów tworzenia kopii zapasowych i odzyskiwania danych. Nie istniały żadne mechanizmy tworzenia kopii zapasowych danych aplikacji lub odzyskiwania aplikacji, gdyby coś poszło nie tak.

W oparciu o wyniki audytu zespół projektowy Innowise stworzył jasną mapę drogową ulepszeń niezbędnych dla stabilności, wydajności i skalowalności aplikacji do monitorowania narażenia na promieniowanie. Po tym, jak klient zatwierdził nasz plan, przeszliśmy do stałych ulepszeń. 

Klient chciał, aby ewolucja aplikacji przebiegła tak płynnie, jak to tylko możliwe, więc zmiany były niewidoczne dla użytkowników końcowych, zapewniając brak zakłóceń biznesowych. W ciągu zaledwie 3 miesięcy zespół Innowise wprowadził następujące zmiany w aplikacji do monitorowania narażenia na promieniowanie.

Konteneryzacja aplikacji

Aby zwiększyć wydajność i wesprzeć przyszłe potrzeby skalowania, podzieliliśmy aplikację na kilka kluczowych komponentów: frontend, backend, moduły raportowania, moduł logowania i monitorowania oraz bazę danych. Następnie nasz zespół skonteneryzował każdy komponent i przeniósł je do oddzielnych maszyn wirtualnych. Zmiany te wspierały rosnące obciążenia przewidywane przez klienta.

Modernizacja stosu technologicznego

Zmodernizowaliśmy stos technologiczny aplikacji, aktualizując przestarzałe frameworki i narzędzia, usuwając błędy i upewniając się, że system może obsługiwać przyszłe ulepszenia. Dało to aplikacji bardzo potrzebny wzrost wydajności i łatwości konserwacji.

Refaktoryzacja bazy danych

Zespół Innowise dokonał refaktoryzacji bazy danych aplikacji monitorującej narażenie na promieniowanie, poprawiając zapytania do bazy danych, dodając indeksy i wprowadzając klucze obce. Nasze kompleksowe podejście zwiększyło wydajność bazy danych 1,5-3 razy po refaktoryzacji.

Wdrożenie potoku CI/CD

Wprowadziliśmy potok ciągłej integracji i wdrażania (CI/CD), aby zastąpić ręczny proces wdrażania. Dzięki temu nowemu podejściu nasz zespół zautomatyzował proces wdrażania, zapewniając szybsze i bardziej niezawodne aktualizacje. Wdrożyliśmy również rejestrowanie i monitorowanie systemu przy użyciu Prometheus i Grafana, aby śledzić i wizualizować wydajność systemu i problemy w czasie rzeczywistym.

Kopie zapasowe i odzyskiwanie po awarii

Zespół Innowise wykorzystał Infrastructure as Code (IaC) do odzyskiwania danych po awarii, co oznacza, że całą aplikację można teraz ponownie wdrożyć w nowym środowisku w zaledwie 15 minut. Stworzyliśmy również solidne procedury tworzenia kopii zapasowych, aby upewnić się, że dane są bezpieczne i można je szybko przywrócić w razie potrzeby.

Dokumentacja aplikacji

Równolegle do refaktoryzacji, zespół Innowise skrupulatnie tworzył dokumentację dla aplikacji monitorującej narażenie na promieniowanie, w tym wszystkie zmiany w architekturze i systemie.

Nadchodzący rozwój i przeprojektowanie interfejsu użytkownika

Po tym, jak położyliśmy podwaliny pod ewolucję aplikacji do monitorowania narażenia na promieniowanie, zamierzaliśmy przejść do rozwoju funkcji i przeprojektowania interfejsu użytkownika. Oto przyszłe ulepszenia, które nasz zespół już zaplanował:
  • Ulepszenia raportowania. Ulepszymy funkcje raportowania, dodając nowe rodzaje badań lekarskich i wprowadzając więcej formatów raportów.
  • Przeprojektowanie interfejsu użytkownika. Będziemy przeprojektowanie interfejsu użytkownika być bardziej intuicyjny i dostosowywać się do różnych urządzeń i rozmiarów ekranu, zapewniając lepsze wrażenia użytkownika końcowego.
  • Dalsze ulepszenia architektury. W oparciu o dane i wskaźniki wydajności Innowise będzie nadal ulepszać architekturę aplikacji, aby zapewnić jej skuteczne skalowanie.

Technologie

Front-end

Angular

Back-end

Node.js, WinDev

Cloud

OVHcloud

Baza danych

MySQL

DevOps

Terraform, Bitbucket, Grafana, Prometheus, Docker, Docker Compose

Proces

Biorąc pod uwagę, że klient chciał elastyczności w zakresie projektu, uzgodniliśmy model cenowy Time & Material, co oznacza, że z góry oszacowaliśmy godziny projektu, ale obciążyliśmy klienta tylko za faktycznie spędzone godziny. Gdy klient potrzebował rozszerzyć zakres projektu, nasz kierownik projektu dostarczył dodatkowe obliczenia, dzięki czemu klient mógł łatwo śledzić wydatki i postępy projektu.

Przyjęliśmy iteracyjne podejście do zarządzania projektem, dzieląc go na sprinty i definiując jasne kamienie milowe dla każdej fazy. Co tydzień nasz zespół projektowy prowadził rozmowy z interesariuszami klienta, aby dzielić się postępami i wynikami, poprawiając ogólne dostosowanie zespołu.

Zespół

1

Kierownik projektu

1

Kierownik ds. dostaw

1

Analityk
biznesowy

1

Architekt rozwiązań

1

Programista back-end

1

Programista front-end

1

Inżynier DevOps

1

QA Engineer

1

Inżynier ds. testów penetracyjnych

Wyniki

Lepsza wydajność i solidna architektura aplikacji

Teraz, po zaledwie 3 miesiącach, klient ma znacznie bardziej solidną, skalowalną i łatwą w utrzymaniu aplikację do monitorowania narażenia na promieniowanie. Z powodzeniem zmodernizowaliśmy infrastrukturę oprogramowania, naprawiliśmy problemy z wydajnością i zapewniliśmy, że architektura poradzi sobie z przyszłym wzrostem. Zespół Innowise opracował również jasną mapę drogową dla nadchodzącego rozwoju funkcji i ulepszeń systemu, które pomogą jeszcze bardziej poprawić komfort użytkowania i wydajność operacyjną.

W ciągu najbliższych kilku miesięcy nasz zespół przeprowadzi zaplanowane aktualizacje, aby pomóc klientowi sprostać zmieniającym się potrzebom użytkowników.

Czas trwania projektu
  • Grudzień 2024 r. - w toku

3.3

razy szybszy czas reakcji aplikacji

1.5-3

razy lepsza wydajność bazy danych

Skontaktuj się z nami

Umów się na rozmowę lub wypełnij poniższy formularz, a my skontaktujemy się z Tobą po przetworzeniu Twojego zgłoszenia.

    Prosimy o podanie szczegółów projektu, czasu trwania, stosu technologicznego, potrzebnych specjalistów IT i innych istotnych informacji.
    Nagraj wiadomość głosową na temat
    projekt, który pomoże nam lepiej go zrozumieć
    W razie potrzeby dołącz dodatkowe dokumenty
    Prześlij plik

    Można załączyć maksymalnie 1 plik o łącznej wielkości 2 MB. Ważne pliki: pdf, jpg, jpeg, png

    Informujemy, że po kliknięciu przycisku Wyślij Innowise będzie przetwarzać dane osobowe użytkownika zgodnie z naszą polityką prywatności. Politykę Prywatności w celu dostarczenia użytkownikowi odpowiednich informacji. Podanie numeru telefonu i przesłanie niniejszego formularza jest równoznaczne z wyrażeniem zgody na kontakt za pośrednictwem wiadomości tekstowej SMS. Mogą obowiązywać opłaty za wiadomości i transmisję danych. Możesz odpowiedzieć STOP, aby zrezygnować z dalszych wiadomości. Aby uzyskać więcej informacji, odpowiedz POMOC.

    Co dalej?

    1

    Po otrzymaniu i przetworzeniu Twojego zgłoszenia skontaktujemy się z Tobą wkrótce, aby wyszczególnić potrzeby projektu i podpisać umowę o zachowaniu poufności, aby zapewnić poufność informacji.

    2

    Po przeanalizowaniu wymagań, nasi analitycy i programiści opracowują projekt z zakresem prac, wielkością zespołu, czasem i kosztami szacunki.

    3

    Umówimy się z Tobą na spotkanie, aby omówić ofertę i dojść do porozumienia porozumienia.

    4

    Podpisujemy umowę i rozpoczynamy pracę nad projektem tak szybko, jak to możliwe.

    Спасибо!

    Cобщение отправлено.
    Мы обработаем ваш запрос и свяжемся с вами в кратчайшие сроки.

    Dziękuję!

    Wiadomość została wysłana.
    Przetworzymy Twoją prośbę i skontaktujemy się z Tobą tak szybko, jak to możliwe.

    Dziękuję!

    Wiadomość została wysłana. 

    Przetworzymy Twoją prośbę i skontaktujemy się z Tobą tak szybko, jak to możliwe.

    strzałka