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