O usłudze
PrzetłumaczoneJestem programistą Node po stronie serwera i buduję backendy, które pozostają szybkie i przewidywalne pod rzeczywistym obciążeniem. Moja główna praca polega na projektowaniu i dostarczaniu REST i GraphQL API w Express i Nest, w pełni w TypeScript, dzięki czemu umowa między Twoimi usługami a ich klientami jest typowana od samego początku. Przechodzę od ogólnego opisu zadania przez projektowanie schematu, implementację punktów końcowych, walidację i testy automatyczne, a następnie zwracam to udokumentowane, aby zespół dokładnie wiedział, co każdy szlak przyjmuje i zwraca. Niezależnie od tego, czy zaczynasz nową usługę, czy rozplątujesz starą, zarośniętą i mylącą, koncentruję się na czystych granicach modułów, sensownym obsługiwaniu błędów i kodzie, który następny programista czyta bez przewodnika.
Uwierzytelnianie i dane to miejsca, w których backendy cicho się psują, więc zwracam na nie szczególną uwagę. Implementuję autoryzację tokenów i sesji, sprawdzanie ról i uprawnień, bezpieczne zarządzanie hasłami i sekretami oraz przepływy odświeżania tokenów bez wycieków. Po stronie danych modeluję schematy relacyjne w Postgres i MySQL oraz magazyny dokumentów w Mongo, piszę wydajne zapytania, dodaję indeksy, które rzeczywiście potrzebuje planista zapytań i opakowuję wszystko w migracje, aby wdrożenie pozostało odwracalne. Gdy to konieczne, buduję również w czasie rzeczywistym — żywe pulpity, czat, powiadomienia i obecność przez WebSockets — z przemyślaną ponowną łącznością i kontrolą obciążenia, a nie myśleniem życzeniowym.
Poza samym kodem, dbam o to, jak usługi działają w produkcji: strukturalne logi, kontrole stanu, konfiguracja przez zmienne środowiskowe, ograniczanie liczby żądań i zadania w tle z kolejkami do ciężkiej pracy, które nie powinny blokować żądania. Piszę testy integracyjne przeciwko rzeczywistej bazie danych, pakuję aplikację w kontenery, aby działała tak samo na każdej maszynie, i utrzymuję prostą ścieżkę wdrożenia. Opisz swoje ograniczenia — zasugeruję minimalny projekt, który je spełnia i go zbuduję.
— REST API w Express i Nest w TypeScript
— GraphQL: schematy, resolwery i subskrypcje
— JWT, sesje, OAuth, role i uprawnienia
— Postgres, MySQL, Mongo: modelowanie i migracje
— Funkcjonalność w czasie rzeczywistym przez WebSockets
— Zadania w tle, kolejki i pracownicy cron
— Strukturalne logi, kontrole stanu, ograniczanie liczby żądań
— Testy integracyjne i wdrożenie kontenerów
Uwierzytelnianie i dane to miejsca, w których backendy cicho się psują, więc zwracam na nie szczególną uwagę. Implementuję autoryzację tokenów i sesji, sprawdzanie ról i uprawnień, bezpieczne zarządzanie hasłami i sekretami oraz przepływy odświeżania tokenów bez wycieków. Po stronie danych modeluję schematy relacyjne w Postgres i MySQL oraz magazyny dokumentów w Mongo, piszę wydajne zapytania, dodaję indeksy, które rzeczywiście potrzebuje planista zapytań i opakowuję wszystko w migracje, aby wdrożenie pozostało odwracalne. Gdy to konieczne, buduję również w czasie rzeczywistym — żywe pulpity, czat, powiadomienia i obecność przez WebSockets — z przemyślaną ponowną łącznością i kontrolą obciążenia, a nie myśleniem życzeniowym.
Poza samym kodem, dbam o to, jak usługi działają w produkcji: strukturalne logi, kontrole stanu, konfiguracja przez zmienne środowiskowe, ograniczanie liczby żądań i zadania w tle z kolejkami do ciężkiej pracy, które nie powinny blokować żądania. Piszę testy integracyjne przeciwko rzeczywistej bazie danych, pakuję aplikację w kontenery, aby działała tak samo na każdej maszynie, i utrzymuję prostą ścieżkę wdrożenia. Opisz swoje ograniczenia — zasugeruję minimalny projekt, który je spełnia i go zbuduję.
— REST API w Express i Nest w TypeScript
— GraphQL: schematy, resolwery i subskrypcje
— JWT, sesje, OAuth, role i uprawnienia
— Postgres, MySQL, Mongo: modelowanie i migracje
— Funkcjonalność w czasie rzeczywistym przez WebSockets
— Zadania w tle, kolejki i pracownicy cron
— Strukturalne logi, kontrole stanu, ograniczanie liczby żądań
— Testy integracyjne i wdrożenie kontenerów