System dedykowany
Best Assistance
Obsługa zgłoszeń szkody dla firmy assistance: aplikacja działająca w przeglądarce telefonu, panel operacyjny zespołu i strona firmowa. Wszystkie trzy powierzchnie działają na jednym zapleczu i jednym modelu danych, więc zgłoszenie z terenu i sprawa prowadzona przy biurku to ten sam rekord. Ceną tego wyboru jest to, że żadnej z trzech nie da się zmodernizować bez ruszania pozostałych.

Trzy powierzchnie, jedno zaplecze i jeden model danych: aplikacja do zgłaszania szkody, panel operacyjny zespołu i strona firmowa Best Assistance działają na tej samej aplikacji serwerowej. Zgłoszenie z terenu i sprawa prowadzona przy biurku to więc ten sam rekord. Nikt go po drodze nie eksportuje ani nie przepisuje.
Aplikacja w przeglądarce, nie w sklepie
Aplikacja terenowa to PWA w Angularze, na komponentach PrimeNG, z Service Workerem. Działa bez Cordovy, Capacitora czy Ionica. Otwiera się pod adresem i można ją dodać do ekranu głównego telefonu.
Ten wybór zdjął z projektu trzy koszty: osobne wydania na dwa sklepy, kolejkę recenzyjną między poprawką a jej dostarczeniem i drugi zespół do kodu natywnego. Jedno wydanie obsługuje telefon w terenie i komputer w biurze.

Service Worker pobiera z góry powłokę aplikacji, czyli dokument startowy, skrypty i arkusze stylów, a resztę dociąga leniwie. Aplikacja startuje więc od razu i nie ściąga się od nowa przy każdym wejściu, co przy słabym zasięgu na miejscu zdarzenia widać natychmiast.
Zasięg jest potrzebny dopiero przy wysyłce. Powłoka jest w pamięci podręcznej, ale samo zgłoszenie idzie na serwer.
Jedno zaplecze pod trzy adresy
Backend to aplikacja w Symfony, z Doctrine i bazą MySQL, podzielona na moduły rozdzielone prefiksem trasy. Pod prefiksem panelu pracują moduły zgłoszeń, użytkowników, korespondencji, raportów i treści, a pod głównym adresem działa strona firmowa razem z modułem CMS. API dla aplikacji terenowej wystawia FOSRestBundle, z dokumentacją generowaną z kodu.

Zdjęcia i dokumenty dopina się do zgłoszenia osobnym punktem w API, z podziałem na typ załącznika. Przy szkodzie zdjęcie z miejsca zdarzenia jest materiałem dowodowym i trafia do sprawy od razu, a nie mailem po powrocie do biura.
Monolit, który był właściwym wyborem
Trzy powierzchnie na jednej aplikacji serwerowej nazwałoby się dziś monolitem, ale dla zespołu tej wielkości była to decyzja słuszna: jeden schemat bazy, jeden model uprawnień, jedno wdrożenie i jeden zestaw zależności. Sprawy nie trzeba synchronizować między systemami, bo nie ma między czym.
Ta decyzja ma też swoją cenę. Jednej powierzchni nie da się zmodernizować bez ruszania pozostałych, a wspólny schemat bazy wiąże ze sobą trzy interfejsy, które mogłyby zmieniać się każdy w swoim tempie. Rachunek, przy którym scalone zaplecze zaczyna kosztować więcej, niż oszczędza, prowadzimy w architekturze IT i modernizacji.
Co z tego wynika
Szkodę da się zgłosić na miejscu zdarzenia, z przeglądarki w telefonie, bez instalowania czegokolwiek ze sklepu, a zdjęcia trafiają do zgłoszenia od razu.
Zgłoszenie z telefonu wchodzi do tej samej kolejki co zgłoszenie ze strony i przez cały czas zostaje w tej samej bazie, więc nie ma momentu, w którym trzeba je przenosić między systemami.
Zespół prowadzi sprawę dalej z panelu, na tych samych danych, a jedno wydanie obsługuje telefon w terenie i komputer przy biurku.
Wykorzystane technologie
- Angular
- Symfony
- Service Worker
- MySQL
- Doctrine
- PrimeNG
- Twig