Jarosław Pałka
Language: Polish
System powstają i upadają. Często to człowiek zawodzi, na różnych etapach tworzenia. Czasami gdy system jest jeszcze na deskach kreślarskich, czasami gdy już myśl w kod się przekuwa, gdy podejmujemy tysiące tych drobnych decyzji, "to się zrobi później", "będzie jeszcze czas".
Zapominamy ciągle jednak o tym, że jutro nie nadchodzi nigdy. I system upadają, pod naporem użytkowników, bez dostępu do szybkich dysków, niezawodnej sieci i stabilnych "chmur".
Ta opowieść, będzie historią takich upadków i o tym co ja i ludzie z którymi pracowałem w projektach mogliśmy zrobić lepiej, by ustrzec się przed koszmarem nadgodzin i utrzymywania systemu w jako taki zdrowiu. Opowiem o wzorcach, które pozwalają wam budować stabilne systemy. Opowiem o "fail fast", "circuit braker", "supervisor" i innych wynalazkach.
Tym razem jednak nie będzie tylko o technologii, będzie też o nas, o naszych błędach, o słabościach naszych i organizacji w których pracujemy, o braku komunikacji pomiędzy zespołami, o napiętych terminach i "business value", hegemonii procesów i braku zdrowego rozsądku.
Tysiące użytkowników, miliony zapytań HTTP, miliardy odwołań do bazy danych, dziesiątki tysięcy osobogodzin inwestowanych przez firmy na optymalizacje aplikacji webowych, miliony dolarów (czy też euro) wydawanych na infrastrukturę, wszystko to po aby nasz system zapewniał użytkownikom odpowiedni komfort pracy i zadowalający czas odpowiedzi.
I gdy już wszystkie optymalizacje zapytań do bazy danych zostaną zastosowane, indeksy wypolerowane na wysoki połysk, czasowa złożoność obliczeniowa wszystkich metod będzie dążyć do O(1), a system dalej nie będzie spełnił wyśrubowanych warunków SLA, zawsze pozostaje wyprawa na "ostatni przylądek dobrej nadziei", czyli pełne niebezpieczeństw i ekscytujących przygód krainy, gdzie wasze dane będą na was czekać w ultra wydajnych, skalowalnych i stabilnych serwerach cache.
Chciałbym was, drodzy słuchacze, łagodnie wprowadzić w świat cache. Cache dla aplikacji webowych, opowiedzieć o stosowanych topologiach, wykorzystaniach cache w poszczególnych warstwach aplikacji, świat algorytmów "cache eviction", rozproszonych serwerów cache (i "data grids") oraz znanych i też przemilczanych "sekretów" i problemów, z którymi się spotkacie podczas implementacji cache w waszym systemie. Wszystko z wykorzystaniem takich rozwiązań jak memcached, redis, infinispan i ehcache.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
Z prezentacji dowiesz się jak działają nowoczesne procesory, jakich technik używają (Speculative Execution, Branch Prediction) aby zwiększyć wydajność i jak to się stało, że niektóre z tych usprawnień mogą być sprytnie wykorzystane do pozyskania poufnych danych. Omawiamy przykład złośliwego kodu wykorzystującego te luki i skutki jego działania. Pokazujemy mechanizmy obrony i wyjaśniamy jakie mogą przynosić ograniczenia.
Kamil Kozieł, Kamil Stawiarski / IT School | ORA-600
Oracle hacking session czyli o jedno uprawnienie za daleko.
Prezentacja z konferencji infoShare 2013 w Gdańsku.
Presented at infoShare 2013 conference in Gdańsk, Poland.
Tysiące użytkowników, miliony zapytań HTTP, miliardy odwołań do bazy danych, dziesiątki tysięcy osobogodzin inwestowanych przez firmy na optymalizacje aplikacji webowych, miliony dolarów (czy też euro) wydawanych na infrastrukturę, wszystko to po aby nasz system zapewniał użytkownikom odpowiedni komfort pracy i zadowalający czas odpowiedzi.
I gdy już wszystkie optymalizacje zapytań do bazy danych zostaną zastosowane, indeksy wypolerowane na wysoki połysk, czasowa złożoność obliczeniowa wszystkich metod będzie dążyć do O(1), a system dalej nie będzie spełnił wyśrubowanych warunków SLA, zawsze pozostaje wyprawa na "ostatni przylądek dobrej nadziei", czyli pełne niebezpieczeństw i ekscytujących przygód krainy, gdzie wasze dane będą na was czekać w ultra wydajnych, skalowalnych i stabilnych serwerach cache.
Chciałbym was, drodzy słuchacze, łagodnie wprowadzić w świat cache. Cache dla aplikacji webowych, opowiedzieć o stosowanych topologiach, wykorzystaniach cache w poszczególnych warstwach aplikacji, świat algorytmów "cache eviction", rozproszonych serwerów cache (i "data grids") oraz znanych i też przemilczanych "sekretów" i problemów, z którymi się spotkacie podczas implementacji cache w waszym systemie. Wszystko z wykorzystaniem takich rozwiązań jak memcached, redis, infinispan i ehcache.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
Z prezentacji dowiesz się jak działają nowoczesne procesory, jakich technik używają (Speculative Execution, Branch Prediction) aby zwiększyć wydajność i jak to się stało, że niektóre z tych usprawnień mogą być sprytnie wykorzystane do pozyskania poufnych danych. Omawiamy przykład złośliwego kodu wykorzystującego te luki i skutki jego działania. Pokazujemy mechanizmy obrony i wyjaśniamy jakie mogą przynosić ograniczenia.
Kamil Kozieł, Kamil Stawiarski / IT School | ORA-600
Oracle hacking session czyli o jedno uprawnienie za daleko.
Prezentacja z konferencji infoShare 2013 w Gdańsku.
Presented at infoShare 2013 conference in Gdańsk, Poland.
Presentation by the OECD on the “World Class Civil Service" made at the meeti...OECD Governance
This presentation by Edwin Lau, OECD, on the “WorLd Class Civil Service" was made at the meeting of the OECD Working Party on Public Employment and Management on 20-21 April 2015.
For further on information on the OECD work on Public Employment and Management please see http://www.oecd.org/gov/pem/.
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
Tworzenie skalowalnych i wydajnych mikroserwisów w rozproszonym środowisku chmurowym wymaga dużej dyscypliny u programisty oraz zastosowania wielu narzędzi ułatwiających to zadanie. Im większy system, tym większej uwagi wymaga. Rozproszone środowisko dodatkowo wymusza korzystanie z zewnętrznych rozwiązań ułatwiających pracę ze stanem systemu, takich jak cache.
Zdarzyło Ci się kiedyś pogubić w tym, gdzie leży która usługa i skąd się wziął błąd w systemie? Czy nie łatwiej byłoby mieć jedno narzędzie, które utrzyma wszystkie usługi pod kontrolą i zapewni niezawodne zarządzanie stanem aplikacji bez konieczności używania zewnętrznych systemów?
W czasie swojej prelekcji Krzysiek przedstawi, jak sprawdzony w bojach Azure Service Fabric zapewnia stabilną kontrolę nad systemem mikroserwisów oraz pozwala stworzyć aplikację bez użycia zewnętrznej bazy danych i systemu cachingu. Swoje doświadczenie z Azure Service Fabric nabył w codziennej pracy w dużym projekcie dla korporacji finansowej w Future Processing.
Wiele już powiedziano i napisano o bezpiecznym kodowaniu.
My skupiamy się w prezentacji na bezpiecznym kodowaniu w języku C na podstawie realnych podatności znalezionych w znanych programach i bibliotekach oraz kernelu Linuxa.
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?The Software House
Wojciech Wójcik: W temacie monitorowania systemów IT powiedziano już oceany słów na niezliczonych prezentacjach. Przedstawię wam jednak opowieść o mitologicznym Prometheuszu. Opowieść, która mogłaby konkurować z Grą o tron, a Koronę Królów zjadłaby na przystawkę. W jej trakcie zdradzę wam sekrety monitorowania Kubernetes, ale i nie tylko. Miejcie jednak na uwadze, że nie wszystkie potyczki się wygrywa – dzięki czemu zaszczycę was też możliwością wysłuchania ciekawych historii o fuckupach.
Presentation by the OECD on the “World Class Civil Service" made at the meeti...OECD Governance
This presentation by Edwin Lau, OECD, on the “WorLd Class Civil Service" was made at the meeting of the OECD Working Party on Public Employment and Management on 20-21 April 2015.
For further on information on the OECD work on Public Employment and Management please see http://www.oecd.org/gov/pem/.
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
Tworzenie skalowalnych i wydajnych mikroserwisów w rozproszonym środowisku chmurowym wymaga dużej dyscypliny u programisty oraz zastosowania wielu narzędzi ułatwiających to zadanie. Im większy system, tym większej uwagi wymaga. Rozproszone środowisko dodatkowo wymusza korzystanie z zewnętrznych rozwiązań ułatwiających pracę ze stanem systemu, takich jak cache.
Zdarzyło Ci się kiedyś pogubić w tym, gdzie leży która usługa i skąd się wziął błąd w systemie? Czy nie łatwiej byłoby mieć jedno narzędzie, które utrzyma wszystkie usługi pod kontrolą i zapewni niezawodne zarządzanie stanem aplikacji bez konieczności używania zewnętrznych systemów?
W czasie swojej prelekcji Krzysiek przedstawi, jak sprawdzony w bojach Azure Service Fabric zapewnia stabilną kontrolę nad systemem mikroserwisów oraz pozwala stworzyć aplikację bez użycia zewnętrznej bazy danych i systemu cachingu. Swoje doświadczenie z Azure Service Fabric nabył w codziennej pracy w dużym projekcie dla korporacji finansowej w Future Processing.
Wiele już powiedziano i napisano o bezpiecznym kodowaniu.
My skupiamy się w prezentacji na bezpiecznym kodowaniu w języku C na podstawie realnych podatności znalezionych w znanych programach i bibliotekach oraz kernelu Linuxa.
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?The Software House
Wojciech Wójcik: W temacie monitorowania systemów IT powiedziano już oceany słów na niezliczonych prezentacjach. Przedstawię wam jednak opowieść o mitologicznym Prometheuszu. Opowieść, która mogłaby konkurować z Grą o tron, a Koronę Królów zjadłaby na przystawkę. W jej trakcie zdradzę wam sekrety monitorowania Kubernetes, ale i nie tylko. Miejcie jednak na uwadze, że nie wszystkie potyczki się wygrywa – dzięki czemu zaszczycę was też możliwością wysłuchania ciekawych historii o fuckupach.
Technologia Xamarin i wprowadzenie do Windows IoT core
4Developers 2015: Jaka piękna katastrofa w doskonałym świecie, rzecz o architekturze skazanej na klęskę - Jarosław Pałka
1. Słowem wstępu
Nie jest moją intencją urazić
kogokolwiek na tej sali
Humor i żarty nie były testowane na
zwierzętach
Żadne też mniejszości nie zostały
Celowo pominięte
Wszelkie próby cenzury są daremne
I tak powiem co myślę
35. class SimpleCircuitBraker {
final int threshold;
final AtomicLong counter;
<T> T call(Supplier<T> call) {
if (counter.get() > threshold) {
throw new CircuitBrakerOpen();
}
try {
return call.get();
} catch (Exception e) {
counter.incrementAndGet();
throw e;
}
}
boolean close() {
return counter.getAndSet(0) != 0;
}
}
36. Jeśli potrzebujesz coś bardziej
wymyślnego
Netflix/Hystrix
Latency and Fault Tolerance for
Distributed Systems
37. import com.netflix.hystrix.HystrixCommand;
import com.netflix.hystrix.HystrixCommandGroupKey;
public class HelloWorldCommand extends HystrixCommand<String> {
private final String name;
public HelloWorldCommand(String name) {
super(HystrixCommandGroupKey.Factory.asKey("HelloGroup"));
this.name = name;
}
@Override
protected String run() throws Exception {
return format("Hello %s", name);
}
@Override
protected String getFallback() {
return format("World is crueal Mr. %s", name);
}
}
38. public class HelloWorldCommandTest {
@Test
public void test_synchronous() {
String result = new HelloWorldCommand("Jarek").execute();
assertEquals("Hello Jarek", result);
Future<String> future = new HelloWorldCommand("Jarek").queue();
Observable<String> observable =
new HelloWorldCommand("Jarek").observe();
}
44. gdy producent produkuje więcej
niż odbiorca
może przetworzyć
kolejki i bufory o nieograniczonym
rozmiarze
(unbounded queues)
asynchroniczna komunikacja
53. O czym nie powiedziałem
a chciałbym
(złapcie mnie w przerwie)
organizacje
wyznawcy „....jowo ale stabilnie”
ludzie
to nie mój problem,
mój kod? To niemożliwe