Spring Cloud Config – czyli jak ułatwić sobie zarządzanie scentralizowaną konfiguracją.

Swego czasu pracowałem w projekcie gdzie była architektura “pseudo mikroserwisowa”. Jeden z centralnych komponentów do którego odwoływaliśmy się z kilku konsumentów był zdeployowany na odseparowanym boxie, a ponieważ wdrożenie service discovery z punktu biznesu nie przynosiło nowych funkcjonalności to adres tego komponentu był utrzymywany w postaci parametru w pliku konfiguracyjnym. W efekcie ta sama wartość często była używana/zapisana w kilku miejscach. Jakie rodziło to problemy ? Wystarczyło że któryś z tych parametrów(url, port itp) się zmienił i trzeba było poświęcić sporo czasu na zmianę we wszystkich węzłach co było bardzo czasochłonne. Jak można było tego uniknąć ? Sposób jest wiele. Ktoś zadecydował o użyciu puppeta do automatycznego budowania konfiguracji dla tomcatów, jetty, jbossa itd. Minusem tego było “składanie” środowiska na czas rekonfiguracji co zaprzeczało założeniom zero downtime.

Problem można było rozwiązać znacznie mniejszym nakładem pracy bez angażowania zespołu ops’ów. Wystarczyłby Spring Cloud Config. Continue reading “Spring Cloud Config – czyli jak ułatwić sobie zarządzanie scentralizowaną konfiguracją.”

Become Oracle Certified Associate

Certy, certy, certy… taka moda ostatnio nastała że każdy się certyfikuje, wiec ja też postanowiłem powoli potwierdzić swoje kompetencje w taki sposób. Na pierwszy strzał poszedł najbardziej podstawowy certyfikat dla każdego javisty czyli czyli OCA. A że poszło gładko to postanowiłem podzielić się swoimi doświadczeniami, przy okazji odkopując bloga;)

Ale najpierw skupmy się na tym co budzi największe kontrowersje wśród większości developerów – wartość certyfikatów. Continue reading “Become Oracle Certified Associate”

Database migration – fast and easy with Flyway and Spring Boot

Migracja jest wręcz niezbędna. To dzięki niej mamy pewność że schemat naszej bazy danych na produkcji jest aktualny. Ułatwia współpracę zespołów developerskich, pozwala łatwo wersjonować strukturę.

Obecnie do dyspozycji mamy wiele rozwiązań, bardzo dużo z nich jest cross platformowych, nie jest dedykowana pod konkretną technologię oraz wspiera wiele współczesnych silników bazodanowych. Pliki migracyjne mogą być w wielu różnych formatach. W rozwiązaniach obsługujących równocześnie kilka różnych baz danych wciąż popularna jest konfiguracja za pomocą XML’a (m.in. LiquiBase). Mimo większej czasochłonności podczas ich przygotowywania niż w przypadku skryptów migracyjnych  napisanych w sql, często bywa to przewagą nad innymi rozwiązaniami. Dlaczego ? W takim podejściu narzędzie migracyjne generuje skrypty sql specyficzne dla wybranej, używanej bazy danych. Podczas gdy pisząc je samodzielnie musielibyśmy przygotować N wersji tego samego skryptu dla różnych silników. Continue reading “Database migration – fast and easy with Flyway and Spring Boot”

Spring Data JPA with Spring Boot – really fast start

Jakiś czas temu zrobiłem wstęp do Spring Boot. Nadeszła pora aby pójść krok dalej i rozpocząć persystencje danych w relacyjnej bazie danych z jego pomocą. Persystencje? Dla niektórych brzmi to groźnie, niezrozumiale. Oznacza to zapis danych w ściśle określony sposób, w zdefiniowanych strukturach. Jest to niezwykle łatwe i szybkie dzięki starterom dostarczanym przez Spring Boota. Continue reading “Spring Data JPA with Spring Boot – really fast start”

First month gone… – confession of developer, or… from resource life ;)

Nie zdążyłem się zorientować kiedy to się stało, właśnie minął miesiąc od “powstania” tego bloga. Pora na małą retrospekcję.

Udało się ! Wytrwałem, w miarę regularnie dostarczałem kolejne fragmenty kodu do projektu na “Daj Się Poznać” oraz posty o tym co robiłem oraz na temat wykorzystywanych narzędzi i frameworków. Blog powoli staje się nawykiem a nie warunkiem koniecznym konkursu. Pomysłów na kolejne posty jest wiele, rozpoczętych draftów również, ale z czasem bywa różnie. Continue reading “First month gone… – confession of developer, or… from resource life ;)”

“we don’t have time to write tests” == “we don’t have the skills to write tests quickly” – Spock for the rescue

Jakiś czas temu zobaczyłem gdzieś tytułowy cytat i pomyślałem: kurcze gościu ma sporo racji. Często piszemy mało testów bo nie mamy odpowiednich umiejętności żeby robić to szybko a biznes chce tylko nowe funkcjonalności które przynoszą mu kasę. Gościem od cytatu był @AndrzejKrzywda. 😉

W swojej pierwszej pracy przez rok napisałem aż 0 (zero) testów jednostkowych. Nikt nie widział potrzeby ich istnienia. Czym to skutkowało ? Chyba każdy potrafi sobie wyobrazić. Zmiana jednego if’a żeby poprawić buga skutkowała powstaniem 10 następnych. Ale “spoko mamy testerów oni to wykryją…” W sumie to wykrywali, ale więcej czasu poświęcałem na rozmowy z działem QA niż na kodowaniu. Całe szczęście te czasy minęły – zmieniłem pracę i od razu trafiłem do małego projektu gdzie było duże pokrycie testami. Irytacja gdy mała zmiana powodowała “wywalenie się” kilku testów była ogromna. Jako “świeżak” nie widziałem sensu w testowaniu – przecież to tyle czasu na pisanie kodu który nie daje nowej funkcjonalności. Jakby tego było mało w projekcie wszystkie testy były pisane w Groovy z użyciem Spock’a. Jako zagorzały fan Eclipse’a doinstalowałem potrzebne pluginy i zacząłem dodawać kolejne testy.  Wprawiony w Groovy’m trafiłem do kolejnego projektu. A tam czekały na mnie testy z użyciem JUnita…

Zrozumiałem zachwyt kolegów nad Spockiem 🙂

Continue reading ““we don’t have time to write tests” == “we don’t have the skills to write tests quickly” – Spock for the rescue”

Spring Boot – czyli jak w 5 minut powstało RESTful API

Czasy gdy wystartowanie projektu opartego na Springu trwało godzinami przemijają. A to wszystko za sprawą Spring Boot. Dzięki niemu *.jar wrócił do łask. Zapytacie “ale jak to? Przecież nie zrobię deploy’a na tomcata(…)”.

A po co tomcat, jetty czy jakikolwiek inny serwer aplikacji ? Przecież można prościej. Spring Boot domyślnie udostępnia nam embedowaną wersję Tomcata, który jest spakowany w naszym jarku, wystarczy go tylko uruchomić.

Continue reading “Spring Boot – czyli jak w 5 minut powstało RESTful API”

Logging in software development – it’s really unnecessary ?

O słuszności logowania zdarzeń  i wyjątków nie trzeba nikomu mówić, ale jak robić to dobrze ? Najprostsze logowanie błędów w javie można obsłużyć za pomocą strumieni out i err, ale czy to wszystko ? Czy wypisanie na standardowe wyjście stack trace jest dobrym i wystarczającym rozwiązaniem ? Otóż… czasami tak. Ale można to zrobić lepiej

I tu z pomocą przychodzą nam biblioteki takie jak java.util.logging(Java API),  log4j, logback, log4j2 czy fasada SLF4J. Wszystkie biblioteki ułatwiają znacznie pracę z logami, poprzez dostarczenie implementacji. Dla przeciętnego programisty oznacza to jedynie dodanie zależności do projektu oraz odpowiedniej konfiguracji. Większość loggerów umożliwia konfigurację przy pomocy xml, pliku properties lub programową w javie lub groovy. Continue reading “Logging in software development – it’s really unnecessary ?”

Java Code -> Apache Kafka -> Apache Storm – Event pipeline [DSP2017]

W ostatnim poście poruszyłem co to jest Kafka, jak działa oraz jak zacząć jej używać. Dziś zmierzymy się z wysyłaniem komunikatów w Javie do wybranego topic’a. W projekcie jest to moduł odpowiedzialny za odczyt stanów urządzeń podłączonych do RPi i wysyłania komunikatu o zmianie.  Następnie zobaczymy małą burzę, póki co z jednym piorunem, ale hałas robi i tak dobry 😉 Jeśli nie pamiętasz albo nie czytałeś poprzednich postów to odsyłam >tutaj< w celu zapoznania się z całością. Continue reading “Java Code -> Apache Kafka -> Apache Storm – Event pipeline [DSP2017]”

Apache Kafka – system kolejkowy dla każdego

Apache Kafka jest jednym z wielu popularnych message brokerów. Spośród dostępnych rozwiązań wyróżnia go wysoka wydajność. Jest łatwo skalowalny i odporny na awarie. Jest również przyjazny dla developera, nie ma potrzeby odpalania całego klastra, wystarczy jedna instancja, która może być na lokalnym środowisku. Kafka przechowuje strumienie komunikatów w kolekcjach zwanych topic’ami.

Continue reading “Apache Kafka – system kolejkowy dla każdego”