Software house
Co to jest stack technologiczny i jakie ma znaczenie?

Planując budowę strony internetowej lub aplikacji musimy się zdecydować na określone technologie. Będą odpowiedzialne za określone aspekty projektu i powinny ze sobą optymalnie współpracować. Taki "zestaw" określamy mianem stacku (stosu) technologicznego. Czym dokładnie jest?

Co to jest stack technologiczny?

Stack technologiczny składa się z takich elementów jak języki programowania, frameworki, systemy baz danych, biblioteki front-end i back-end oraz aplikacje połączone za pośrednictwem interfejsów API. Główny podział stosów przebiega właśnie na linii back-end - front-end.

Do back-endowych stacków należą takie technologie jak:

  • języki programowania, które odpowiadają za logikę aplikacji. Mogą to być np. PHP, Python, Java czy JavaScript,
  • frameworki, które są swego rodzaju zestawem narzędzi dla programistów usprawniających ich pracę. Należą do nich m.in. Symfony, Django, Laravel czy Ruby on Rails,
  • serwery WWW - służą do przetwarzania żądań klientów. To np. Apache, Nginx czy IIS,
  • systemy baz danych - najpopularniejsze z nich to MySQL, Microsoft SQL Server, MongoDB.
Kod na ekranie monitora

Główne elementy stacków technologicznych front-endu to:

  • HTML - język znaczników odpowiedzialny za strukturę strony internetowej,
  • CSS - arkusze stylów określające elementy wyglądu witryn (np. czcionki, rozmiary, układy, kolory). Do pracy nad CSS często używane są odpowiednie frameworki,
  • Java Script - język programowania służący do tworzenia elementów dynamicznych i interaktywnych strony. Podczas kodowania stosowane są tu biblioteki i frameworki rodzaju jQuery, React, Angular i Vue. Rozwinięciem Java Script jest język TypeScript, który ułatwia wychwytywanie błędów podczas pracy.

Nowoczesne stosy technologiczne nie ograniczają się do wymienionych wyżej narzędzi. Korzysta się także z usług, które zawierają interfejsy API służące do łączenia aplikacji z innymi systemami.

Stosowane są również narzędzia do monitorowania wydajności elementów stosu oraz narzędzia Business Intelligence, które z kolei śledzą wydajność całej firmy, pozwalając podejmować lepsze decyzje.

Dlaczego stos technologiczny jest ważny?

Technologii nie dobiera się w sposób dowolny. Istnieją takie, które optymalnie ze sobą współpracują, z kolei inny zestaw może wpłynąć na utrudnienie pracy lub nawet ją uniemożliwić. Każdy ze stosów ma także swoje mocne i słabe strony, dlatego wybiera się je pod kątem aplikacji, którą chcemy zbudować.

Od rodzaju stosu technologicznego zależy, jak produkt będzie działał i czy będzie mógł spełnić cele projektu. Decyduje też o zasobach potrzebnych dla jego utrzymania oraz o tym, czy będzie skalowalny (a zatem możliwy do późniejszego rozwoju).

Stos technologiczny ma podstawowe znaczenie dla wydajności i produktywności zespołu podczas tworzenia oraz utrzymywania aplikacji. Określenie go jest niezbędne dla przewidzenia budżetu i harmonogramu projektu.

Ponadto deweloperzy są najczęściej wyspecjalizowani w wybranych rodzajach stosów (nie sposób znać wszystkich technologii). Podczas konstruowania zespołu należy zwrócić uwagę, aby umiejętności ich członków były dostosowane do stosu, który preferujemy w naszej firmie lub jaki wybraliśmy do konkretnego projektu.

Monitor, tablet i developer kodujący na latopie

Jak wybrać stos technologiczny?

Podczas wyboru stosu technologicznego należy mieć na uwadze następujące czynniki:

  • Wymagania projektowe
    Zacznijmy od określenia rozmiaru i potrzeb swojego projektu. Bardziej zaawansowany wymaga złożonego stosu technologicznego. Jeżeli jednak taki stos wykorzystamy do tworzenia prostych projektów, możemy zmarnować czas i zasoby. Należy zatem dostosować go do skali przedsięwzięcia.
  • Skalowalność
    Niektóre stosy technologiczne są szczególnie użyteczne, jeśli zależy nam na skalowalności produktu. Gdy stanowi to nasz priorytet, powinniśmy wybierać zestaw narzędzi pod tym kątem.
  • Zasoby
    Planując projekt, powinniśmy wiedzieć, jaki budżet chcemy na niego przeznaczyć. W dużej mierze zależy on od wybranego stosu, ponieważ technologie wpływają na koszt developmentu. Różny może być także koszt i czas pozyskania odpowiednich specjalistów.
  • Utrzymanie
    W budżecie należy wziąć pod uwagę także, ile wydamy na utrzymanie aplikacji. Stosy technologiczne charakteryzują się np. różnym czasem wprowadzania aktualizacji oraz przeprowadzania prac konserwacyjnych.
  • Czas developmentu
    Wybór stosu złożonego z bardziej zaawansowanych technologii oznacza zazwyczaj dłuższy czas realizacji projektu. Weźmy pod uwagę, jak ważne jest dla nas szybkie dostarczenie produktu na rynek. Bardzo często, trzeba znaleźć kompromis między szybkością wykonania a poziomem "dopieszczenia" jakości.
Kod na tle programisty pracującego na laptopie

Stos technologiczny WebMakers

W Webmakers naszym głównym stackiem technologicznym są technologie webowe. Core naszego działania napędzany jest przez język PHP oraz Javascript, dla których wykorzystujemy najpopularniejsze frameworki: Symfony, API Platform, Sylius oraz Laravel w przypadku PHP oraz React, Vue.js, Angular w przypadku Javascript. Oczywiście wykorzystywane jest też wiele większych, bądź mniejszych bibliotek, które zostały zaprojektowane specjalnie pod te języki i frameworki. Naszą domeną jest budowanie aplikacji w oparciu o backend zasilany przez PHP (API) i frontend zasilany jednym z frameworków Javascript.

W celu przechowywania danych wykorzystujemy zarówno rozwiązania relacyjne (Mysql, MariaDB) jak i nierelacyjne (MongoDB, Redis). W celu szybkiego i wydajnego wyszukiwania danych wykorzystujemy zazwyczaj Elasticsearch.

Do rozwiązań serwerowych podchodzimy bardzo szeroko. Nie obce są nam zarówno projekty postawione na ściśle dopasowanych i skonfigurowanych maszynach, jak i projekty postawione na kontenerach (Docker). Przy większych projektach wykorzystujemy bardziej rozbudowane infrastruktury, które poza serwerami instancyjnymi (stateless), posiadają także Load Balancer (haproxy), serwery typu filestorage (podpinane zazwyczaj przez NFS), serwery bazodanowe z użyciem replikacji. Nie obce są też dla nas rozwiązania chmurowe, między innymi AWS czy DigitalOcean. W celu zapewnienia jak największej wydajności działania, wykorzystujemy szereg mechanizmów cache, jak Nginx Cache, Redis, Memcached.

Jeśli mamy do napisania aplikację mobilną, nasz wybór zazwyczaj pada na React Native, ponieważ jest to uniwersalne rozwiązanie w celu szybkiego napisania aplikacji działającej zarówno w systemie Android jak i iOS.

Oczywiście powyżej wymieniony został tylko najważniejszy stack technologiczny stosowany w naszej firmie. Oprócz wymienionych technologii mamy także doświadczenia w innych, gdzie pracujemy w dużo mniejszym zakresie (m.in Python, AWS Lambda, Node.js, Swift, C#, Java).

Powrót do bloga

Zobacz również:

Ta strona używa plików cookies.
Polityka Prywatności    Jak wyłączyć cookies?    Cyberbezpieczeństwo
OK