Natłok technologii w IT potrafi przerazić. Każda firma ma swój tzw. stack technologiczny, czyli zbiór języków programowania, frameworków czy innych technologii, dzięki którym jest w stanie dostarczyć oprogramowanie. Takim wyborem może być na przykład użycie systemu Windows i języka C# albo Linux serwera Apache. W tym wpisie przybliżamy nasz stack technologiczny oraz odpowiadamy na pytanie, czy będziemy do siebie technologicznie pasowali.
Naszym głównym językiem programowania jest Python. Obecnie jeden z najpopularniejszych języków programowania. Dlaczego akurat on? Z uwagi na to że jest powszechnie używany przez osoby tworzące rozwiązania ML. Dzięki temu jest kompatybilny z wieloma gotowymi modułami, bibliotekami i frameworkami możemy szybciej i łatwiej (a dzięki temu taniej) tworzyć sieci neuronowe analizujące obrazy czy analizujące zmiany na rynku. Co więcej w tym samym języku, z dodatkiem frontendu napisanego w Javascript z użyciem Reacta czy Vue, można zbudować dowolną aplikację, na przykład webową w której udostępnimy wyniki naszej pracy.
Czy piszemy też w innych językach?
Tak, na przykład w C lub C++, głównie w przypadku gdy tworzymy oprogramowanie na systemy wbudowane, czyli urządzenia takie jak mikrokomputery jak raspberry pi czy nvidia jetson, lub gdy trzeba zoptymalizować prędkość działania naszego oprogramowania. Czy to oznacza, że jeśli moje firmowe oprogramowanie jest napisane w innym języku to nie dogadamy się? Zupełnie nie! Większość naszych realizacji polegała na wpięciu w aplikację klienta, napisaną w PHP, Javascript, C# czy Java, naszego modułu, udało nam się to bezboleśnie dzięki mikroserwisiom i dockerowi. Więcej o tym napisaliśmy w osobnym artykule.
Do tworzenia sieci neuronowych używamy bibliotek Keras, Tensorflow i pyTorch. Są to najpopularniejsze obecnie rozwiązania w zakresie AI i wiele wskazuje, że przez kolejne lata nie zostaną zdetronizowane. Stoją za nimi giganci technologiczni, Facebook i Google, którzy dbają o to, aby poprawiać błędy i dodawać nowe funkcjonalności. W większości przypadków nie ma znaczenia, której z bibliotek użyjemy, na pewno za każdym razem możemy liczyć na taką samą jakość. Decyzja zależy od zespołu, który będzie realizował projekt.
Szczególnie dobrze odnajdujemy się w środowisku linuxowym i znamy rozwiązania open source. Dzięki temu tworzymy wydajne, bezpieczne i nowoczesne oprogramowanie. Nie jesteśmy uzależnieni od licencji i opłat, które pobierają rozwiązania konkurencyjne, oparte np. o technologię Microsoftu. Nie tylko przekłada się to na brak takich opłat dla klientów korzystających z naszego oprogramowania, ale również większej liczby specjalistów, którzy w przyszłości niezależnie od nas mogą ulepszać opracowany przez nas produkt oraz mniejszej szansy na vendor lock-in.
Pracujemy w chmurze. Do tej pory w naszych projektach mieliśmy okazję wykorzystać chmury publiczne takie jak: AWS, GCP oraz środowisko DataBricks. Dzięki temu umiemy wykorzystać zarówno natywne usługi chmurowe oferowane przez dostawców jak: Google BigQuery czy AWS S3 jak również zbudować systemy informatyczne które można przenosić pomiędzy różnymi dostawcami czy uruchomić na własnych serwerach.
Podsumowując – pracujemy bazując na uznanych rozwiązaniach open source oraz chmurach publicznych. Tworzymy również wydajne systemy uczenia maszynowego pracujące na systemach wbudowanych. Nasz główny język programowania to Python, a system operacyjny to Linux.