Z Przemysławem Góreckim, CTO oraz Michałem Lisieckim, Head of Digital Now Unit w Altkom Software rozmawiamy o ich inspiracjach w zakresie tworzenia nowoczesnych aplikacji; najważniejszych rozwiązaniach, technologiach i metodykach, z których Altkom Software korzysta w realizowanych projektach; efektach ich zastosowania oraz platformie Camunda i frameworku do prowadzenia projektów – Software as a Journey.
Hasłem przewodnim 100. numeru „ITwiz” są inspiracje. Czy moglibyście podzielić się własnymi, zwłaszcza w zakresie tworzenia oprogramowania?
Michał Lisiecki (M.L.): Chyba najważniejsze jest właściwe zrozumienie chmury obliczeniowej i jej zastosowań. Musimy przestać myśleć o niej wyłącznie jako o infrastrukturze sprzedawanej w modelu cloud computing. Powinniśmy postrzegać ją raczej jako platformę, dzięki której możemy tworzyć aplikacje, sięgając po gotowe, dostępne na niej elementy.
Ostatnio w ten właśnie sposób – w zaledwie 2 tygodnie – zrealizowaliśmy projekt dla jednego z banków. Dzięki gotowym narzędziom Machine Learning, dostępnym w chmurze Microsoft Azure, mogliśmy w tak krótkim czasie stworzyć rozwiązanie wspierające klasyfikację transakcji dokonywanych przez klientów tego banku. Pozwala to im dużo łatwiej analizować wydatki i zarządzać domowymi finansami.
Chmura umożliwia zarówno szybkie tworzenie, jak i wygaszanie projektów. Często w realizowanych przez nas projektach korzystamy z gotowych funkcjonalności.
Płacimy za ich użycie. Testujemy nowe rozwiązanie bądź konkretną funkcjonalność. Jak się sprawdza, to wdrażamy na produkcję, a jak nie, to rezygnujemy z projektu, a co za tym idzie – także ze stojącej za nim infrastruktury.
Drugą technologią, która zafascynowała mnie kiedy jeszcze pracowałem w jednej z firm ubezpieczeniowych, jest Camunda Platform należąca do kategorii rozwiązań Low Code. Zapewnia ona silnik przepływu pracy zgodny ze standardem Business Process Model & Notation (BPMN) oraz silnik decyzyjny zgodny ze standardem Decision Model & Notation.
W jaki sposób wykorzystywana jest platforma Camunda?
M.L.: Pracując w ówczesnej firmie, mieliśmy do czynienia z mnóstwem procesów, a były one bardzo wrażliwe na sferę regulacyjną. Rekomendacje KNF oznaczały wielokrotnie zmianę w procesach. Wówczas niestety nie korzystaliśmy jeszcze z silnika procesowego. Każdy proces musiał więc być kodowany przez programistów. Mając duży zespół uważaliśmy, że potrafimy to sprawnie robić. Tylko że projekt tego typu trwał 2, 4, a niekiedy 6 miesięcy. A czasem feedback od biznesu oznaczał kolejne zmiany i kolejny etap rekodowania.
Przechodząc do Altkom Software, poznałem rozwiązania, które stosowane są do realizacji podobnych projektów u klientów, w tym w wiodących polskich bankach. W ich przypadku używamy silnika procesowego Camunda. Moje pierwsze pytanie, gdy obejmowałem tu nowy zespół brzmiało: „Czemu nie przyszliście do mnie z tym pół roku temu? Oszczędzilibyście mi mnóstwo czasu” (śmiech).
To, co udało się stworzyć w Altkom Software, to framework prowadzenia projektów. Wewnętrznie nazywamy go Software as a Journey – SaaJ. Rozpoczyna się od fazy Product Discovery, czyli biznesowej potrzeby klienta, a kończy na fazie utrzymania systemu. Cały ten proces i podejście do poszczególnych etapów budowane są na bazie naszych doświadczeń. SaaJ opiera się o sposób wytwarzania oprogramowania nazywany Modern Application Development (MAD).
Przemysław Górecki, CTO, Altkom Software
Jaką korzyść daje zatem silnik przepływu pracy zgodny ze standardem BPMN?
M.L.: Po pierwsze, na platformie BPM, takiej jak Camunda, wprowadzenie jakiejkolwiek zmiany związanej z nowymi regulacjami jest bardzo proste. Po drugie, dzięki rozszerzeniom DPC, stworzonym do niej przez Altkom, istnieje możliwość tworzenia formularzy wystawianych do klienta w trybie WYSWIG. Generowany jest kod Angular. W poprzedniej firmie musieliśmy każdy z takich formularzy zakodować, przetestować, pokazać Product Ownerowi, a czasami był nim prezes, który np. chciał zamienić miejscami kolejność pól.
Tymczasem DPC pozwala projektować te formularze niemalże w trybie online. Projekt powstaje więc na bieżąco, we współpracy z Product Ownerem. Natychmiast też może zostać przekazany na produkcję. Koszt rekodowania jest właściwie zerowy. To znacząco poprawia wydajność tworzenia aplikacji.
Dzięki temu mamy również zaadresowane kwestie bezpieczeństwa związane z udostępnianiem tych formularzy odbiorcom końcowym, przekazywaniem sesji, walidacją itp. Wszystko to zapewniane jest przez doświadczonych programistów tworzących te generatory. Bezpieczeństwo naszego rozwiązania potwierdzają m.in. testy penetracyjne zlecane przez naszych klientów, instytucje finansowe. Na DPC składa się m.in. silnik Camunda, moduł zarządzania procesami i ich kontroli, generator formularzy oraz API gateway.
Jestem także fanem stosowania metodyk Agile i Scrum, ale prawdziwie, nie wybiórczo. Ważne jest doprowadzenie do zaufania w relacji klient-dostawca, aby można było pracować, trzymając się dogmatów Scrum, choć oczywiście monitorując się w pełnej transparentności. Klient widzi przyrost produktu na każdym Sprincie, efektywność zespołu agile’owego i postępy jego prac. Co warto dodać, można je śledzić w Jira na podstawie dat kolejnych release’ów na bazie danych, które wprowadzają każdego dnia deweloperzy.
Dopiero wtedy możliwe jest efektywne wykorzystanie tego, co daje technologia. Bez zaufania najlepsza technologia, najlepsze zespoły zaczynają „buksować”.
Przemysław Górecki (P.G.): Mówiąc o inspiracjach, chciałbym wejść na nieco wyższy poziom. Michał wszedł już w projekt. Ja chciałbym dodać, że tym, czym się inspirujemy są klienci. To oni popychają nas w obszary, które niekiedy nie są nam znane.
To, co udało się stworzyć w Altkom Software, to framework prowadzenia projektów. Wewnętrznie nazywamy go Software as a Journey – SaaJ. Rozpoczyna się od fazy Product Discovery, czyli biznesowej potrzeby klienta, a kończy na fazie utrzymania systemu. Cały ten proces i podejście do poszczególnych etapów budowane są na bazie naszych doświadczeń.
Mamy więc już na początku namierzoną grupę ryzyk, zidentyfikowanych na podstawie kilkuset zrealizowanych projektów. Dzięki temu jesteśmy w stanie stwierdzić, które ryzyka mogą wystąpić
w danej fazie projektu. Przykładowo w fazie Discovery może to być nietrafiony produkt. Z kolei w fazie projektowania możemy popełnić błędy związane z wydajnością, bezpieczeństwem, brakiem skalowalności itd.
To pozwala już na początku monitorować określone ryzyka i mitygować je w trakcie realizacji projektu. Praktycznie do zera ograniczamy to, że nie dowieziemy projektu w założonym czasie i budżecie. To daje klientom pewność, że jesteśmy rzetelnym partnerem. Zazwyczaj stosujemy cały proces SaaJ, ale można go także stosować wybiórczo, np. tylko w fazie Discovery, gdzie układamy tzw. backlog, lub w fazie projektowania systemu.
Na platformie BPM, takiej jak Camunda, wprowadzenie jakiejkolwiek zmiany związanej z nowymi regulacjami jest bardzo proste. Dzięki rozszerzeniom DPC, stworzonym do niej przez Altkom, istnieje też możliwość tworzenia formularzy wystawianych do klienta w trybie WYSWIG. Generowany jest kod Angular. W poprzedniej firmie musieliśmy każdy z takich formularzy zakodować, przetestować, pokazać Product Ownerowi, a czasami był nim prezes, który np. chciał zamienić miejscami kolejność pól.
Michał Lisiecki, Head of Digital Now Unit, Altkom Software
W jaki sposób wykorzystujecie Software as a Journey? Jak framework ten odnosi się do poszczególnych elementów dostarczanych przez Was rozwiązań?
P.G.: SaaJ opiera się o sposób wytwarzania oprogramowania nazywany Modern Application Development (MAD). Jest kilka jego aspektów, które warto przybliżyć. Pierwszym z nich jest chmura, która wymaga nie tylko wykorzystania odpowiedniej infrastruktury, lecz także właściwego zaprojektowania aplikacji. System musi np. składać się z mikroserwisów, które w dodatku powinny się odpowiednio komunikować. W aplikację musi być też wbudowana niezawodność, transakcyjność i bezpieczeństwo. Dostarczenie mikroserwisów powinno zaś być oparte na kontenerach, aby uniezależnić się od warstwy sprzętowej.
Z punktu widzenia chmury ważna jest też automatyzacja rzeczy powtarzalnych, łącznie z wykorzystaniem idei Infrastructure as Code (IaC). Pozwala to na automatyczne i powtarzalne uruchomienie środowiska z gotowych skryptów.
Kolejnym aspektem jest sztuczna inteligencja. Każda nowoczesna firma w obecnej chwili powinna podejmować decyzje biznesowe na podstawie danych. Z kolei jeśli chodzi o decyzje na poziomie poszczególnych klientów– dotyczące np. tego, jaki produkt, kiedy i jakim kanałem mu zaoferować – to wspierają je algorytmy AI/ML. Dzięki temu możemy zautomatyzować ten proces. Do tego też wykorzystujemy gotowe serwisy chmury obliczeniowej.
Ważny aspekt Modern Application Development to integracja mikroserwisów. Każdy z nich to autonomiczna aplikacja, żyjąca własnym cyklem rozwojowym, która wystawia API, a do komunikacji powinniśmy używać systemów messagingowych. Informacje zaś powinniśmy propagować poprzez eventy. Tego typu procesy doskonale wspiera również chmura, która dostarcza gotowe narzędzia.
Kolejny aspekt to dane, które przechowujemy w bazach w chmurze. Daje to nam prawie nieograniczoną ich wielkość, szybki dostęp do danych, bezpieczeństwo, a także niezależność od języków programowania i stosowanych frameworków.
Warto pamiętać, że kwestie bezpieczeństwa należy rozpatrywać na różnych poziomach. Jednym jest kod; drugim pipeline, którym dostarczamy oprogramowanie i konfigurację; trzecim środowisko, w którym to działa; a na końcu dane. Kod źródłowy np. walidujemy pod kątem bezpieczeństwa na dwa sposoby, korzystając z narzędzi automatycznych SonarQube i Checkmarx. Co ciekawe, w gotowych skryptach możemy zaszyć kod, który będzie „zielony”. Zielony, czyli optymalny pod kątem wykorzystania zasobów IT. Wspomniane narzędzia też to wspierają. Dzięki temu mamy perspektywę zielonego wytwarzania oprogramowania, a to znakomicie wpisuje się w strategię ESG klientów. SaaJ również pozwala na ograniczanie śladu węglowego poprzez optymalizację procesu wytwórczego i efektywnego wykorzystania zasobów ludzkich.
Ostatnim elementem jest utrzymanie systemu. Tu także staramy się zautomatyzować wszystko, co się da, w tym monitoring funkcjonowania dostarczonego rozwiązania zarówno na poziomie serwisów, jak i infrastruktury.
W jakim stopniu da się zoptymalizować kod pod kątem zużycia zasobów?
M.L.: Na wstępie dodam, że wspomniany przez Przemka Performance Engineering wydzieliliśmy do osobnego zespołu.
Często spotykamy się z sytuacjami, w których szwankuje np. Customer Experience działania aplikacji. Przejście z ekranu na ekran trwa bardzo długo. Zazwyczaj pierwszą radą w świecie IT jest „dokupienie sprzętu”. To zaś wymusza dodanie kolejnych licencji. Często oprogramowanie „z półki” instalowane jest bez zmiany standardowych ustawień, choć sam producent zaleca dostosowanie do indywidualnych wymagań. Tymczasem wystarczy poprawić warstwę serwera aplikacyjnego, wirtualizacji, sieci czy bazy danych, aby znacząco zwiększyć wydajność aplikacji. W realizowanych przez nas projektach efekt trzytygodniowej pracy zespołu Performance Engineering dawał nawet 6-, 7-cyfrowe oszczędności. Dziś jest to o tyle ważne, że firmy szukają oszczędności, również w budżetach IT. Z jednej strony muszą one rosnąć, bo konkurujemy o specjalistów IT – w dodatku już nie lokalnie, ale globalnie – ale są też obszary, w których możemy się optymalizować. Dotyczy to m.in. infrastruktury i licencji, ale także rozwiązań cloud computing.
Zespół Performance Engineering można nazwać detektywami wydajności. Świat IT jest dziś tak skomplikowany, że trzeba specjalizować się w konkretnych jego aspektach.
W realizowanych przez Altkom Software projektach efekt trzytygodniowej pracy zespołu Performance Engineering dawał nawet 6-, 7-cyfrowe oszczędności. Dziś jest to o tyle ważne, że firmy szukają oszczędności, także w budżetach IT. Z jednej strony muszą one rosnąć, bo konkurujemy o specjalistów IT – w dodatku już nie lokalnie, ale globalnie – ale są też obszary, w których możemy się optymalizować. Dotyczy to m.in. infrastruktury i licencji, ale także rozwiązań cloud computing.
Jakie najciekawsze projekty ostatnio zrealizowaliście?
M.L.: Na pewno wspomniałbym jeszcze raz o zastosowaniu chmurowych komponentów Machine Learning do klasyfikacji transakcji klientów jednego z banków.
Drugi, bardzo ciekawy, zrealizowany przez nas projekt dotyczył rozwiązań Low Code wykorzystujących Camundę. W ciągu zaledwie 2 miesięcy stworzyliśmy rozwiązanie dla międzynarodowej firmy logistycznej, obsługującej zarówno transport morski, lądowy, jak i lotniczy. Na podstawie gotowych elementów dostępnych w chmurze stworzyliśmy rozwiązanie do zarządzania procesem spedycyjnym.
Wyzwaniem był fakt, że w każdym państwie, na potrzeby różnych typów transportu wymagane były różne typy dokumentów i przeprowadzenie różnych czynności związanych ze spedycją towarów. Skomplikowanie procesów powodowało brak ich transparentności. Teraz to się zmieniło. Od razu widać, w którym miejscu trzeba coś „popchnąć”, aby szybciej i sprawniej zrealizować wysyłkę. Zrealizowaliśmy ten projekt w czasie pandemii, co dodatkowo pomogło mu, gdy nawarstwiały się problemy z łańcuchami dostaw.
Jesteśmy też dostawcą rozwiązań wykorzystujących Camundę dla wiodącego banku działającego na polskim rynku, dla którego wykonaliśmy jeden z ciekawszych projektów. Kiedy wchodziły rządowe programy wsparcia dla przedsiębiorców, bardzo ważna okazała się możliwość szybkiej modyfikacji lub ponownego użycia procesów, które wcześniej były już zaimplementowane. Dzięki wcześniejszemu wdrożeniu DPC przygotowanie rozwiązania do realizacji rządowego wniosku trwało zaledwie 48 godzin. To pokazuje, że umiejętnie zbudowane środowisko daje dużą przewagę biznesową.
Ostatnim z projektów, który bym wymienił, jest system do sprzedaży ubezpieczeń szpitalnych stworzony przez nas dla jednego z największych dostawców usług medycznych. Zbudowany został na bazie infrastruktury Amazon Web Services. Z tego, co się orientuję jest to pierwsze tego typu wdrożenie w Polsce. Było ono wyzwaniem nie tylko technologicznym, ale i regulacyjnym, ponieważ system przetwarza dane wrażliwe na chmurze publicznej.
Sprawna realizacja tego projektu była możliwa, gdyż poza kompetencjami technicznymi, wykazaliśmy zrozumienie wymagań specyficznej branży, także pod kątem bezpieczeństwa. To dziś jedna z koniecznych umiejętności firm deweloperskich, aby wiedzieć co i jak można zrobić, tak by klient nie ponosił nadmiarowych kosztów, a jednocześnie posiadał rozwiązanie spełniające standardy bezpieczeństwa i wymagania regulacyjne.
P.G.: Ja bym wymienił dwa projekty. Pierwszy został zrealizowany dla Prilo – platforma wspierająca realizację usług transportu pojazdów, łącząca przewoźników z ich klientami. Tam po raz kolejny zastosowaliśmy cały nasz framework SaaJ – od fazy projektowania do utrzymania dostarczonego rozwiązania. Najciekawsza była faza Discovery, w którą zaangażowanych było kilka jednostek klienta. Właścicielem jest południowokoreańska firma, a ze względu na pandemię musieliśmy projekt zrealizować zdalnie.
Drugi projekt pokazuje pełnię możliwości chmury. Wykonaliśmy go dla Narodowego Instytutu im. Fryderyka Chopina. Organizuje on co 5 lat Międzynarodowy Konkurs Chopinowski. Pomiędzy konkursami na stronie Instytutu nic się właściwie nie dzieje. Jest może kilka tysięcy zapytań miesięcznie. Jednak w czasie konkursu jest ich już kilka milionów dziennie. Nie ma takiej infrastruktury, która by sobie z tym poradziła bez nadmiarowego jej przeskalowania.
To, co zrobiliśmy, to dostosowaliśmy stosowane przez Instytut rozwiązanie do wymagań chmury z pełną automatyzacją pozwalającą na samodzielne skalowanie w dół i górę. Wszystko działa na zasadzie Infrastructure-as-Code. Pozwala to na uruchomienie odpowiednich skryptów, które – w czasie konkursu – odtwarzają całą stronę w chmurze z kopii lokalnej.
Wspieramy też klientów w realizacji strategii cyfrowych.
M.L.: A na to wszystko nałożona jest metodyka Scrum z pełną transparentnością i otwartością wobec klienta. Scrum pozwala także znacznie szybciej działać. Przykładowo negocjacje ze wspomnianą przeze mnie firmą logistyczną trwały zaledwie tydzień, a jedyna poprawka dotyczyła zmiany terminu płatności.
Dzięki temu nie tracimy cennego czasu. Jeśli działamy w zgodzie z metodyką Scrum, to już pierwszy Sprint pokazuje co umiemy, a klient może podjąć decyzję, czy idziemy dalej, czy nie. Pozwala to na prawdziwą otwartość i transparentność.
Niekiedy żartujemy, że moje zespoły bardziej optymalizują budżet klienta niż nasz (śmiech). Ale właśnie o to chodzi, aby stosować rozwiązania, które adresują realne, a nie wyimaginowane potrzeby.