Дайджест цікавих подій з світу Java, і навколо неї #2 (09.05.2016 — 22.05.2016)

image

У цьому випуску
— Новики в Java: иммутабельные колекції JDK9, нові опції для обробки out-of-memory JDK8
— Як зареордерить читання на x86?
— Опен-сорс настає: гіганти IT індустрії викладають нові фреймворки
— «Чутки про мою смерть сильно перебільшені»: Twitter на захист Scala
— Терабайти RAM в хмарі: нова пропозиція від Amazon
— Як HR-и Google запрошують на співбесіду?
… і багато іншого

1. Новини
1.1. Иммутабельные колекції в Java 9JDK9 влили иммутабельные колекції. Та не прості, а компактні! Наприклад, пари ключ-значення в Map зберігаються в звичайному масиві, в межах якого вони розташовані згідно з хеша ключів.

Оригінальний JIRA-тікет: bugs.openjdk.java.net/browse/JDK-8139233

1.2. Нові опції для обробки out-of-memory в Java 8Починаючи з останнього релізу вісімки 8u92, в JVM з'являється два нових прапорця: CrashOnOutOfMemoryError та ExitOnOutOfMemoryError. Обидві опції грохают Java-процес при виникненні першого OutOfMemoryError.

Дуже корисна фіча. У разі OOM серверні додатки можуть дуже довго не реагувати на зовнішні впливи. Єдине, що з ними можна зробити в цьому випадку — прибити руками. У випадку використання цих опцій Java-процес помре сам собою, а в разі CrashOnOutOfMemoryError і створить креш-дамп.

1.3. LinkedIn відкрив вихідний код розподіленого сховища AmbryКоли компанія масштабу LinkedIn відкриває исходники своїх продуктів, це завжди цікаво. Коли це супроводжується найдокладнішим описом архітектури системи та історією її створення — це цікаво подвійно.

У двох словах, Ambry працює приблизно так:
image
Джерело: engineering.linkedin.com

Ну а якщо серйозно, то обов'язково прочитайте статтю від і до. Таке докладний опис мотивації та процесу прийняття технічних рішень буде в мільйон разів корисніше, ніж читання сухих исходников на GitHub.

Цікаво, що через деякий час після виходу статті, з'явилася інформація про зломі LinkedIn і витоку паролів. Багатьом з вас напевно прийшов лист щастя з рекомендацією змінити пароль. Простий збіг? Не думаю.

1.4. Twitter відкрив вихідний код системи для розподіленого логування DistributedLogКоли компанія масштабу… ну ви зрозуміли.

Репозиторій: github.com/twitter/distributedlog
Опис архітектури: blog.twitter.com/2015/building-distributedlog-twitter-s-high-performance-replicated-log-service

1.5. Скільки Scala в Twitter?Хроніки вмираючої Scala. Stu Hood, інженер Twitter, оцінив частку бекенда, написаного на Scala в 50%. Добре це чи погано, жива Scala чи ні — вирішуйте самі.

Цікаво, що буквально за тиждень до цього акції Twitter ледь не оновили свій абсолютний мінімум, упав до позначки 13.90$ за акцію. Простий збіг? Не думаю.

1.6. X1 — новий продукт AmazonAmazon анонсировал вихід нового флагманського инстанса X1. Що б ви розуміли — 128 ядер, 2Tb оперативки, 10Gbps мережу. Компанія люб'язно пропонує переносити на ці инстансы Ваші SAP-и, Spark-і, та інші монструозна конструкції.

image
Джерело: www.businessinsider.com

Це дзвіночок. Зрозуміло, що за активне використання таких потужностей доведеться відвалювати Amazon дуже серйозні суми. Але це зараз, коли операційний прибуток Amazon Web Services измеряется десятками відсотків. Мине кілька десятків років, залізо ще більше подешевшає, конкуренція посилиться, маржа впаде, і покупка серверного hardware стане рідкістю.

2. Почитати
2.1. Інтерв'ю Мартіна ТомпсонаПосилання: https://www.infoq.com/interviews/thompson-high-performance-java/

Цікава розмова про мережу, профайлери, алокації та продуктивність.

2.2. Post-mortem: розбір причин падінь відомих сервісів і додатків Посилання: https://github.com/danluu/post-mortems

Вкрай цікавий репозиторій, в якому зібрані посилання на опис причин всіляких багів, аутэджей та інших проблем популярних сервісів і приолжений, таких як Amazon, Google, Microsoft і т. д.

Захоплююче чтиво, в дусі «в дата-центр A вдарила блискавка, з-за цього трафік зріс на дата-центр B, але в його була concurrency-бага, яка відтворювалася тільки під навантаженням, в результаті половина наших сервісів померла». Змушує задуматися про межі людських можливостей в приборканні розподілених систем.

2.3. Стаття про нутрощах C2-компілятораПосилання: http://marcelinorc.com/2016/05/11/phases-of-the-java-hostpot-c2s-compiler/

Для любителів хардкору. У статті розповідається про те, як С2 аналізує код, і які конкретно оптимізації застосовує. Все це забезпечено посиланнями на відповідні исходники OpenJDK.

2.4. Демонстрація «реордеринга» на прикладі тесту з jcstressПосилання: http://stackoverflow.com/questions/37240208/reordering-of-reads/37241534#37241534

Олексій Шипилев наочно показує, як ігнорування Java Memory Model може призводити до непередбачуваних наслідків навіть на досить спокійних архітектурах, начебто x86. Ніякої Total Store Ordering вас не врятує.

3. Мудрість
3.1. Про життєвому циклі Вашого коду
The code does not belong to you. It is in your care for a time. Others may need to use it, maintain it, or patch it. #WriteCleanCode  Eric Elliott (@_ericelliott) 10 травня 2016 р.

3.2. Бенчмарки: приємні цифри або коректність на прикладі GC
Stop trying to avoid GC in your benchmarks! If a code produces garbage, it has to pay with GC. And that should affect performance metrics.  Aleksey Shipilëv (@shipilev) 11 травня 2016 р.

3.3. Про дистрибутивних системах
The principle «single source of truth» is responsible for more bad design in distributed systems than any other misguided principle we know  Paul Borrill (@plborrill) 13 травня 2016 р.

3.4. Про ставлення до багам
Many teams spend > 70% time fixing bugs.
If zero bugs, вони d be > 3x productive.
The safe way is the fast way. @jbrains @JasonKerney  Tim Ottinger (@tottinge) 15 травня 2016 р.

3.5. Про те, якою повинна бути перша версія Вашого продукту
A nice way to visualize what an MVP (Minimum Viable Product) should accomplish pic.twitter.com/1QJnf8Gnps  Lean Startup Co. (@leanstartup) 19 травня 2016 р.

4. Гумор
4.1. Хайрим правильноHR-и Google вирішили проблему найму персоналу. Тепер вони створюють позиції під конкретну людину.
image

4.2. Наслідки переходу на микросервисную архітектуру
when u have converted to everything #microservices pic.twitter.com/QfUWIVzhgD  fresh tweets (@tweets_so_fresh) 15 травня 2016 р.

4.3. А це зрозуміють тільки опен-сорсники
Hopen Source, n. When a company throws a complex codebase over the wall, believing a community will magically form to fix and support it.  Jeff Waugh (@jdub) 16 травня 2016 р.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.