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 stoją na jednym zapleczu i jednym modelu danych, więc zgłoszenie z terenu i sprawa prowadzona przy biurku to ten sam rekord.

Trzy powierzchnie, jedno zaplecze i jeden model danych - aplikacja do zgłaszania szkody, panel operacyjny zespołu i strona firmowa Best Assistance stoją na tej samej aplikacji serwerowej. Zgłoszenie z terenu i sprawa prowadzona przy biurku to ten sam rekord. Nic po drodze nie jest eksportowane ani przepisywane.
Aplikacja w przeglądarce, nie w sklepie
Aplikacja terenowa to PWA w Angularze, na komponentach PrimeNG, z Service Workerem. Nie ma w niej Cordovy, Capacitora ani Ionica. Otwiera się pod adresem i siada na ekranie głównym telefonu.
Ten wybór zdjął z projektu trzy koszty. Nie ma osobnego wydania na dwa sklepy. Nie ma kolejki recenzyjnej między poprawką a jej dostarczeniem. Nie ma drugiego zespołu do kodu natywnego. Jedno wydanie obsługuje telefon w terenie i komputer w biurze.

Service Worker pobiera z góry powłokę aplikacji: dokument startowy, skrypty i arkusze stylów. Resztę dociąga leniwie. Aplikacja startuje więc od razu i nie ściąga się od nowa przy każdym wejściu. Przy słabym zasięgu na miejscu zdarzenia widać to natychmiast.
Zasięg jest potrzebny dopiero przy wysyłce. Powłoka siedzi w pamięci podręcznej, ale samo zgłoszenie idzie na serwer. Ta wersja nie ma kolejki zgłoszeń odkładanych na później.
Jedno zaplecze pod trzy adresy
Backend to aplikacja w Symfony, z Doctrine i bazą MySQL. Dzieli się na moduły, a rozdziela prefiksem trasy. Pod prefiksem panelu pracują moduły zgłoszeń, użytkowników, korespondencji, raportów i treści. Pod głównym adresem stoi 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. 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 dziś nazwałoby się monolitem. Dla zespołu tej wielkości była to decyzja słuszna. Jeden schemat bazy, jeden model uprawnień, jedno wdrożenie, jeden zestaw zależności. Sprawy nie trzeba synchronizować między systemami, bo nie ma między czym.
Cena też jest realna. 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. Zdjęcia idą do zgłoszenia od razu, a nie mailem po powrocie do biura.
Zgłoszenie z telefonu wchodzi do tej samej kolejki co zgłoszenie ze strony. Nigdy nie opuszcza tej samej bazy, więc nie ma momentu, w którym trzeba je przenosić między systemami.
Zespół prowadzi sprawę dalej z panelu, na tych samych danych. Jedno wydanie obsługuje telefon w terenie i komputer przy biurku.
Wykorzystane technologie
- Angular
- Symfony
- Service Worker
- MySQL
- Doctrine
- PrimeNG
- Twig