About half of the developers, one way or another, faced with the legacy-projects. Not everyone can (and want) work with them. But with the right approach, such projects can be carried out with pleasure and even enthusiasm. We suggest that such a legacy of understanding, what are these project management techniques, practices, and explore the developers consider useful decisions: • Examples of optimization - it's worth a try; • Monitoring applications - JavaMelody; • Monitoring applications - logs and ELK (ELasticSearch + Logstash + Kibana); • Monitoring applications - Java Mission Control and Heap Dump Memory Analyzer Tool.
В докладе мы рассмотрим наиболее распространенные проблемы реализации микросервисной архитектуры. На примерах разберем почему четкая постановка самой проблемы это уже половина решения. В ходе доклада мы коснемся таких проблем-ловушек:
- выбор неправильного технологического стека
- как запутаться в трех микросервисах при дебагинге
- как легко и просто потерять свои данные
- как выбрать паттерн коммуникации между микросервисами, чтобы разработчики были несчастны
Доклад является языком/технологически независимым, то есть подобные проблемы могут возникать на проекте с любым стеком.
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрению Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
В докладе мы рассмотрим наиболее распространенные проблемы реализации микросервисной архитектуры. На примерах разберем почему четкая постановка самой проблемы это уже половина решения. В ходе доклада мы коснемся таких проблем-ловушек:
- выбор неправильного технологического стека
- как запутаться в трех микросервисах при дебагинге
- как легко и просто потерять свои данные
- как выбрать паттерн коммуникации между микросервисами, чтобы разработчики были несчастны
Доклад является языком/технологически независимым, то есть подобные проблемы могут возникать на проекте с любым стеком.
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрению Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
Доклад с конференции Стачка 2017
Нагрузочное тестирование в Lazada
* Как мы до этого дошли и зачем нам это надо
* Что мы используем готового и что пришлось разработать самим
* Как мы анализируем результаты тестов и какую статистику собираем
* Почему мы доверяем результатам тестирования
* Как мы стреляем по продакшену и ничего не боимся
* Какие ресурсы нужны для построения системы нагрузочного тестирования
* Что мы хотим сделать в будущем
Как перестать хранить секреты в git и начать использовать Hashicorp VaultOleg Mykolaichenko
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрения Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения Iosif Itkin
КГТУ - Костромской Государственный Технологический Университет
Курс Лекций:
Обеспечение Качества Программного Обеспечения
Лекция 6: Обзор методов создания тестовых сценариев
Максим Рудовский, Инновационные Трейдинговые Системы
Иосиф Иткин, Exactpro Systems
Agile Vector - внедрение agile разработки в РайффайзенбанкеAlexey Deryushkin
Доклад на 60 минут с пошаговым описанием процесса внедрения гибких методологий разработки в окружении, работающем по «водопаду», проблем такого точечного внедрения и их способов решений на примере нескольких связных проектов, а также влияние такого внедрения на IT банка в целом. Затрагиваются все темы, связанные с постановкой производства ПО -- от технических практик до образа мышления, на примерах из жизни. История успеха длинной в два года, которая не собирается завершаться.
*Netpeak Talks — это серия ивентов от Netpeak Group в Одессе (при поддержке ассоциации продуктовых компаний IT-Products Odessa).
В рамках этих встреч есть возможность обсудить с практикующим спикером наболевшие темы, связанные с R&D, дизайном, менеджментом, интернет-маркетингом, QA, Customer Success, аналитикой и др. (все темы от встречи к встрече не повторяются и отличаются друг от друга).
______________________
Тема #11: Как работать с legacy проектом, которому больше 10 лет?
Спикер: Денис Воскобойник — Team Lead отдела разработки внутренних продуктов в Netpeak Agency.
Тезисы видео:
✔ Построение процессов разработки.
✔ Подготовка команды к проекту.
✔ Внедрение / обновление стека технологий.
✔ Как рефакторить?
✔ Как понять, что нужно вынести отдельно и нужно ли это?
✔ Как тестировать то, что никогда не тестировалось?
✔ Code Review.
_____________________
Информацию об этом и следующих мероприятиях ты можешь отследить:
Сайт: http://netpeak.group/talks
Facebook: https://www.facebook.com/NetpeakTalks/
Телеграм: https://t.me/netpeaktalks
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentIntersog
Intersog acted as a general partner of relaunched Mobile Monday (MoMo) event in Ukraine that took place in Kyiv on June 25, 2015. See the top moments from Mobile Monday Kyiv #1!
MoMo is a global platform for IT knowledge sharing and professional networking that is currently being active in 140+ cities worldwide. MoMo offers different networking formats aimed to enhance public knowledge of the most trending mobility topics and innovation. Read more and join Mobile Monday: http://intersog.com/news/intersog-helps-relaunch-mobile-monday-ukraine/
Сейчас контейнеризация и Kubernetes в частности — стандарт де-факто для запуска приложений «в бою». И запустить-то приложение в «кубе» несложно, но как всегда есть нюанс и не один. Обсудим, что нужно разработчику и админу учесть и сделать для того, чтобы приложение работало быстро и надёжно, не требуя к себе особого внимания. Например, посмотрим, как работают requests и limits на ресурсы, чем должны отличаться liveness и readiness пробы, и на что следует обращать внимание в мониторинге и так далее.
Доклад с конференции Стачка 2017
Нагрузочное тестирование в Lazada
* Как мы до этого дошли и зачем нам это надо
* Что мы используем готового и что пришлось разработать самим
* Как мы анализируем результаты тестов и какую статистику собираем
* Почему мы доверяем результатам тестирования
* Как мы стреляем по продакшену и ничего не боимся
* Какие ресурсы нужны для построения системы нагрузочного тестирования
* Что мы хотим сделать в будущем
Как перестать хранить секреты в git и начать использовать Hashicorp VaultOleg Mykolaichenko
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрения Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения Iosif Itkin
КГТУ - Костромской Государственный Технологический Университет
Курс Лекций:
Обеспечение Качества Программного Обеспечения
Лекция 6: Обзор методов создания тестовых сценариев
Максим Рудовский, Инновационные Трейдинговые Системы
Иосиф Иткин, Exactpro Systems
Agile Vector - внедрение agile разработки в РайффайзенбанкеAlexey Deryushkin
Доклад на 60 минут с пошаговым описанием процесса внедрения гибких методологий разработки в окружении, работающем по «водопаду», проблем такого точечного внедрения и их способов решений на примере нескольких связных проектов, а также влияние такого внедрения на IT банка в целом. Затрагиваются все темы, связанные с постановкой производства ПО -- от технических практик до образа мышления, на примерах из жизни. История успеха длинной в два года, которая не собирается завершаться.
*Netpeak Talks — это серия ивентов от Netpeak Group в Одессе (при поддержке ассоциации продуктовых компаний IT-Products Odessa).
В рамках этих встреч есть возможность обсудить с практикующим спикером наболевшие темы, связанные с R&D, дизайном, менеджментом, интернет-маркетингом, QA, Customer Success, аналитикой и др. (все темы от встречи к встрече не повторяются и отличаются друг от друга).
______________________
Тема #11: Как работать с legacy проектом, которому больше 10 лет?
Спикер: Денис Воскобойник — Team Lead отдела разработки внутренних продуктов в Netpeak Agency.
Тезисы видео:
✔ Построение процессов разработки.
✔ Подготовка команды к проекту.
✔ Внедрение / обновление стека технологий.
✔ Как рефакторить?
✔ Как понять, что нужно вынести отдельно и нужно ли это?
✔ Как тестировать то, что никогда не тестировалось?
✔ Code Review.
_____________________
Информацию об этом и следующих мероприятиях ты можешь отследить:
Сайт: http://netpeak.group/talks
Facebook: https://www.facebook.com/NetpeakTalks/
Телеграм: https://t.me/netpeaktalks
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentIntersog
Intersog acted as a general partner of relaunched Mobile Monday (MoMo) event in Ukraine that took place in Kyiv on June 25, 2015. See the top moments from Mobile Monday Kyiv #1!
MoMo is a global platform for IT knowledge sharing and professional networking that is currently being active in 140+ cities worldwide. MoMo offers different networking formats aimed to enhance public knowledge of the most trending mobility topics and innovation. Read more and join Mobile Monday: http://intersog.com/news/intersog-helps-relaunch-mobile-monday-ukraine/
Сейчас контейнеризация и Kubernetes в частности — стандарт де-факто для запуска приложений «в бою». И запустить-то приложение в «кубе» несложно, но как всегда есть нюанс и не один. Обсудим, что нужно разработчику и админу учесть и сделать для того, чтобы приложение работало быстро и надёжно, не требуя к себе особого внимания. Например, посмотрим, как работают requests и limits на ресурсы, чем должны отличаться liveness и readiness пробы, и на что следует обращать внимание в мониторинге и так далее.
Построение систем автоматического протоколирования Си/Си++ кодаTatyanazaxarova
Иногда единственным методом отладки является использование протоколирования событий приложения. К недостаткам протоколирования (логирования) можно отнести большой объем кода, который приходится писать вручную для сохранения всей необходимой информации. В статье рассматривается методика, позволяющая построить систему автоматического протоколирования кода на языке Си/Си++.
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...Ontico
1. Мониторинг высоконагруженного проекта.
1.1. Специфика мониторинга высоконагруженного проекта: гранулярность мониторинга, надежность системы мониторинга, система оповещений.
1.2. Мониторинг и контроль распределенных систем.
1.3. Специфика организации оповещений в высоконагруженном проекте. Превентивный мониторинг.
2. Резервирование и резервное копирование в высоконагруженном проекте.
2.1. Резервирование и резервное копирование - разные вещи.
2.2. Резервирование: на уровне сервера, дата-центра, географически распределенных площадок.
2.1. Организация резервного копирования. Сохранность часто обновляемых данных.
3. Обслуживание высоконагруженного проекта.
3.1. Организация поддержки высоконагруженного проекта: опыт, специфика работы.
3.2. Организация дежурств, эскалация оповещений.
3.3. Аварии в высоконагруженных проектах: примеры из жизни.
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
Продукт XML2Selenium - это расширяемая, плагинная платформа для создания и управления автоматизированными тестами на основе технологии Java.
XML2Selenium имеет интеграцию с JUnit, работает поверх Selenium (это изменяемо). XML2Selenim позволяет создавать автоматизированные тесты в простом и понятном обычному (без навыков программирования) QA инженеру формате. XML2Selenium позволяет также управлять всеми стадиями работы с автоматизированными тестами, начиная от стадии создания и заканчивая управлением тестами.
Главными конкурентными преимуществами являются
- низкая стоимость вхождения. Начинающие автоматизаторы, и даже QA инженеры без навыков программирования создают качественные тесты, а значит легко поддерживаемые, легко изменяемые, с использованием DDT (Data Driven Testing) подходов, что увеличивает повторно-используемость тестов
- встроенные возможности структуризации тестов по папкам и файлам, а также по тегам, что позволяет качественно отобразить документацию на тесты. Внедряя эту платформу, вы автоматически улучшаете свои процессы управления тестами
- XML2Selenium - это плагинная, расширяемая платформа, позволяющая кастомизировать процессы под ваши нужды, создать новые плагины, добавить интеграцию с нужными системами, и многое другое
- все повторно-используемые части (инклюды, плагины) могут помещаться в репозитории, откуда ими могут пользоваться QA инженеры с других проектов компании, тем самым распространяется опыт и знания в области автоматизации
- XML2Selenium имеет широкий спектр полезных свойств в области автоматизации, таких как поддержка создания видео, снепшотов и скриншотов страниц, Groovy и JS скриптинга, поддержки объектно-ориентированного программирования на XML и многих других
Традиционно многие компании не инвестируют много в QA инженеров, при этом сложность продуктов и количество Use Cases растёт, и компании утыкаются в барьер, когда архитектура тестов становится сравнительно такого же уровня, как и архитектура приложения. Это же касается и автоматизации тестирования. Ключевыми проблемами становятся:
- вопросы поддержки и тестирования многих инсталяций продукта на стороне заказчика
- вопросы тестирования нескольких версий (бренчей) одного и того же продукта
- повторн
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Mail.ru Group
Существует мнение, что от разработчиков системы автоматизированных тестов требуется высокая квалификация в области разработки программного обеспечения и солидный багаж знаний. Обычно таких людей в команде тестирования не много. Но можно начать работы по качественной автоматизации тестирования, даже не имея такого опыта. В докладе речь пойдет о:
отборе рекрутов в программу обучения автоматизации тестирования;
первичном пороге для вхождения в рекруты;
составлении учебной программы;
промежуточном контроле и испытаниях;
начале работы над реальными проектами;
подводных камнях и ошибках, которые можно допустить.
Применение этих знаний на собственном опыте позволило компании получить высокое покрытие проекта тестами и достичь результатов, когда каждый из команды разрабатывает и поддерживает автотесты, а также самостоятельно автоматизирует новые проекты.
Основные новшества Java 9, которые, на мой взгляд, наиболее актуальны.
Здоровая критика и дополнения приветствуются. Есть текстовый документ, где всё это расписано немного подробнее.
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
Окружение JavaScript, наверно, самая быстроразвивающаяся отрасль в мире разработки программного обеспечения. Все слышали шутку про книгу “36 новых JavaScript фреймворков, выпущенных в марте”, и это не далеко от правды.
В своем обзорном докладе я расскажу о своем пути во frontend. О том, как вижу современную индустрию, о существующих проблемах и путях их решения. Все не так уж радужно, как может показаться. Надеюсь, мой доклад позволит вам взглянуть на мир JavaScript с другой стороны или, по крайней мере, задуматься о том, в правильном ли направлении вы движетесь?
Доклад с конференции D2D Pizza JS - http://dev2dev.ru/events/8/
Vladimir Lozanov How to deliver high quality apps to the app storeАліна Шепшелей
How to plan and organize QA processes in product development team. Balance between manual and automation testing in iOS products. Importance of collaboration with other teams and how to engage all the team into product quality advocacy.
Apache Spark is an open-source parallel processing framework that supports in-memory processing to boost the performance of big-data analytic applications. We will cover approaches of processing Big Data on Spark cluster for real time analytic, machine learning and iterative BI and also discuss the pros and cons of using Spark in Azure cloud.
Valerii Iakovenko Drones as the part of the presentАліна Шепшелей
Drones, these are the tools that have densely entered to our life now. These are sources of geospatial information which form the basis and supplements many systems of monitoring and control. In detail, the speech will be about agribusiness.
Anton Ivinskyi Application level metrics and performance testsАліна Шепшелей
It is important to understand how your code behaves in production, not just guess how it should behave. Know what takes time and what goes wrong. Measure it all. Be ready for the load with performance tests.
Kononenko Alina Designing for Apple Watch and Apple TVАліна Шепшелей
Apple Watch and Apple TV apps are inherently different from other apps, in both form and function. You will learn watchOS and tvOS user experience foundations and design principles, get the quick overview of the best existing solutions and possible ways of extending your projects to this platforms.
Mihail Patalaha Aso: how to start and how to finish?Аліна Шепшелей
How to collect the semantic core;
Which keywords to choose;
How to enter the keywords in the title and description;
How to understand the algorithm of Google Play;
How much traffic can be obtained by optimizing the ASO;
Tips to improve search results.
Gregory Shehet Undefined' on prod, or how to test a react appАліна Шепшелей
During the lecture we'll discuss the unit-testing of the interface. The stack of technologies: React (Redux, MobX), Mocha/Chai, React Tests Utils, Enzyme, Tape/Ava. Also, I will mention how we in Grammarly rewrite selenium to the unit tests, and how it works.
Alexey Osipenko Basics of functional reactive programmingАліна Шепшелей
During the report, we will develop incrementally construct primitives and algebra (in the worst case, just come up with a library interface) for the organization of interaction of the application with the mess in the real world. This approach will keep the application logic in the pure functions and declaratively associate external events with the necessary output.
And no React JS.
Step by step guide on building the multipurpose parser for scalable web data extraction.
Designing and usage of universal format for stripped web articles.
Format comparison with AMP(Google), Facebook Instant Articles and Apple News.
Alex Theedom Java ee revisits design patternsАліна Шепшелей
Enter "Django Channels": new way of desinging and thinking about your application. It separates transport and processing concerns in typical Django project using combination of ASGI (Asynchronous Server Gateway Interface) and worker processes, enabling your application to be "event-oriented" and implement new workflows for processing your data. How does it work? What do you need to start? Is it even useful? Learn for yourself with this introductory talk.
Alexey Tokar To find a needle in a haystackАліна Шепшелей
The talk will cover core principles of text search applicable to fixed size dictionaries. We will have a deep look at some algorithms which are deeply hidden inside huge search engines or basic search inputs on web-sites. My goal is to provide comparison between different search approaches and provide objective assessment based on complexity, memory consumption and CPU utilization of each of them.
Dmitriy Kouperman Working with legacy systems. stabilization, monitoring, management
1. Работа с легаси системами
Стабилизация, мониторинг, менеджмент
Докладчики: Дмитрий Куперман, Егор Волков
Дата: 3.09.2016
2. План
1. Что такое легаси - осмысление
2. Что с этим всем делать - подходы
3. А руками - девелоперские практики
4. Как это менеджить - приёмы управления легаси проектами
5. Да ладно, не всё так плохо - примеры весёлого кода
6. Примеры оптимизации - что стоит попробовать
7. Мониторинг приложений - JavaMelody
8. Мониторинг приложений - логи и ELK (ElasticSearch + Logstash + Kibana)
9. Мониторинг приложений - мониторинг и менеджмент JVM
2
3. Как работать с легаси и сохранить
психическое здоровье
Подходы, техники, примеры
4. Что такое легаси Дано:
1. Исто(е)рический код
2. Старые технологии
3. Неконсистентная архитектура
4. Недостаток или отсутствие документации
НО
5. ПРОДАКШН
a. Деньги
b. Надёжность (блажен кто верует)
c. Риски
Надо:
1. Разработка нового функционала
2. Багфиксинг
3. Стабилизация
4
5. Что с этим всем делать
1. Читать код (понять ход мыслей автора)
2. И смежный тоже
3. Докапываться до самой глубины (Call Hierarchy, Type
Hierarchy)
4. Дебажить, в том числе и либы, в том числе и
опенсорсные, которые потом, возможно, пересобирать
5. Искать старую докуметацию и носителей знаний
6. Документировать результаты своего reverse engineering-а
(flow diagrams, sequence diagrams)
a. Отдельные документы для технарей и бизнеса
b. Не забывать этой документацией пользоваться
5
6. А руками?
1. НЕ ПЕРЕПИСЫВАТЬ!
2. Реализовывать новый функционал. Писать консистентно с
существующим кодом
3. Отталкиваться от business value при оптимизации и
стабилизации.
4. Тестировать (manual + unit + automation)
5. Рефакторить, когда уже невмоготу или очень понемногу (тот
же business value)
6. Наладить взаимодействие с девопсами: релизная
процедура, outage alerting, отдельные environment-ы для
всего
7. Branching strategy
8. Code review and tools
6
7. Как это менеджить
1. Не всем девелоперам подходит
2. Тщательно подбирать команду по личностным
качествам - без чувства юмора и самоиронии
загнётесь. Без терпения - тоже.
3. Напоминать о всех вышеупомянутых техниках
4. Задавать дурные вопросы людям
5. Терпеливо объяснять новому менеджменту, что
“здесь так принято”
6. Выстроить процесс и следовать ему во избежание
увеличения энтропии
7. Оверэстимейтить - закладывать буферы на
сюрпризы (неочевидные зависимости - пример с
css)
8. Противостоять потоку бизнес-требований (баланс
бизнеса и стабилизации)
9. Вести technical debt
10. Отдельные маленькие проекты по стабилизации
11. Иметь SWAT-группу
7
8. Да ладно, не всё так плохо...
/**
* This is so wrong. This method, getInt, is
returning a long.
* This is required by some configuration
somewhere that uses autowire properties.
* Attempts to change this to an int return
value cause the application
* to fail on startup.
*/
public final long getInt(String str, int def)
generateItemList((DateTime) null,(DateTime) null);
Calendar.continuation_for_the_fucking_khtml_browser
= function() { ….. }
// (calendar.js from http://dynarch.com/jscal/)
8
9. Да ладно, не всё так плохо...
documentRow = new Chunk("Total:", new Font(bfVerdana, 8, Font.BOLD, COLOR_BLACK));
cell = new Cell(documentRow);
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setBorder(Rectangle.NO_BORDER);
cell.setLeading(8); // wysokosc
documentTable.addCell(cell);
documentRow = new Chunk("Remaining:", new Font(bfVerdana, 8, Font.BOLD, COLOR_BLACK));
cell = new Cell(documentRow);
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setBorder(Rectangle.NO_BORDER);
cell.setLeading(8); // wysokosc
documentTable.addCell(cell);
и так 95 раз…
9
10. Really? This can happen?
} catch(CustomValidationException cve) {
try {
servletResponse.sendError(HttpServletResponse.SC_BAD_REQUEST,
cve.getMessage());
} catch(IOException ioe) {
// really? this can happen? wtf am i supposed to do now? my whole server is
crashing.
LOGGER.warn("Unable to send error response!", ioe);
}
10
11. Примеры оптимизации
1. Уход от ежедневных рестартов
2. Добавление скриптов,
перезапускающих Эйры - антипаттерн
3. Уход от Зукипера
4. Переход на sessionless BFM
5. Переход на Sabre Orchestrated API
6. Slow SQL queries
7. Проход по всем логам и составление
prodLogExceptions эпика
8. Фикс багов заменой библиотек на новые
a. Spring -
org.springframework.http.MediaType
b. Jackson JSON DeSerializer в Java 7
9. Третьесторонние зависимости (frontend
(TWRS, CY, GTM, ATM), backend, dead links
scanning)
10. Cтабилизационный проект, внедрение
мониторинга JVM и аггрегации логов, о
чём ниже
11
13. Мониторинг приложения: JavaMelody
Что это?
JavaMelody - это инструмент для мониторинга Java-
приложений (спасибо, Кэп!).
Интегрируется либо в application server, либо в ваш
application.
В реальном времени собирает метрики:
1. CPU usage, RAM usage (Heap/Perm gen), Thread
count, HTTP activity;
2. MySQL connections, transactions per minute, running
queries, min/max query time, статистика самых
популярных и самых медленных запросов
(проксирование JDBC драйвера);
3. Thread info in details: какие потоки, что делают,
какой код их вызвал;
4. Hibernate L2 cache: посмотреть какой кеш, где, что
в нём и (при необходимости) грохнуть его;
5. Логи: самые популярные entry, сортировка по типу;
6. System load, disc usage, free disc space, etc.
13
14. Мониторинг приложения: JavaMelody
1. Real-time application health monitoring (is it dead yet?);
2. Возможность быстро реагировать на outage’ы и решать
сиюминутные проблемы;
3. Логи не всегда показывают всю картину произошедшего,
можно посмотреть что было с приложением в
определённый момент времени;
4. Возможность предусмотреть многие проблемы ещё до
того, как сработает dev-ops alerting (он же у вас есть,
правда?);
5. Графики более наглядны для менеджеров и прочих
бизнесов;
6. Легче ответить на вопросы клиента а-ля “почему мы
потеряли много килобаксов денег?”;
7. Дев-опсы скажут вам спасибо!
Зачем мне всё это?
14
15. Мониторинг приложения: JavaMelody
Threads
Memory
1. Видна нагрузка на сервер
2. Пики (очевидно) в вечернее время.
1. “Пила” показывает как приложение ест
память, можно копать глубже
2. Кореллирует по времени с GC-graph’
ом
3. Проседания справа - деплойменты
15
17. Что это и зачем мне это?
Elasticsearch + Logstash + Kibana - стек
технологий для аггрегации, анализа и
визуализации данных из логов.
1. Статистические данные в реальном
времени из логов приложения;
2. Настраиваемые выборки под
конкретные условия и ситуации;
3. Ещё больше цветастых графиков,
понятных даже вашему менеджеру;
4. Полезно не только с технической
стороны, но и со стороны бизнеса;
5. Лишний повод привести в порядок
логгирование в вашем приложении;
Мониторинг приложения: Логи и ELK
17
20. Мониторинг приложения: JMC, MAT, VisualVM...
Кто все эти люди?
1. Java Mission Control (Starting with the release of
Oracle JDK 7 Update 40 (7u40), Java Mission
Control is bundled with the HotSpot JVM),Flight
Recorder requires commercial license;
2. Heap Dump Memory Analyzer Tool и
-XX:+HeapDumpOnOutOfMemoryError, для
случаев, когда “Что упало - то пропало” нас не
устраивает;
3. VisualVM (since JDK version 6, update 7);
4. Solaris Studio Performance Analyzer (linux
and solaris only);
20
21. Time for an update!
А давайте обновим фреймворки!
1. Обновление JDBC-драйвера, Tomcat
threadpool’а и прочих штук - полезно;
2. Неочевидные изменения под капотом
фреймворков могут привести к конфликтам
библиотек;
3. “Работает - не трогай!” не всегда
справедливо;
4. Отдельная история с application server’ами и
версией Java - ВНИМАТЕЛЬНО читать
change-log’и;
21
22. Полезные ссылки
Victor Polischuk. Legacy Projects. How To Win The Race.
http://jeeconf.com/archive/materials-2014/legacy-projects/
Michael Feathers. Working Effectively with Legacy Code
http://www.slideshare.net/nashjain/working-effectively-with-legacy-code-presentation
22