NoFluffJobs Praca zdalna Senior

Principal Software Architect (PHP)

Devire

⚲ Remote

28 560 - 35 280 PLN (B2B)

Wymagania

  • PHP
  • Symfony
  • MySQL
  • PostgreSQL
  • Elasticsearch
  • RabbitMQ
  • API
  • Clean Architecture
  • Domain-driven design (nice to have)
  • CQRS (nice to have)
  • Vue.js (nice to have)
  • Docker (nice to have)
  • Kubernetes (nice to have)
  • Nginx (nice to have)
  • HAProxy (nice to have)
  • Varnish (nice to have)

Opis stanowiska

O projekcie: Devire Outsourcing IT to forma współpracy dedykowana dla specjalistów z branży IT, oparta na zasadach własnej działalności gospodarczej - B2B, realizująca projekty dla wiodących Klientów prowadzących innowacyjne i nowoczesne projekty. Obecnie, dla naszego Klienta działającego w branży mediowej, poszukujemy osoby na stanowisko Principal Software Architect (PHP). - B2B contract - Praca 100% zdalna - ze sporadycznymi wizytami w biurze w Warszawie - Stawka: 170-210 PLN/h - Długofalowa współpraca. - Benefity: Prywatna opieka zdrowotna, karta sportowa, ubezpieczenie na życie. Wymagania: - Minimum 10 lat doświadczenia w projektowaniu i tworzeniu systemów backendowych o dużej skali, - Bardzo dobra znajomość PHP oraz doświadczenie w projektach o wysokim obciążeniu i dużych wolumenach danych, - Doświadczenie w projektowaniu architektury systemów opartych o PHP (np. Symfony lub podobne frameworki), - Doświadczenie w projektowaniu i refaktoryzacji dużych systemów (np. monolitów do architektury modułowej lub rozproszonej), - Praktyczne doświadczenie w projektowaniu architektur skalowalnych i wysokiej dostępności, - Doświadczenie w pracy z technologiami wykorzystywanymi w projekcie, w szczególności: MySQL/PostgreSQL, Elasticsearch, RabbitMQ lub inne systemy kolejkowe, - Doświadczenie w projektowaniu integracji systemowych oraz API, - Umiejętność pracy z dużymi wolumenami danych oraz systemami wysokiej dostępności, - Doświadczenie w tworzeniu dokumentacji architektonicznej i technicznej (diagramy, ADR, modele systemu), - Umiejętność podejmowania świadomych decyzji architektonicznych oraz ich uzasadniania technicznego i biznesowego, - Umiejętność definiowania standardów architektonicznych oraz dobrych praktyk programistycznych, - Umiejętność pracy w środowisku zespołowym oraz mentoringu technicznego, Oczekiwana znajomość dobrych praktyk programistycznych: - projektowanie systemów zgodnie z zasadami SOLID, - stosowanie wzorców projektowych, - projektowanie architektur takich jak Clean Architecture, Hexagonal Architecture lub podobnych, - projektowanie systemów testowalnych oraz wspierających automatyzację testów projektowanie czytelnych i stabilnych kontraktów API, - dbałość o jakość kodu, refaktoryzację oraz utrzymywalność systemu. Nice to have: - Znajomość Domain-Driven Design (DDD) oraz doświadczenie w modelowaniu domeny, - Doświadczenie w prowadzeniu warsztatów Event Storming, - Doświadczenie w projektowaniu architektur event-driven lub CQRS, - Znajomość technologii frontendowych (Vue / Nuxt) w kontekście projektowania integracji z backendem, - Doświadczenie z infrastrukturą kontenerową i orkiestracją (Docker, Kubernetes), - Znajomość warstwy infrastrukturalnej systemów wysokiej dostępności (Nginx, HAProxy, Varnish), - Doświadczenie w analizie wydajności i optymalizacji systemów backendowych, - Wiedza z zakresu Domain-Driven Design (DDD) oraz Domain-Driven Architecture poparta ukończonymi kursami lub certyfikatami (np. DNA). Codzienne zadania: - Przygotowanie koncepcji architektonicznej nowej części systemu wraz ze strategią jej wdrożenia, - Analiza istniejącej architektury systemu oraz zrozumienie obecnych ograniczeń technologicznych we współpracy z analitykami biznesowymi i systemowymi, - Opracowanie artefaktów architektonicznych umożliwiających sprawną realizację prac przez zespoły developerskie, w szczególności: o diagramów architektury systemu (np. UML, C4 – kontekst, kontenery, komponenty) o diagramów przepływu danych oraz integracji między systemami o dokumentacji decyzji architektonicznych (ADR) o modelu podziału systemu (moduły, bounded contexts, serwisy) o koncepcji integracji z istniejącą częścią systemu oraz systemami zewnętrznymi, - Zaprojektowanie strategii migracji i rozwoju systemu (np. modularny monolit, mikroserwisy lub inne podejście uzasadnione analizą architektoniczną), - Identyfikacja wąskich gardeł wydajnościowych oraz architektonicznych w obecnym systemie, - Podejmowanie kluczowych decyzji technologicznych dotyczących m.in.: o warstwy danych (MySQL, PostgreSQL) o wyszukiwania i indeksowania (Elasticsearch) o komunikacji asynchronicznej (RabbitMQ) o cache oraz warstwy pośredniczącej (Varnish, HAProxy) o integracji systemów i API, - Definiowanie standardów architektonicznych, integracyjnych oraz wydajnościowych dla zespołów developerskich, - Definiowanie standardów jakości kodu, testowalności, struktury projektów oraz praktyk developerskich, - Współpraca z zespołami backend, frontend oraz DevOps przy wdrażaniu nowej architektury, - Nadzór architektoniczny nad implementacją oraz wsparcie zespołów developerskich w rozwiązywaniu złożonych problemów technicznych, - Tworzenie referencyjnych implementacji oraz aktywny udział w pracach programistycznych w kluczowych obszarach systemu, - Udział w planowaniu rozwoju systemu pod kątem wydajności, skalowalności oraz odporności na błędy, - Wsparcie zespołu w modelowaniu domeny oraz analizie systemowej (np. z wykorzystaniem podejścia DDD).