TopConf 2012
11/05/2012 2 Comments
Wszyscy wierzymy w bezstronność serwisu www.random.org, jednakże po raz drugi z rzędu za jego sprawą (oraz liderów WJUG) udało mi się wyjechać na zagraniczną konferencję. Tegorocznym celem okazał się Tallinn i odbywający się tam w pierwszych dniach listopada event TopConf 2012. 31 października wyruszyłem w osiemnastogodzinną podróż autokarem do stolicy Estonii. Wszelkie komentarze uprzedzę stwierdzeniem, że nie znalazłem dogodnego połączenia lotniczego gwarantującego mi uczestnictwo w porannych wykładach pierwszego dnia imprezy. Pod względem organizacyjnym konferencja okazała się bliźniaczo podobna do ubiegłorocznej GOTO Prague, relacje z której znajdziecie na niniejszym blogu. Dość jednak słów na temat logistyki – przejdźmy do opisu wyróżniających się wykładów.
Dzień pierwszy
Konferencję oficjalnie rozpoczął John-Henry Harris opisując proces projektowania modeli zabawek w firmie Lego. Wystąpienie utrzymane w bardzo zabawnym stylu, pokazujące istotę kreatywności oraz sposobność czerpania inspiracji z otaczającego Nas świata (np. koparka). Lego kładzie ogromny nacisk na jakość wypuszczanych produktów oraz ich perfekcyjne wykonanie. Modele powinny wytrzymywać wysokie temperatury, co weryfikowane jest poprzez opiekanie gotowego prototypu w piekarniku :).
Głodny wiedzy technicznej, postanowiłem jeszcze raz usłyszeć Vaclav’a Pech’a i “Unleash your processor(s)”. Prezentacja nie zmieniła się przez ostatni rok, jednakże zachęciła mnie do upgrade’u grubych klientów zaimplementowanych w Java’ie do JDK7 i skorzystania z Fork/Join Thread Pools. W implementacji Fork/Join każdy wątek posiada swoją własną kolejkę zadań, przez co wykonywanie dużej ilości krótkich task’ów nie powoduje opóźnień wynikających z blokowania końca współdzielonej kolejki (charakterystyka poprzednich wersji JDK i Executors#newFixedThreadPool(int)). BTW, organizator udostępnił niektóre prezentacje na głównej stronie konferencji w dziale “Conference program”.
Na następnej prelekcji Jakub Nabrdalik przestrzegał przed pułapkami, jakie niesie za sobą niewłaściwie stosowany Test Driven Development. Część uwag, takich jak np. Assertion Roulette, znałem już wcześniej. Inne, odnoszące się do ciągłego mock’owania serwisów zależnych, pisania jedynie testów integracyjnych oraz nadmiernego zliczania wywołań funkcji, wydały mi się sensowne i postaram się kierować nimi na co dzień.
Hitem dnia okazała się dla mnie prezentacja Alvin’a Richards’a “MongoDB Design Decisions and Use Cases”. Wystąpienie miało na celu ogólne przedstawienie produktu oraz jego możliwości. Do najciekawszych zaliczyłbym niemal liniową skalowalność, różne poziomy commit’owania (od fire & forget, przez znane z RDBMS redo log, aż po replikację zmian na zapasowe instancje) i automatyczną reallokację danych w celu zrównoważenia obciążenia wewnątrz klastra. Dzięki zastosowanemu modelowi danych JSON, MongoDB nie musi implementować rozproszonych operacji JOIN ani standardu 2PC, gdyż wszystkie dane powiązane z konkretnym dokumentem przechowywane są na jednym węźle. Alvin zdradził, że pięć instytucji finansowych zaimplementowało swoje systemy typu ERP lub CSM w oparciu o MongoDB.
Bardzo mieszane uczucia zawładnęły mną po wysłuchaniu prezentacji “What’s new in JEE 6. Spring ends, Summer comes?” Michała Szkopińskiego. Wystąpienie zawierało kilka ciekawych informacji, takich jak dążenie Oracle i IBM do konsolidacji JVM w wersji 8, nowe podejście odnośnie deployment’u aplikacji JEE7 w chmórze (automatyczne tworzenie i konfiguracja serwisów JDBC i LDAP – dobrze zrozumiałem?), oraz rozszerzanie zasobów w przypadku przekroczenia zdefiniowanego SLA. Z technicznego punktu widzenia prezentacja pozostawiała wiele do życzenia – odejście od deskryptorów XML w stronę adnotacji, @Stateless, @PostConstruct i @PreDestroy nie należą do nowości w JEE6.
Dzień zakończyłem około północy w jednym z Tallinnskich pubów wraz z grupą około dwudziestu uczestników konferencji :).
Dzień drugi
Drugi dzień konferencji rozpocząłem od wysłuchania prezentacji Alvin’a Richards’a “Scaling for Humongous amounts of data with MongoDB”. Prawdę mówiąc nie maiłem wcześniej styczności z MongoDB, dlatego też wystąpienie przybrało dla mnie charakter bardziej hasłowy. Alvin pokazywał różne podejścia do tworzenia modeli danych JSON wraz z ich pozytywnymi oraz negatywnymi konsekwencjami. Wybór konkretnej reprezentacji danych (np. zagnieżdżanie vs. link’owanie powiązanych fragmentów dokumentu) znacząco wpływa na wydajność zapytań, ich liczbę oraz sposób wykonania. Mam nadzieję, że prezentacja zostanie zamieszczona na stronie konferencji i będę mógł się z nią jeszcze raz zapoznać podczas nauki MongoDB.
Na uwagę zasługiwała też trzygodzinna ścieżka poświęcona bezpieczeństwu systemów informatycznych. Podobno uczestnicy na żywo włamywali się na publiczne strony internetowe. Żałuję obecnie, że wybrałem inną serię wykładów. Polecam także przejrzenie listy przejętych stron na www.zone-h.org/archive oraz zabawę exploit’ami z Armitage :). Na konferencję zdecydowanie opłacało się zabrać własny komputer, gdyż organizatorzy w ramach konkursu udostępnili wewnętrzny, specjalnie spreparowany serwis do hack’owania.
Konferencję zakończył Dan North luźną, aczkolwiek pouczającą, prezentacją “Simplicity: the Way of the Unusual Architect”. Podczas implementacji nowych rozwiązań nie należy od razu opierać się o standardowy stos technologii J2EE. Kluczowe pytanie, na które powinno się udzielić odpowiedzi, to co muszę zrobić aby w najkrótszym czasie osiągnąć zamierzony cel. Proste rozwiązania z reguły okazują się najbardziej skuteczne :).
Pragnę jeszcze raz serdecznie podziękować WJUG i Marcinowi Zajączkowskiemu za umożliwienie mi wyjazdu na TopConf 2012.