Architektura wysoce wydajnych środowisk low-code workflow

Większość organizacji, decydując się na wdrożenie systemu workflow/low-code, zaczyna od jednego lub kilku procesów. Z naszego doświadczenia wynika, że są to najczęściej procesy związane z akceptacją zakupów, faktur kosztowych, umów, korespondencji, procesy HR, takie jak e-Teczka i rekrutacja, czy wnioski, a także inne procesy back-office. Najczęściej architektura jest projektowana właśnie pod kilka – kilkanaście procesów. Z czasem, po osiągnięciu pierwszych znaczących korzyści z digitalizacji, zapada decyzja o włączeniu kolejnych procesów.
Większość systemów workflow w tym momencie napotyka ogromne problemy ze skalowaniem architektury, aby mogła ona obsłużyć dodatkowe procesy i nowych użytkowników, którzy nie brali udziału w pierwotnie planowanych procesach. Dla wielu organizacji jest to bardzo często moment, w którym rozpoczyna się dyskusja, czy system powinien zostać wymieniony. Niejednokrotnie rozpoczynaliśmy wdrożenie nowych procesów w dużych organizacjach właśnie w tym punkcie ich drogi cyfrowej transformacji.
Dlatego architektura systemu i jego możliwości skalowania są niezwykle istotne podczas podejmowania decyzji o wyborze systemu workflow.
Kluczowe elementy systemu JobRouter
Kluczowe elementy systemu JobRouter, które zapewniają stabilne, bezpieczne działanie i gwarantują odpowiednie skalowanie wraz z rozwojem liczby zdigitalizowanych procesów to:
- Architektura oparta na konteneryzacji
Architektura oparta na konteneryzacji to sposób organizacji i budowania oprogramowania, w którym aplikacje i ich zależności są pakowane w lekkie, niezależne jednostki zwane kontenerami. Kontenery zapewniają spójne i powtarzalne środowisko uruchomieniowe dla aplikacji, niezależnie od infrastruktury, na której są uruchamiane.
Kluczowe cechy i korzyści:
- Izolacja: Konteneryzacja izoluje aplikacje od siebie nawzajem oraz od systemu operacyjnego, co zwiększa bezpieczeństwo i stabilność.
- Lekkość: Kontenery są lżejsze niż tradycyjne maszyny wirtualne, ponieważ dzielą wspólny system operacyjny, co pozwala na uruchamianie większej liczby aplikacji na tej samej maszynie.
- Przenośność: Kontenery są niezależne od platformy, co oznacza, że aplikacje w kontenerach mogą być łatwo przenoszone między różnymi środowiskami, takimi jak serwery deweloperskie, testowe czy produkcyjne.
- Skalowalność: Konteneryzacja ułatwia skalowanie aplikacji, ponieważ można łatwo tworzyć i uruchamiać wiele instancji tego samego kontenera w celu obsługi zwiększonego ruchu.
- Mikrousługi: Konteneryzacja jest często stosowana w architekturze mikrousług, gdzie aplikacja jest podzielona na mniejsze, niezależne usługi działające w osobnych kontenerach.
- Izolacja: Konteneryzacja izoluje aplikacje od siebie nawzajem oraz od systemu operacyjnego, co zwiększa bezpieczeństwo i stabilność.
- Skalowalność pozioma
Polega na dodawaniu kolejnych serwerów lub węzłów do istniejącej infrastruktury w celu rozłożenia obciążenia i zwiększenia mocy obliczeniowej. Można to porównać do rozbudowywania drogi ekspresowej o dodatkowe pasy, aby pomieścić więcej samochodów. Jest elastycznym rozwiązaniem, pozwalającym na płynne dostosowywanie zasobów do zmieniającego się obciążenia.
Wymaga jednak zarządzania rozproszonym środowiskiem i konfiguracji równoważenia obciążenia (load balancing). W przypadku systemu JobRouter mówimy o możliwości rozłożenia ruchu na poziomie bazy danych, usług oraz aplikacji webowej.
- Skalowalność pionowa
Polega na dodaniu zasobów do istniejącej architektury. Można to porównać do ulepszania samochodu, aby jeździł szybciej i spalał mniej paliwa. Istotna jest taka architektura każdego z komponentów systemu, aby nie ograniczał pełnego wykorzystania dostępnych zasobów w postaci pamięci RAM czy CPU.
- Zapewnienie automatycznej migracji – JobShift
Dzięki modułowi JobRouter JobShift operacje (wystąpienia procesów) są przenoszone do archiwalnej bazy po upływie określonej liczby dni, miesięcy lub lat od zakończenia procesu. Na przykład, faktury po 6 latach przenoszone są do bazy archiwalnej. Dzięki temu użytkownicy nadal mają dostęp do pełnego logu, kto i kiedy akceptował dany dokument, jednak dane te nie są przechowywane w podstawowej bazie danych i nie powodują spowolnienia aplikacji.
Jak mierzyć wydajność systemu?
Aby mieć pewność, że system działa optymalnie, warto monitorować jego wydajność. Można to zrobić, mierząc czas kluczowych operacji, takich jak otwieranie formularza, wyświetlanie raportu czy logowanie do systemu. Dzięki temu uzyskasz precyzyjne dane, które pomogą w wykryciu potencjalnych problemów.
Do monitorowania wydajności można wykorzystać specjalistyczne narzędzia. Jednym z przykładów jest Zabbix, który pozwala na zbieranie, wizualizację i analizę danych o wydajności w czasie rzeczywistym. Dzięki takim narzędziom można automatycznie wykrywać anomalie i reagować na nie, zanim wpłyną na pracę użytkowników.
Podsumowanie
Dzięki swojej przemyślanej architekturze, system JobRouter jest gotowy na bardzo duży wzrost obciążenia systemu, bez utraty kluczowych parametrów wydajnościowych. Konteneryzacja, skalowalność pozioma i pionowa, a także funkcjonalność JobShift, zapewniają stabilne i efektywne działanie, niezależnie od skali wdrożenia. To sprawia, że jest idealnym rozwiązaniem dla organizacji, które planują nie tylko digitalizację, ale również długoterminowy rozwój swoich procesów.