Silesian SolutionsPorozmawiajmy o projekcie
Wszystkie usługi

Oferta

Architektura IT i modernizacja

Architektura IT, integracje systemów, chmura i potoki CI/CD budowane pod realną skalę firmy. Doradztwo techniczne i modernizacja istniejących systemów.

Decyzja o architekturze rzadko daje się cofnąć bez kosztu. Przepisać system czy modernizować go etapami, jedna baza czy kilka, własny zespół czy dostawca - te pytania rozstrzygamy przed pierwszą linią kodu, nie po niej.

Przegląd architektury kończy się dokumentem, który da się przeczytać w firmie, nie tylko w zespole technicznym: co jest w porządku, co jest ryzykiem, ile kosztuje w utrzymaniu i w jakiej kolejności to ruszać. Rekomendacje nie są wiązane z jednym dostawcą, bo nie stoi za nimi żadna prowizja - przykład takiego przeglądu opisujemy przy systemie dla BLS Katowice.

Sam system dobieramy pod skalę, nie pod modę. Monolit z czytelnymi granicami modułów bywa lepszym wyborem niż mikrousługi, których nikt później nie utrzyma - podział na osobne usługi ma sens dopiero wtedy, gdy istnieje konkretny powód, żeby wdrażać je osobno. Backend stoi zwykle na Node.js i NestJS, dane w relacyjnej bazie, komunikacja asynchroniczna idzie przez kolejkę.

Integracja rzadko psuje się w dniu wdrożenia. Psuje się trzy miesiące później, gdy jeden system zmieni format danych, a drugi milczy o awarii. Dlatego ponowienia, kolejkę nieudanych zdarzeń i alert na zatrzymany przepływ projektujemy razem z samą integracją, nie dokładamy ich po pierwszej awarii.

Chmura potrafi kosztować więcej niż własny serwer, jeśli architektura nie pasuje do profilu ruchu. Infrastrukturę opisujemy kodem w Terraform, środowisko testowe i produkcyjne powstają z tego samego opisu, a wycofanie wdrożenia to powrót do poprzedniej wersji, nie ręczna naprawa na produkcji.

Potok wydania spina to wszystko w jedną odpowiedź na pytanie, czy daną zmianę można wypuścić. Build przechodzi albo się zatrzymuje. Budowanie, testy, kontrola kontraktu tras i danych strukturalnych, higiena zależności z automatycznymi aktualizacjami i okresem karencji - każde z tych sprawdzeń przerywa build, zamiast trafiać na listę zaległości do przejrzenia kiedyś. Ten sam zestaw reguł pracuje na serwisach, na których został wypracowany, w tym na własnym pakiecie search-quality-kit wpiętym w CI trzech utrzymywanych przez nas serwisów.

Poza zakresem zostaje utrzymanie klastrów Kubernetes, całodobowy dyżur operacyjny i przygotowanie do certyfikacji ISO 27001 czy SOC 2 - to praca dla zespołu utrzymania pracującego na zmiany albo dla akredytowanego audytora.

Wykorzystane technologie

  • TypeScript
  • Node.js i NestJS
  • SQL i TypeORM
  • RabbitMQ
  • Terraform
  • Docker
  • GitHub Actions
  • Cloudflare Workers, Azure i Google Cloud
  • REST API i GraphQL
  • search-quality-kit - własny pakiet npm do kontroli kontraktu w CI

Co z tego wynika

  • Architektura dobrana do skali procesu, nie do mody technologicznej
  • Potok wydania odpowiada automatycznie na pytanie, czy zmianę można wypuścić
  • Integracja ma jawną regułę na wypadek błędu, zanim dojdzie do pierwszej awarii
  • Środowiska odtwarzalne z opisu w repozytorium, nie z czyjejś pamięci
  • Wycofanie wdrożenia w jednym kroku, bez ręcznej naprawy na produkcji
  • Rekomendacje niezwiązane z żadnym dostawcą

Przykłady zastosowań

  • Przegląd architektury przed decyzją o przepisaniu albo modernizacji systemu
  • Wydzielenie modułu z rozrośniętej aplikacji i dopisanie testów wokół kodu bez pokrycia
  • Migracja aplikacji z serwera dedykowanego do chmury, etapami z możliwością powrotu
  • Integracja systemu sprzedaży z magazynem i księgowością przez API i kolejkę
  • Potok wydania z testami, kontrolą kontraktu tras i publikacją do produkcji
  • Infrastruktura opisana w Terraform osobno dla środowiska testowego i produkcyjnego