1. Dyvertex
  2. Usługi
  3. Backend i mikroserwisy

Backend

Backendy, które da się utrzymywać, a nie tylko wdrożyć.

API, bazy danych, kolejki i granice między serwisami. Dzielimy tam, gdzie podział daje niezależne wdrożenia albo niezależne skalowanie. Zostawiamy razem tam, gdzie daje wyłącznie kolejne wywołania sieciowe.

  1. commit
  2. CI
  3. migracja
  4. deploy
  5. produkcja
  6. realne obciążenie

Etap, na którym decyzje architektoniczne przestają być opiniami.

Pewnie jesteś tu, bo

Jeśli żaden z tych punktów nie brzmi jak twoja aplikacja, bezpłatna rozmowa i tak jest najszybszym sposobem, żeby ustalić, co pasuje.

api

Aplikacja mobilna i webowa gadają każda z trochę inną wersją API.

dane

Jedno wolne zapytanie kładzie cały produkt i nikt nie wie które.

serwisy

Ktoś podzielił to na sześć serwisów, a jedna funkcja dotyka teraz czterech z nich.

ops

Deploye są ręczne i tylko jedna osoba ma prawo je robić.

Co budujemy

Zakres ustalony na piśmie, zanim ktokolwiek napisze kod. Jeśli okaże się, że coś poza nim waży więcej, zmieniamy zakres otwarcie, zamiast po cichu doliczać.

Projekt API
Jeden kontrakt, otypowany, wersjonowany i wspólny dla każdego klienta. Typy generowane ze źródła, a nie dokument, który rozjeżdża się tydzień po napisaniu.
Warstwa danych
Schemat, indeksy, ograniczenia i migracje, a zapytania, które faktycznie się wykonują, sprawdzamy na realistycznej objętości danych, nie na dwunastu wierszach seed.
Granice serwisów
Podział tam, gdzie daje niezależne wdrożenia albo niezależne skalowanie. Żadnego podziału tam, gdzie daje wyłącznie wywołania sieciowe, transakcje rozproszone i cztery repozytoria do zmiany przy jednej funkcji.
Praca asynchroniczna
Kolejki, retry z backoffem, idempotencja, dead letter i zadania cykliczne, które padają głośno, zamiast zatrzymywać się po cichu.
Testy
Testy integracyjne na prawdziwej bazie zamiast na mocku, testy kontraktowe, żeby klient nie rozjechał się po cichu z API, i sprawdzenie obciążeniowe na endpointach, które faktycznie dostaną ruch. AI generuje dane, które prędzej czy później wyśle prawdziwy klient: wartość poza zakresem, równoległy zapis, retry po timeoucie. Wszystko na CI.
Operacje
CI, środowiska, sekrety poza repozytorium, migracje uruchamiane bezpiecznie pod obciążeniem, logi strukturalne, metryki i alerty, które coś znaczą, kiedy się odezwą.
Przekazanie
Runbook, notatki architektoniczne i uzasadnienie każdej granicy, żeby kolejna zmiana była decyzją, a nie zgadywaniem.
NestJSHonoTypeScriptPostgresMySQLDrizzlePrismaRedisDockerAWSSentry

Cena

Wycena po tym, jak zajrzymy.

Praca backendowa różni się zbyt mocno, żeby postawić tu jedną uczciwą liczbę. Audyt za $1,800 to zwykle pierwszy krok, lista poprawek ląduje w dwa dni robocze, a zakres po nim ma stałą cenę przed startem.

Wypuściliśmy własne produkty do prawdziwych użytkowników: Mira w App Store i ariex.fit w otwartej becie. W portfolio nie ma jeszcze case studies z projektów ratunkowych i nie będziemy twierdzić, że jakieś są pod NDA.

Pytania, które padają najpierw.

Wszystko, na co nie ma tu odpowiedzi, jest warte dwudziestu minut rozmowy.

Dlaczego na tej stronie nie ma stałej ceny?

Bo zlecenie backendowe bywa jednym endpointem albo przebudową modelu danych, a jedna liczba na oba byłaby liczbą, z której musielibyśmy się wycofać. Audyt za $1,800 daje obu stronom coś realnego do wyceny w dwa dni robocze, a zakres po nim jest stały.

Czy powinniśmy używać mikroserwisów?

Zwykle jeszcze nie. Podział zarabia na swój koszt, kiedy części systemu muszą wdrażać się albo skalować niezależnie, albo kiedy należą do osobnych zespołów. Poniżej tego podział daje głównie wywołania sieciowe, transakcje rozproszone i dłuższą drogę na produkcję. Powiemy, po której stronie tej granicy jesteś.

Możecie pracować z naszym backendem?

Tak, także takim, którego sami nie zbudowalibyśmy w ten sposób. Najpierw audyt, żeby plan opierał się na tym, co działa, a nie na tym, co twierdzi diagram architektury.

Robicie migracje bazy na żywych systemach?

Tak, w miarę możliwości metodą expand-and-contract zamiast okna serwisowego, a w obu przypadkach ze ścieżką rollbacku. Każdą migrację, której nie da się cofnąć, mówimy na głos przed uruchomieniem.

Jaki język i framework?

Najczęściej sięgamy po TypeScript z NestJS albo Hono, na Postgresie. Jeśli twój zespół jest już produktywny w czymś innym, zwykle lepiej zostać przy tym niż przepisywać, i powiemy to wprost.

Umów audyt

Chcesz prostą odpowiedź w tej sprawie?

Wyślij repo, treść odrzucenia albo sam pomysł. Dwadzieścia minut wystarczy, żeby powiedzieć, czy właściwym krokiem jest ratowanie, przepisanie, czy uczciwe nie.

Wolisz mailem? [email protected]

Czytamy każdą wiadomość i odpisujemy w ciągu jednego dnia roboczego.