… czyli ile trzeba się napracować przed startem właściwego projektu, a jeszcze nie ma żadnej funkcji biznesowej.
Wstęp
Każdy programista zaczynając nowy projekt myśli sobie, że tym razem zrobi wszystko “na świeżo”, z użyciem najnowszych bibliotek i wzorców. Ja postanowiłem sobie spisać funkcje szkieletu aplikacji internetowej, które robiłem w różnych projektach i wydają mi się niezbędne, żeby taka aplikacja była “production-ready”. Lista wyszła zaskakujaco długa, począwszy od podstawowych funkcji biznesowych, przez funkcje administracyjne, wybór elementów stosu technologicznego, a skończywszy na kwestiach bezpieczeństwa i organizacji procesów wytwarzania oprogramowania.
Jak programiści i firmy radzą sobie ze startem projektu, skoro jest aż tak wiele do zrobienia, żeby w ogóle zacząć myśleć o implementowaniu funkcji biznesowych, czyli tym, za co “biznes” właściwie chce płacić?
Wydaje mi się, że rozwiązań jest kilka:
Użycie gotowego szkieletu używanego w ostatnim projekcie – zespół go zna, jest sprawdzony i ma większość potrzebnych funkcji, ale może wymagać “odświeżenia” i oczyszczenia z funkcji realizowanych dla poprzedniego klienta i niepotrzebnych u nowego
Użycie gotowego szkieletu “open source” np. https://www.jhipster.tech/ – jest elastycznie konfigurowalny i uzywa najnowszych technologii, ale jeżeli zespół go nie zna, to musi się go nauczyć oraz przyzwyczaić do pewnych specyficznych, niekoniecznie intuicyjnych wzorców, możliwe też, że nie będzie mieć wszystkich wymaganych funkcji
Użycie gotowych szkieletów komercyjnych, np. SAP Commerce (kiedyś “Hybris”) dla aplikacji e-commerce, jednak moje niewielkie doświadczenie z tego typu produktami jest raczej złe, bo w celu zachowania spójności z istniejącymi wdrożeniami są one bardzo rzadko rewolucyjnie usprawnianie i najczęściej zatrzymują się koncepcyjnie w latach, kiedy były wymyślone
Wygenerowanie szkieletu aplikacji z użyciem sztucznej inteligencji – pomysł obecnie atrakcyjny, ale wymaga wiedzy o co trzeba prosić i wiedzy, żeby otrzymany kod zweryfikować, a otrzymane rozwiązanie trzeba bardzo dokładnie przetestować i ewentualne błędy poprawić, pewnie też z użyciem AI.
Pomysłem na moje ćwiczenie jest podejście 4., co spróbuję w kolejnym etapie zrobić.
Opisane niżej elementy składają się na typową aplikację:
z częścią publiczną z logowaniem użytkowników i płatnościami “za coś”
z częścią administracyjną umożliwiającą zarządzanie administratorami i podstawowymi funkcjami systemu
korzystającą z relacyjnej bazy danych
budowaną do artefaktów w postaci obrazów Docker umożliwiającą instalację w środowisku chmurowym
Elementy funkcjonalne aplikacji w części publicznej
Rejestracja nowego użytkownika z użyciem adresu pocztowego (captcha, wymagane silnego hasła, zabezpieczenie przed zgadywaniem haseł)
Akceptacja regulaminów (consents)
Uwierzytelnianie (popularnie mówiąc “logowanie”) z użyciem loginu i hasła oraz mechanizmu 2FA (kod jednorazowy przez e-mail i aplikacja 2FA) z uwzględnieniem blokowania tymczasowego i całkowitego po nieudanych próbach, zabezpieczenie przed zgadywaniem haseł, zapamiętywanie urządzenia żeby pomijać 2FA
Zarządzanie własnym profilem: zmiana hasła, przypomnienie hasła, zapominanie uwierzytelnionych urządzeń, kasowanie profilu
Rejestracja nowego użytkownika i późniejsze uwierzytelnianie z użyciem zewnętrznego konta (SSO) np. Google, Microsoft
Płatności online – integracja z jakimś popularnym operatorem płatności np. Przelewy24 w Polsce lub Stripe dla płatności globalnych
Elementy funkcjonalne aplikacji w części administracyjnej
Uwierzytelnianie, zmiana hasła, przypomnienie hasła
Zarządzanie administratorami
Zarządzanie grupami i uprawnieniami administratorów
Zarządzanie użytkownikami części publicznej, w tym kasowanie profilu
Zarządzanie treściami edytowanymi, które są widoczne w części publicznej – minimalna funkcja CMS, żeby poprawka drobnej literówki (np. w regulaminach, danych kontaktowych, itp.) w nie wymagała poprawki developerskiej i deploymentu aplikacji
Zarządzanie zamówieniami/płatnościami
Zbieranie i przeglądanie zdarzeń wykonywanych przez innych administratorów (na potrzeby audytów)
Zarządzanie szablonami e-maili wysyłanymi przez system
Walidacja formularzy i obsługa błędów z API REST: ładny komunikat, unikalny numer błędu pozwalający znaleźć szczegóły w logach
Wsparcie RWD, żeby aplikacja działała na różnych urządzeniach
Obsługa błędów aplikacji
Mechanizm cache dla danych i jego inwalidacja w klastrze
Wysyłanie e-maili wraz z możliwością zarządzania ich szablonami
Mechanizm uruchamiania zadań wsadowych, np. cyklicznie odblokowujących tymczasowo zablokowane konta
Informacja o wersji aplikacji
Obsługa upload plików przez administratorów oraz użytkowników części publicznej (z obsługą CDN, skalowaniem obrazków na potrzeby RWD i skanowaniem antywirusowym)
Mechanizm migracji modelu danych np. Flyway, Liquibase, itp.
Mechanizm dokumentowania API REST, np. Swagger
Monitoring aplikacji: wystawienie metryk, zbieranie i wizualizacja danych oraz alarmy
Mechanizm analizy logów aplikacji i powiadomienia o anomaliach
Bezpieczeństwo aplikacji
Ustawienie poprawnych wymaganych nagłówków HTTP
Ustawienie nagłówków związanych z cache’owaniem
Obsługa nagłówków Content Security Policy, w tym dla skryptów zewnętrznych zaufanych usług, np. analityka
Zabezpieczenie wysyłanych danych przez token Cross-Site Request Forgery (CSRF)
Walidacja rozszerzenia i treści plików wgrywanych przez użytkowników
Ustawienie poprawnego nagłówka Content-Type dla różnych typów danych
DevOps
Utworzenie i konfiguracja repozytorium kodu np. GitHub
Środowisko PROD i TEST np. AWS
Mechanizm Continous Integration z uruchamianiem testów jednostkowych i integracyjnych
Mechanizm Continous Deployment instalujący nowe wersje aplikacji w środowiskach
Organizacja procesu Code Review
Wdrożenie mechanizmu statycznej analizy kodu, np. SonarQube
Zapewne w zależności od doświadczenia czytającego powyższa lista będzie mniej lub bardziej zrozumiała. Dla laika może wyglądać jak chaotyczne notatki, ale dla kogoś kto ze mną już pracował to będzie prawie kompletna lista zadań do backlogu.
Jak znajdę trochę czasu to zrobię próbę wygenerowania takiej aplikacji z użyciem AI, zobaczymy ile czasu to zajmie i jaki efekt przyniesie.
Jeżeli macie jakieś uwagi lub sugestie, to zapraszam do komentowania.
Szkielet aplikacji internetowej
… czyli ile trzeba się napracować przed startem właściwego projektu, a jeszcze nie ma żadnej funkcji biznesowej.
Wstęp
Każdy programista zaczynając nowy projekt myśli sobie, że tym razem zrobi wszystko “na świeżo”, z użyciem najnowszych bibliotek i wzorców. Ja postanowiłem sobie spisać funkcje szkieletu aplikacji internetowej, które robiłem w różnych projektach i wydają mi się niezbędne, żeby taka aplikacja była “production-ready”. Lista wyszła zaskakujaco długa, począwszy od podstawowych funkcji biznesowych, przez funkcje administracyjne, wybór elementów stosu technologicznego, a skończywszy na kwestiach bezpieczeństwa i organizacji procesów wytwarzania oprogramowania.
Jak programiści i firmy radzą sobie ze startem projektu, skoro jest aż tak wiele do zrobienia, żeby w ogóle zacząć myśleć o implementowaniu funkcji biznesowych, czyli tym, za co “biznes” właściwie chce płacić?
Wydaje mi się, że rozwiązań jest kilka:
Pomysłem na moje ćwiczenie jest podejście 4., co spróbuję w kolejnym etapie zrobić.
Opisane niżej elementy składają się na typową aplikację:
Elementy funkcjonalne aplikacji w części publicznej
Elementy funkcjonalne aplikacji w części administracyjnej
Elementy techniczne
Bezpieczeństwo aplikacji
DevOps
Podsumowanie
Zapewne w zależności od doświadczenia czytającego powyższa lista będzie mniej lub bardziej zrozumiała. Dla laika może wyglądać jak chaotyczne notatki, ale dla kogoś kto ze mną już pracował to będzie prawie kompletna lista zadań do backlogu.
Jak znajdę trochę czasu to zrobię próbę wygenerowania takiej aplikacji z użyciem AI, zobaczymy ile czasu to zajmie i jaki efekt przyniesie.
Jeżeli macie jakieś uwagi lub sugestie, to zapraszam do komentowania.
Archiwa
Kategorie
Ostatnie posty
Generacja szkieletu aplikacji z użyciem AI
18 czerwca 2026Szkielet aplikacji internetowej
16 czerwca 2026AsciiDoctor – dokumentacja techniczna “na poważnie”
25 września 2022Kalendarz