Czy jesteśmy kompatybilni technologicznie? To pytanie powinno pojawić się w trakcie rozmowy z daną firmą, a nawet przed nią. W poprzednim poście przedstawiliśmy nasz stack technologiczny, w tym przedstawimy, w jaki sposób możemy się bardzo łatwo zintegrować bez względu na technologię.

Posłuży nam do tego technologia Dockera, umożliwiająca konteneryzację. O co chodzi i dlaczego to takie przyjemne? Już tłumaczę. Dzięki tej technologii możemy zamknąć naszą funkcjonalność w odizolowanym środowisku – czarnej skrzynce, która po prostu działa i komunikuje się z Twoją aplikacją w ustalony sposób, na przykład poprzez API podobne do tego, jakie masz pomiędzy backendem i frontendem swojej aplikacji. Jeśli kojarzy Ci się to z maszyną wirtualną, to dobry kierunek. Oczywiście istnieje kilka różnic i plusów każdego z tych rozwiązań, jednak nie o tym jest ten wpis.

Co jednak z tą czarną skrzynką? Czy to oznacza, że nie będziesz mieć dostępu do kodu? Oczywiście, że będziesz mieć. Ową czarną skrzynką będzie wyłącznie z punktu widzenia Twojego programu, który nie musi wiedzieć, w jakich technologiach i w jaki sposób działa dostarczona przez nas część. Trochę jak w bankomacie, wkładasz kartę, wpisujesz PIN, klikasz co chcesz dostać, bankomat daje Ci rezultat, z kolei Ty kompletnie nie przejmujesz się, jak działa on w środku.

Co więcej, dzięki kontenerom pozbędziesz się problemu z tzw. deployem, czyli uruchamianiem programu w środowisku produkcyjnym. Wystarczy Ci wyłącznie zainstalowany na serwerze program Docker, kod, dostęp do internetu oraz napisany przez nas Dockerfile, czyli plik zawierający dokładną konfigurację, której potrzebuje nasz program do działania. Będzie ona skonfigurowana wewnątrz kontenera – czarnej skrzynki – i w żaden sposób nie zmieni ustawień serwera.

Sama komunikacja pomiędzy kontenerem a Twoją aplikacją nie sprawi kłopotów. Można ją zaimplementować dokładnie w ten sam sposób, co w aplikacji webowej. Nie musisz więc zatrudniać żadnego nowego pracownika, jeśli rozwijasz już aplikację typu web lub mobile. Co więcej, nasze rozwiązanie nie ingeruje bezpośrednio w kod, który już masz, a jest osobną usługą, czyli serwisem, który możesz podłączyć do dowolnej aplikacji, na przykład rozwijając nowy produkt możesz równie prosto podłączyć do niego kontener.

Sama komunikacja pomiędzy kontenerem a Twoją aplikacją nie sprawi kłopotów. Można ją zaimplementować dokładnie w ten sam sposób, co w aplikacji webowej.

Czy ma to jakieś wady? Na pewno jest to od około 0.5 do 2 GB więcej zużytej pamięci na serwerze. Standardowo, w obecnych czasach nie jest to dużo, ma jednak znaczenie w systemach wbudowanych, gdzie miejsca generalnie jest niewiele. W takim wypadku jesteśmy w stanie pisać kod w C czy C++.