07 Kwiecień 2017

4Developers 2017 – świetna konferencja!

spotkania

Autor: Speeder

4Developers 2017 – świetna konferencja!

Jedną z konferencji, którą uznaliśmy w tym roku za godną polecenia jest 4Developers.

Jest to jednodniowa konferencja, która odbywa się corocznie w Warszawie. W tym roku w ramach wydarzenia zorganizowano 13 równoległych ścieżek tematycznych oraz dodatkową ścieżkę warsztatową. To właśnie dzięki różnorodności technologii konferencja 4Developers wyróżnia się wśród innych konferencji organizowanych w Polsce. Każdy z uczestników miał możliwość wybrania czegoś dla siebie – od konkretnego języka programowania (m.in. PHP, Java, .Net, Python) poprzez architekturę aplikacji, na relacjach biznesowych kończąc.

Tegoroczna edycja zdecydowanie nas nie rozczarowała! Prelekcje w ramach ścieżek takich jak Architektura aplikacji czy Bottega IT Minds były tak interesujące, że mimo iż z naszej firmy na konferencję udali się głównie programiści PHP, to właśnie te tematy cieszyły się wśród nich największym zainteresowaniem.

Jakub Kubryński: Utrzymywalne mikroserwisy – naga prawda

Mikroserwisy to obecnie bardzo popularny temat. Kuba zwrócił szczególną uwagę na to, że mikroserwis powinien zachowywać pełną autonomię oraz być content bonded. Autonomia to niezaprzeczalnie największa zaleta mikroserwisów ale oczywiście nie można zapominać o asynchronicznej komunikacji. Na bok natomiast musimy odłożyć kanoniczny model danych i tym samym zastosować weryfikację kontraktów.

Inną poruszoną kwestią w ramach tej prelekcji była złożoność mikroserwisów. Aplikacja klasy enterprise składa się z ok. 500 mikroserwisów (patrz niżej Allegro) powoduje to, że rozwiązanie monolityczne często bywa szybsze (mniejsza ilość wewnętrznej komunikacji), mniej skomplikowane w utrzymaniu i prostsze w testowaniu.

Dlatego w przypadku mikroserwisów powinniśmy testować tylko to co rzeczywiście powinno działać, tak, aby deploy produkcyjny nie trwał godzinami. Powinniśmy być również gotowi do natychmiastowych poprawek po wdrożeniu pojedynczej mikrousługi.

Availability vs Downtime

Nasuwa się pytanie: jak zapewnić wydajność takiej mnogości usług? Jedynym rozwiązaniem jest monitorowanie real-time produkcji i pomijanie średniej, która potrafi zakłamywać rzeczywistość. Należy więc zwrócić uwagę na percentyle (zapewniamy P99,9 lub P99,95).

Link: PREZENTACJA

Konrad Kokosa – Memento memori

Pamiętajmy o pamięci, czyli jedna z bardziej znaczących prelekcji tego dnia. Dzisiejszy świat oferuje wszystkiego w bród – wielość rdzeni, gigabajty a nawet terabajty pamięci RAM i szybkie transfery.

Dlatego zapominamy, że pod spodem naszego oprogramowania i tak jest zawsze maszyna, która musi sobie poradzić z naszymi wymyślnymi skomplikowanymi tablicami, obiektami, danymi czy operacjami.

Konrad zaprezentował kilka prostych, ale zarazem otwierających oczy przykładów opierając je na tzw. prawie wyciekających abstrakcji:

Wszystkie nietrywialne abstrakcje, do pewnego stopnia, są nieszczelne.

Często nie zastanawiamy się w jaki sposób fizycznie dane te są przechowywane. Inicjujemy zmienne, robimy działania… Ale jak de facto wpływa to na wykonanie kodu?

Warto nie tylko przeczytać opis funkcji w danym języku, ale zejść niżej, zagłębić się i zobaczyć jak autorzy stworzyli dane rozwiązanie.

Dobrym przykładem jest chociażby Garbage collector, który „oferuje” nieskończoną ilość pamięci. Nie jest to oczywiście prawdą – i to również jest prawo wyciekającej abstrakcji.

MySQL Indexing - btree+

Piotr Suszalski: MySQL Indexing – do it right or die

Prezentacja Piotra była w pewnym sensie uzupełnieniem myśli zawartej w „Memento memori”. Ogromna ilość dostępnych zasobów powoduje, że zapominamy o najprostszych sprawach, takich jak indeksy bazodanowe. Mało kto też zawraca sobie głowę sprawą jak to działa.

Po co tworzymy indeksy? Przede wszystkim chcemy szybko wyszukiwać dane i zachować ich spójność. Ale czy zdajemy sobie sprawę z jakiego typu indeksu korzystamy? W 99% przypadków jest to indeks btree+.

Btree+ jest świetnym indeksem wykorzystywanym domyślnie w InnoDB. Dzięki jego konstrukcji tabele z kluczem głównym zajmują… mniej miejsca niż tabela bez żadnego klucza (bo de facto silnik i tak musi takowy klucz stworzyć, ale na innych zasadach).

Bez względu na użyty typ indeksu pamiętajmy, aby nie dodawać indeksów wszystkim dostępnym polom. Bo po co indeks dla pola o małej mocy (np. płeć)? Zrobi to więcej szkody niż pożytku. W takim wypadku lepiej poszerzyć inny, dostępny już indeks o dodatkowe pole.

Czasami zapominamy, że wykorzystanie w warunku „OR” powoduje, że nie możemy wykorzystać indeksu, który jest założony na wielu polach. W takim wypadku baza danych dla kolumny występującej po „OR” wykorzysta inny indeks (nieraz lepiej mieć 2 osobne indeksy, które na pewno zadziałają, niż jeden duży).

Jeśli skonstruujemy nasz multi-index tak, że zawarte w nim będą wszystkie pola z warunku „WHERE”, jak również pola które chcemy wybrać („SELECT”) to baza w ogóle nie sięgnie po dane do tabeli, ponieważ wszystko będzie miała w indeksie.

Link: PREZENTACJA

Mateusz Gajewski: Architektura Allegro – 4 lata po rewolucji mikrousługowej

Na koniec krótka notatka, która może być podsumowaniem wcześniejszych prelekcji tego dnia w ujęciu praktycznym – mikrousługowy świat w Allegro.
W 2009 roku Allegro zaczęło zbliżać się do sufitu wydajności – 5-7 mln ofert. Postanowiono wtedy odejść od dotychczasowego monolitu (PHP + Oracle) i podzielić „swój świat” na mikrousługi.

Allegro - Dev

Wydawałoby się, że Allegro to prosta aplikacja – produkt, kategoria i koszyk. W praktyce jednak, obecnie jest to już ponad 100GB kodu źródłowego, ponad 400 mikrousług i 7 000 repozytoriów.

Aby obsłużyć takiego kolosa (i nie zwariować) należy przenieść się z myśleniem na wyższy poziom abstrakcji (zamiast myśleć o procesorach, serwerach itp). W tym procesie pomaga Apache Mesos, Marathon, a także Consul. Obok tego jest również autorski message broker Hermes.

Dzięki temu 3500 procesorów z 6.5 TB RAM się nie nudzi. Generują ~ 60 GB logów na minutę i operują na ~ 9.7 mln metryk / min. Ponadto obsługują dzisiaj bez problemu 50-60 mln ofert.

Link: PREZENTACJA

Niestety wszystko co dobre szybko się kończy – 4Developers 2017 zrobiło na nas naprawdę duże wrażenie.
Na następnej edycji nie może Cię zabraknąć!

We like cookies... and we use them.

In order to improve our service, we use cookies. You can block them by changing your browser settings.