Rozwój i modernizacja aplikacji klasy ERP

Aplikacja klasy ERP do zarządzania projektami, która łączy i integruje wszystkie obszary firmy w jeden ekosystem IT.

JavaScript
Angular.js
PHP 7
Symfony 4.3
GO
Monolith
Strangler Pattern
MariaDB
Redis
Docker
Composer
Unit tests
BDB
PHPUnit
Postman
Behat
Dlaczego?

Aby usprawnić zarządzanie projektami i ułatwić przepływ informacji między poszczególnymi działami.

Co?

Uproszczenie złożoności procesów biznesowych oraz optymalizacja wykorzystania zasobów.

Jak?

Modułowa aplikacja klasy ERP integrująca wszystkie obszary firmy w jeden ekosystem IT.

Opis

Aplikacja klasy ERP do zarządzania projektami, która łączy i integruje wszystkie obszary firmy w jeden ekosystem IT, co ułatwia przepływ informacji między poszczególnymi działami. Modułowa budowa aplikacji sprawia, że można ją łatwo dostosowywać do unikatowych potrzeb każdej firmy zajmującej się zarządzaniem projektami. Dlatego chętnie korzystają z niej np. biura architektoniczne czy agencje kreatywne.

  • Zakres

    Frontend & Backend Deveopment, Infrastruktura, Bazy danych, QA

  • Branża

    Technologie informacyjne (IT),  Oprogramowanie biznesowe, Systemy zarządzania przedsiębiorstwem  

  • Region / Kraj:

    Niemcy

Problem

Optymalne zarządzanie zasobami projektowymi to wyzwanie, przed którym staje wiele firm. Dodatkowo coraz niższe budżety i napięte terminy nie ułatwiają tego zadania. Dlatego potrzebna jest aplikacja, która uprości złożoność procesów oraz w szczegółowym stopniu, niemal w czasie rzeczywistym, pozwoli śledzić co się dzieje z zasobami finansowymi i ludzkimi. W rezultacie umożliwi to przyjęcie strategii redukcji ryzyka i ewentualnie szybkiej jej modyfikacji, a także sprawne i właściwe wykorzystanie dostępnych zasobów.

Problem
Rozwiązanie

W roku 2006 niemiecka agencja marketingowa na własne potrzeby napisała aplikację, umożliwiającą efektywniejsze zarządzanie czasem swoich pracowników oraz różnymi zasobami projektowymi. W tamtym okresie brakowało takich rozwiązań, więc podjęto decyzję o wprowadzeniu aplikacji na rynek.  

Pierwsze próby sprzedaży szybko pokazały, że klienci oczekują dostosowania aplikacji, która miała dość podstawowe funkcje, do realiów ich biznesu. W praktyce wymuszało to potrzebę szybkiego dodawania nowych modułów lub rozwijania już istniejących. Dlatego firma zdecydowała się na współpracę z partnerem technologicznym, który mógłby w tym pomóc.

Przez kolejne lata, programiści FINGO rozwijali aplikację o nowe moduły, dostarczając coraz więcej funkcji. Z czasem jednak aplikacja przestała być atrakcyjna pod względem designu i UI, w zestawieniu z nowo powstającymi rozwiązaniami oferowanymi przez konkurencję. Powód był prosty - aplikacja klienta była wytwarzana zgodnie z podejściem, które powoli przestawało być standardem rynkowym (frontend statycznie generował się po stronie backendu). Nową normą stawało się odseparowanie frontendu od backendu. Dlatego potrzebna była refaktoryzacja kodu.

Programiści FINGO chcąc przekonać klienta o zasadności zmiany sposobu wytwarzania produktu, przeprowadzili analizę. Jej zadaniem było znalezienie odpowiedzi na pytanie o to jak jednocześnie rozwijać obecną aplikację dodając nowe moduły, oraz modernizować i podmieniać stare, tak aby nie odbiło się to na jakości użytkowania aplikacji. Ustalili, że integracja nowego i starego frameworku nie obędzie się bez refaktoryzacji miejsca styku, czyli funkcji logowania do systemu. Strona logowania stała się więc pierwszym testem na wprowadzenie Symfony do stosu technologicznego. Klient docenił pomysł programistów FINGO i zgodził się na dalsze prace.

Modernizacja aplikacji opierała się na stopniowym zastępowaniu najbardziej istotnych modułów nowszymi implementacjami.

Kolejnym wyzwaniem był moduł “Price List”, czyli zarządzany przez administratorów zbiór szablonów, z których później korzystali pozostali użytkownicy aplikacji. W tym module struktura danych była bardzo złożona oraz w zamyśle powinna umożliwiać duże dostosowanie szablonów do indywidualnych potrzeb użytkownika. Niestety moduł generował sporo zgłoszeń od użytkowników, którzy mieli problem z jego działaniem, spójnością danych czy też brakiem pełnej walidacji.

Aby zabezpieczyć dane wielu klientów przeprowadzono migrację danych ze starego formatu na nowy. Stanowiło to pewne wyzwanie, gdyż nowa struktura była bardzo rygorystyczna, jeśli chodzi o spójność oraz kontrolę jakości danych. Dodatkowo pewne funkcje zostały przeprojektowane by uprościć strukturę przy jednoczesnym zachowaniu praktycznie wszystkich funkcji.

Po wydaniu nowej wersji napisanej w Symfony i Angularze przestały pojawiać się nowe zgłoszenia błędów od użytkowników. Jednym z powodów było też kompletne pokrycie modułu testami automatycznymi oraz end-to-end.

Zmiana profilu technologicznego (przejście z PHP na Node.js) oraz strategii biznesowej (większa orientacja na rynek FinTech) FINGO, spowodowały zakończenie wieloletniej, ale jakże udanej współpracy. Od 2021 r. klient rozwija aplikację samodzielnie.

Rezultaty projektu
Rezultaty projektu

Sprawne dostarczenie nowych funkcji systemu, dzięki realizacji wymagań biznesowych przy zastosowaniu podejścia zwinnego procesu rozwoju oprogramowania Behavior-Driven Development.

Zwiększenie konkurencyjności aplikacji na rynku, dzięki rozdzieleniu frontendu i backendu oraz przejściu na nowe frameworki. Dzięki temu, usprawniono proces testowania aplikacji (szybciej znajdowano błędy), szybciej oddawano nowe funkcje, a warstwa wizualna zyskała na atrakcyjności i użyteczności.

Zwiększenie wydajności rozwoju aplikacji poprzez stopniową modernizację architektury przy użyciu podejścia Strangler Pattern.

Zauważalna przez klientów poprawa jakości działania aplikacji oraz jej stabilności, dzięki wprowadzeniu procesu testowania aplikacji przez specjalistów QA (np. zastosowanie testów behawioralnych).

Zwiększenie bezpieczeństwa aplikacji oraz jej szybkości działania, dzięki stale aktualizowanej wersji PHP, a także używanych bibliotek i frameworków.

Na przestrzeni 15-letniej współpracy zespół FINGO stał się ważnym partnerem technologicznym, który nie tylko potrafił doradzić w zakresie realizacji wymagań biznesowych pod względem technicznym, ale sam wychodził z inicjatywami zmian. Spotykało się to z aprobatą klienta, ale również coraz lepszym odbiorem produktu na rynku.