Devoxx
2017
Tegoroczny
Devoxx w Krakowie trwał
od 21 do 23 czerwca i odbył
się
w centrum kongresowym ICE, które według
organizatorów może
pomieścić
ponad 2 tysiące
osób, jest to zatem jedna z największych
o ile nie największa
konferencja dla programistów w naszym kraju. Dzięki
uprzejmości
JUG Łódź
miałem
okazję
wziąć
w niej udział
za co jestem niezmiernie wdzięczny.
Przejdźmy
zatem do opisu samych prelekcji. Zaraz po otwarciu na scenę
wyszedł
Venkat
Subramanian,
który mówił
o potrzebie coraz szybszego wytwarzania rozwiązań
programistycznych, o znienawidzonym przez wszystkich programistów
pytaniu “Are you done yet ? “ i o tym, jak bez odpowiedniego
podejścia
doprowadzić
projekt do fiaska. Prezentacja pokazała
również
dlaczego programiści
powinni pisać
testy i dbać
o quality swojego kodu, tak by nie utknąć
w JDD, czyli Jesus Driven Development. Kolejną
interesująca
prezentacja z dnia pierwszego była
autorstwa Douglasa
Howkinsa
zaś
jej tytuł
to “Concurrency
concepts in Java” ,
zatem
coś
czym słyszeliśmy
już
wielokrotnie, prezentacja ta była
jednak nieco inna, autor nie skupiał
się
na konkretnych przykładach
programistycznych, ale zamiast tego próbował
pokazać
jak to wygląda
“od środka”,
czyli w jaki sposób kompilator może
reorganizować
kod i jaki to może
mieć
wpływ
chociażby
na widoczność
zmiennych między
wątkami.
Następnie
trafiłem
prosto na wykład
o Clean Code prowadzony przez Victora Rentea, poza konceptami szeroko
poruszanymi we wszystkich ksiażkach
na temat clean code’u, a więc
odpowiednim nazywaniu metod, rozważaniami
ile linijek może
mieę
nasza klasa a ile powinna miec metoda, autor mówił
również
o Javie 8 i o tym jak używac
Lambd i Streamow, by nie doprowadzić
do sytuacji w której nasz kod staje się
zupełnie
nieczytelny - każdy
kto pracował
z Java 8 wie, że
o to nietrudno. Następnie
rozpoczęła
się
sesja Meet & Greet w trakcie której kilku prelegentów
prowadziło
dyskusje, jedną
z nich była
dyskusja na temat popularnego ostatnio Kotlina i jego zastosowań
w firmie Allegro, z dyskusji można
się
było
z niej dowiedzieć
między
innymi, dlaczego używają
oni Kotlina “na produkcji” w czym jest lepszy od Javy i dlaczego
w ich przypadku zdeklasował
Scale.
Dzień
drugi to między
innymi kolejny temat “na topie” a więc
nowa Java, Simon
Ritter
i
jego prezentacja “55
new features in JDK 9”
jak
sama nazwa wskazuje skupiała
się
na tym co nowego zobaczymy w nowej wersji języka.
Poza omawianymi szeroko Jigsawem, czyli modularnością
i długo
oczekiwanym jshellem, Simon opowiedział
również
o usprawnieniach związanych
ze strumieniami i wielowątkowością,
prywatnymi metodami w interfejsach, czy zmianach związanych
z zachowaniem struktury kodu w czasie kompilacji. Warto również
wspomnieć
o prezentacji Sama Newmana, który opowiedział
o bezpieczeństwie
w mikroserwisach, o tym w czym mikroserwisy są
lepsze od monolitu jeśli
chodzi o kwestie bezpieczeństwa
i dlaczego, ale żeby
nie było
tak kolorowo, była
również
mowa o ich wadach w szczególności
problemach z maintenance’ m i wykrywaniem ataków. Jeżeli
mielibyśmy
zapamiętać
z prezentacji tylko jedną
rzecz, niech to będzie
fakt, że
najlepszą
metodą
reakcji na atak jest usunięcie
wszystkiego i przywrócenie backupów z momentu co do którego
jesteśmy
pewni, że
system był
“czysty”. Kolejna interesująca
prezentacja to znowu Doug
Hawkins
i
“Java
Performance Puzzlers”.
Jeszcze
raz była
mowa o JVM i jego wewnętrznym
działaniu,
o tym jak architektura CPU wpływa
na optymalizację
JVM, i dlaczego ta architektura nie zawsze działa
na naszą
korzyść.
Była
mowa o tym, jaka jest maksymalna długość
bytecode’ u która JVM będzie
próbował
optymalizować.
Dzień
drugi, podobnie jak pierwszy zakończył
się
sesją
Meet & Greet przy piwku.
Dzień
trzeci to talki głównie o architekturze i mikroserwisach, pierwszy
z nich “Resilient Architecture” prowadzona przez Matta Stine,
skupiła się na pokazaniu różnic między architekturą, którą
tworzymy dziś a tą która powstawała dziesięć lat temu.
Największą różnicą jest zasada “Embrace Failure”, której
trzymamy się dziś. Nie tworzymy więc aplikacji, która jest
niezawodna, ale zakładamy, że prędzej czy później dojdzie do
jakichś błędów, które spowodują niedostępność części
systemu i staramy się na to przygotować, tak by
zminimalizować straty. Pewnym rozwiązaniem tego problemu wydają
się mikroserwisy. Które nie rozwiązują jednak wszystkich
problemów związanych z resiliency. Na prezentacji była mowa o
kilku technologiach, które mogą pomóc w budowaniu tego typu
aplikacji. Są to między innymi Hystrix czy Chaos Monkey.
Dalej o architekturze mówił Jakub Kubryński w prezentacji
“Microservices - the naked truth of maintainability”. Ta
prezentacja była inna niż większość prezentacji o
mikroserwisach, zazwyczaj słyszymy jakie to wielkie zyski przynosi
przeniesienie się z monolitu na mikroserwisy, mało zaś mówi się,
że utrzymanie architektury mikroserwisowej jest zdecydowanie
trudniejsze i dużo bardziej wymagające. Testy integracyjne
mikroserwisów są zazwyczaj zarówno trudne, drogie i czasochłonne.
Jakub starał się pokazać, że z odpowiednim podejściem, możemy
ograniczyć koszty i ilość testów integracyjnych, skupiając się
na unitowych i pozwalając użytkownikom zweryfikować pełną
funkcjonalność.Ostatnia prezentacja miała nieco dziwny i
intrygujący tytuł “PsyPhilProg” i była prowadzona przez
Teda Newarda, który mówił o podobieństwach między programistami,
psychologami i filozofami, o tym, że przedstawiciele tych trzech
grup muszą się zmagać z wielopoziomowymi abstrakcjami, które są
niespotykane nigdzie indziej. Jedną najcenniejszych rad wynikających
z tej prezentacji była ta, że programiści w pracy powinni zadawać
filozoficzne pytania jak “po co?”, “dlaczego?”, gdyż mogą
one zmienić nasze postrzeganie problemu z którym się zmagamy.
Tegoroczny Devoxx miał bardzo mocny “skład” i w ciągu wszystkich trzech dni można się było dowiedzieć masy ciekawych i przydatnych rzeczy, trudno by mi było wybrać najlepszą prezentację czy też najlepszego prelegenta. W tym krótkim poście starałem się zawrzeć opisy najciekawszych moim zdaniem prezentacji ze wszystkich trzech dni.
Do zobaczenia za rok w Krakowie!
Dominik