23.08.20235 min
Grupa PZU

Grupa PZU

Programista Gosu – co robi w praktyce?

Dowiedz się, czym zajmuje się Programista Gosu i co musisz wiedzieć przed podjęciem decyzji o wkroczeniu na tę ścieżkę kariery w IT.

Programista Gosu – co robi w praktyce?

Czy warto szukać pracy jako programista Gosu? Dla kogo będzie to ciekawa ścieżka kariery? Z pewnością to dobry start zarówno dla osób, które rozpoczynają swoją przygodę z IT i znają podstawy Javy, jak i dla bardziej doświadczonych programistów znających języki oparte o JVM.

Co musisz wiedzieć przed podjęciem decyzji o wkroczeniu na tę ścieżkę kariery? Ten artykuł pomoże Ci zrozumieć specyfikę roli programisty Gosu.

Zastosowanie

Gosu jest językiem o otwartych źródłach, jednak inaczej niż w przypadku większości projektów open source, nie jest utrzymywany i rozwijany głównie nakładem społeczności, a siłami pracowników firmy Guidewire, którzy zapoczątkowali jego istnienie w 2002 roku. Jego źródła zostały otwarte 8 lat później na licencji Apache 2. 

Pomimo tego, zastosowanie języka nadal bardzo mocno związane jest z ubezpieczeniowymi produktami firmy, która zapoczątkowała jego istnienie. Gosu używany jest w ponad 1000 instalacjach produktów firmy Guidewire na całym świecie. Kilka z tych instalacji znajduje się wśród polskich ubezpieczycieli. Największa w kraju i jedna z największych na całym świecie organizacja z branży ubezpieczeniowej to PZU SA.

Szerokie zastosowanie języka wśród ubezpieczycieli na całym świecie (obecnie w 38 krajach) daje możliwości budowania kariery w oparciu o sam język i powiązane z nim technologie. W chwili obecnej Guidewire posiada 10 000 współpracujących ekspertów Gosu oraz 170 firm, które dostarczają współpracujące rozwiązania. 

Język ten jest podstawowym narzędziem w konfigurowaniu trzech podstawowych produktów firmy: Policy Center (ubezpieczeniowe produkty majątkowe), Billing Center (rozliczenia) oraz Claim Center (obsługa szkód).

Gosu vs Java

Gosu jest statycznie typowanym językiem programowania działającym na maszynie wirtualnej Javy. Charakteryzuje się zwięzłą i wyrazistą składnią, co czyni go wygodniejszym dla programistów. W porównaniu do Javy 6 i 8 język oferuje wiele ciekawych funkcjonalności, takich jak:

 Type Inference: Umożliwia silne wnioskowanie typów, co upraszcza kodowanie. 

Gosu:

var x = 1 //int
var y = 1.4 //double
var z = "Hello" //String


Java:

var x = 1; //int
var y = 1.4; //double
var z = "Hello"; //String


Static typing: pozwala wykrywać błędy na poziomie kompilacji.

Gosu:

var x = 1
x = 1.4 //Błąd kompilacji
y = "Hello" //Błąd kompilacji


Java

var x = 1;
x = 1.4; //Błąd kompilacji
y = "Hello"; //Błąd kompilacji


Enhancements: Umożliwia rozszerzanie istniejących klas, nawet z zewnętrznych bibliotek, bez konieczności modyfikowania ich kodu źródłowego.

// Definicja CollectionEnhancement.gsx
enhancement CollectionEnhancement<E> : Collection<E> {
  function addIfNotNull(element : E) : boolean {
    return element != null
      ? this.add(element)
      : return false
  }
}
// Wykorzystanie nie wymaga importu:
var items : Collection<String> = {"a", "b", "c"}
var d : String = null
items.addIfNotNull(d)
var e = "e"
items.addIfNotNull(e)
print(items) // {"a", "b", "c", "d"}



Null-safe: Znany także jako "safe navigation operator", umożliwia bezpieczny dostęp do właściwości obiektu, który może być nullem.

var nullList : List<String> = null
var result = nullList?.map(\s->s.toUpperCase())?.toString() ?: "The nullList was null, and no NPE was thrown!"
print(result) //The nullList was null, and no NPE was thrown!



Blocks: W innych językach znane jako "closures" lub "lambda expression".

var printHello = \ name : String -> print("Hello ${name}!")
printHello("World") //Hello World!



Pełna lista funkcji jest dostępna na oficjalnej stronie języka.


Język Gosu ma także swoją mniej optymistyczną stronę:

  • Brak stałego rozwoju: Ostatnia stabilna wersja została wydana pod koniec 2019 roku, przez co nie jest już taki ciekawy w porównaniu np. do Javy 17/21 lub Kotlina. 
  • Niska popularność: Pomimo udostępnienia jako open source, Gosu nie zdobył dużej popularności poza produktami firmy Guidewire. 
  • Ograniczenia: Aktualna wersja 1.14.16 wspiera Javę 8/11, co ogranicza dostępność nowych funkcjonalności z API Javy.

 
Jednak w świecie PZU, Gosu to nie wszystko, co można spotkać w IDE programisty. Oprócz monolitów ze stajni GW mamy także prywatną chmurę opartą o Kubernetesa. Budujemy mikroserwisy z wykorzystaniem frameworka spring-boot 3.x oraz Javy w wersji 17+.

Narzędzia

Twórcy zadbali o dobre środowisko poprzez plugin Gosu do InteliJ Idea. Można z tego rozwiązania korzystać w wersji standalone, jednak producenci poszli trochę dalej i oferują do pobrania kompletną platformę zawierającą to IDE zintegrowane z systemami wchodzącymi w skład platformy Insurance Suite. W PZU dostępny jest obraz maszyny wirtualnej z działającym ekosystemem gotowym do rozpoczęcia pracy. 

Środowisko lokalne to nie wszystko. Ciągła integracja kodu do głównych gałęzi wymaga istnienia dobrego procesu CI, zawierającego solidne bramki jakościowe. Jako developer Gosu, jesteś odpowiedzialny za współtworzenie tych bramek na wszystkich poziomach testów: jednostkowych (GUnit), kontraktu (pact), api (gherkin) oraz E2E (selenium z autorskimi dodatkami). Jak widać, w tym zakresie stos technologiczny także nie różni się zbytnio od tego używanego w standardowych systemach pisanych w języku Java.

Kompilowanie języka do bytecode uruchamianego na JVM sprawia, że wszelkie narzędzia i biblioteki standardowo używane do pracy z Java są dostępne także dla developerów Gosu. W przypadku PZU, które obsługuje ponad 20-milionową bazę klientów, mieliśmy okazję sprawdzić narzędzia niezbędne przy pracy w skali. 

Do monitorowania wydajności JVM używamy zarówno mechanizmów wbudowanych w postaci raportów JFR, jak też zewnętrznych narzędzi, np. JProfiler. Oba rozwiązania radzą sobie z Gosu równie dobrze jak z Java i nie zaobserwowaliśmy w tym zakresie żadnych ograniczeń ani niedogodności.

Gosu a baza danych

Trudno sobie wyobrazić aplikację klasy Enterpise, która nie przetwarza danych. W środowisku, w którym pracujemy, wykorzystuje się dwa silniki SQL. W przypadku dwóch największych systemów opartych o Gosu warstwą persystencji jest Oracle w najnowszej stabilnej wersji LTS. 

Gosu nie wykorzystuje dostępnych na rynku ORM, w platformę wbudowany jest autorskie rozwiązanie firmy Guidewire o możliwościach podobnych do tego, co spotykamy np. w Hibernate. Najważniejsze cechy używane w codziennej pracy to oczywiście automatyczne mapowanie obiektowo-relacyjne oraz możliwość pisania zapytań SQL przy użyciu składni języka obiektowego. 

Wyróżniający wśród produktów open source jest wbudowany w platformę profiler dla zapytań SQL. Pozwala on śledzić wszystkie zapytania wykonywane w ramach działania użytkownika w systemie, grupuje je wg zadanych kryteriów i dla każdego z nich dostarcza pełen stos wywołania, co sprawia, że identyfikacja miejsca pochodzenia nie wymaga żadnego wysiłku. 

W świecie mikrousług otaczających systemy działające w oparciu o Gosu, w warstwie persystencji możemy stosować bazy PostgreSQL, które zarządzane są interfejsem dostępnym w naszej chmurze prywatnej.

Metodyki pracy

Pod względem metodyki pracy w projektach Gosu nie widać ograniczeń. Od kilkunastu lat pracujemy zwinnie, głównie z wykorzystaniem SCRUM-a. Obserwujemy jakość wytwarzanego softu, ale też wskaźniki opisujące nasz proces wytwórczy. 

Spróbujesz?

Cenimy otwartość, odwagę, zaangażowanie i umiejętność funkcjonowania w mało sformalizowanym środowisku pracy, więc jeśli te wartości są Ci bliskie, dołącz do nas! Sprawdź oferty pracy na naszym profilu.

<p>Loading...</p>