Punkt wyjścia: dokumenty z cudzej chmury
Aplikacja do protokołów z przeglądów, którą zbudowałem dla firmy tzo24.pl (przeglądy budowlane i instalacyjne), generowała gotowe protokoły przez zewnętrzną usługę. Wysyłała do niej szablon Word i dane w formacie JSON, a w odpowiedzi dostawała dokument. Działało, ale każdy protokół, ze zdjęciami i skanami uprawnień inspektorów, przechodził przez cudzy serwer, a za usługę płaciło się abonament.
Co zrobiono
- Analiza szablonów. Protokół ma kilkanaście tabel, kilkadziesiąt pól w JSON, sekcje warunkowe (na przykład skany uprawnień) i obrazy o zadanym rozmiarze.
- Własna usługa. Na serwerze w sieci lokalnej klienta (Ubuntu Server) uruchomiłem w kontenerze Docker usługę z API, która z szablonu i danych buduje dokument. Zaprojektowałem ją jako zamiennik dotychczasowej.
- Zabezpieczenie. Serwer ma automatyczne aktualizacje, zaporę i ochronę przed zgadywaniem haseł, a aplikacja jest dostępna przez tunel, bez otwierania portów. Podobne środowisko opisałem w case study instalacja serwera pod klucz.
- Porównanie wyników. Te same dane i szablony przepuściłem przez starą i nową usługę, zestawiłem dokumenty obok siebie i poprawiłem miejsca, w których zdjęcie główne i skany uprawnień wychodziły w złym rozmiarze.
- Start produkcyjny. Po testach protokoły w formacie PDF zaczęły powstawać już na nowej usłudze.
Efekt
Protokoły powstają na serwerze w sieci klienta, dane z przeglądów nie trafiają już do zewnętrznej usługi generującej dokumenty, a za samo generowanie nie ma abonamentu. Dla inspektorów nic się nie zmieniło: protokół nadal powstaje jednym kliknięciem.
Wnioski
Warto sprawdzić, które usługi zewnętrzne da się zastąpić prostym kontenerem na własnym sprzęcie. Najwięcej pracy to zwykle nie sama usługa, tylko dokładne porównanie wyników ze starą. Pierwotny system opisałem w case study dedykowany system do cyfrowej dokumentacji z przeglądów budowlanych. Zobacz też usługi aplikacje wewnętrzne na zamówienie, serwery pod klucz oraz wdrożenia narzędzi open source i self-hosting.
