Как стать автором
Обновить

Компания НПО Криста временно не ведёт блог на Хабре

Сначала показывать

Собственные метрики JFR и их анализ

Время на прочтение15 мин
Количество просмотров6K

Недавно я описывал как осуществлять запуск и управление Java Flight Recorder (JFR). Теперь решил затронуть тему записи в JFR метрик, специфичных для приложения, а так же способов их анализа в Java Mission Control (JMC). Это позволяет расширить понимание происходящего с приложением и значительно упростить анализ производительности и поиск узких мест.

В предлагаемой статье мы рассмотрим пример создания своих событий, записываемых в JFR и то как эти данные могут помогать в анализе работы приложения. Будет рассмотрен только один частный пример, не претендующий на полноту описания всех возможностей и нюансов использования JFR и JMC.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Управление Java Flight Recorder

Время на прочтение15 мин
Количество просмотров31K


Не так давно в мире Java случилось грандиозное событие. Во всех актуальных версиях OpenJDK стал доступен Java Flight Recorder (или просто JFR).


Что такое Java Flight Recorder?

JFR – это механизм легковесного профилирования Java-приложения. Он позволяет записывать и в последствии анализировать огромное количество метрик и событий, происходящих внутри JVM, что значительно облегчает анализ проблем. Более того, при определённых настройках его накладные расходы настолько малы, что многие (включая Oracle) рекомендуют держать его постоянно включённым везде, в том числе прод, чтобы в случае возникновения проблем сразу иметь полную картину происходившего с приложением. Просто мечта любого SRE!


Раньше этот механизм был доступен только в коммерческих версиях Java от корпорации Oracle версии 8 и более ранних. В какой-то момент его реимплементировали с нуля в OpenJDK 12, затем бекпортировали в OpenJDK 11, которая является LTS-версией. Однако вот OpenJDK 8 оставалась за бортом этого праздника жизни. Вплоть до выхода апдейта 8u272, в который наконец-то тоже бекпортировали JFR. Теперь все (за редким исключением) пользователи OpenJDK могут начинать использовать эту функциональность.


Но вот незадача: большая часть документации в интернете относится к старой, коммерческой, версии JFR и во многом не соответствует версии, которая присутствует в OpenJDK. Да и та, что есть, весьма скудная и не способствует пониманию того, как это всё использовать.


В предлагаемой вашему вниманию статье я расскажу, как управлять работой JFR и как его настраивать.

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии2

Интеграция в стиле BPM

Время на прочтение29 мин
Количество просмотров8.5K


Привет, Хабр!


Наша компания специализируется на разработке программных решений класса ERP, в составе которых львиную долю занимают транзакционные системы с огромным объемом бизнес-логики и документооборотом а-ля СЭД. Современные версии наших продуктов базируются на технологиях JavaEE, но мы также активно экспериментируем с микросервисами. Одно из самых проблемных мест таких решений – интеграция различных подсистем, относящихся к смежным доменам. Задачи интеграции всегда доставляли нам огромную головную боль, независимо от применяемых нами архитектурных стилей, технологических стэков и фреймворков, однако в последнее время в решении таких задач наметился прогресс.


В предлагаемой вашему вниманию статье я расскажу об имеющихся у НПО «Криста» опыте и архитектурных изысканиях в обозначенной области. Также мы рассмотрим пример простого решения интеграционной задачи с точки зрения прикладного разработчика и выясним, что скрывается за этой простотой.

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии24

Конструктор интерактивных туров

Время на прочтение5 мин
Количество просмотров2.3K


В настоящее время существует множество методологий, позволяющих регулировать процесс производства ПО. Однако какая бы из них ни использовалась, в календарном плане проектных работ всегда должен присутствовать пункт о проведении обучения конечного пользователя работе с текущей версией программного продукта. При этом время, затрачиваемое на обучение, должно быть соразмерным скорости разработки и обновления ПО.



Процесс обучения


Современные компании-разработчики стараются взять под контроль и теоретическое, и практическое обучение пользователя. Это подразумевает присутствие учителя (специалиста предметной области) в процессе обучения. Ему необходимо в режиме реального времени контролировать обучение, чтобы пользователь получил теоретические знания о работе с функционалом программы, а также закрепил их на практике.


Одной из компаний, которая занимается не только разработкой программного обеспечения, но и помогает пользователям своих решений освоить управление ими, является НПО «Криста». Для этого на базе компании создан специальный учебный центр.

Всего голосов 8: ↑7 и ↓1+6
Комментарии0

Eще один бэкап — больше, чем скрипт, проще, чем система

Время на прочтение3 мин
Количество просмотров6.9K
Систем резервного копирования множество, но что делать, если обслуживаемые сервера разбросаны по разным регионам и клиентам и нужно обходиться средствами операционной системы?



Добрый день, Habr!
Меня зовут Наталья. Я тимлид группы администраторов приложений в НПО «Криста». Мы Ops для группы проектов нашей компании. У нас довольно своеобразная ситуация: мы устанавливаем и сопровождаем наше ПО как на серверах нашей компании, так и на серверах, расположенных у клиентов. При этом бэкапить сервер целиком нет необходимости. Важны лишь «существенные данные»: СУБД и отдельные каталоги файловой системы. Конечно, клиенты имеют (или не имеют) свои регламенты резервного копирования и часто предоставляют некое внешнее хранилище для складывания туда резервных копий. В этом случае после создания бэкапа мы обеспечиваем отправку во внешнее хранилище.

Какое-то время для целей бэкапа мы обходились bash-скриптом, но по мере разрастания вариантов настроек пропорционально росла и запутанность этого скрипта, и в один прекрасный момент мы пришли к необходимости его «разрушить до основанья, а затем....».
а как же готовые решения?
Всего голосов 5: ↑4 и ↓1+3
Комментарии14

IntelliJ IDEA: Structural Search & Replace

Время на прочтение11 мин
Количество просмотров12K

Современные IDE — очень мощные инструменты, способные помогать разработчику в самых разных ситуациях. Но обратной стороной этой мощности является то, что большинство функций находится в тени — об их наличии мало кто подозревает.


Простой пример одной такой функции

А вы знаете, что, если в IDEA нажать F2, курсор перескочит к ближайшей ошибке в файле? А если нет ошибки, то к замечанию? Как-то так получается, что об этом знают далеко не все.


Одной такой функцией является Structural Search & Replace (SSR). Она может быть невероятно полезна в тех ситуациях, когда пасует всё богатое разнообразие других функций.


Несколько таких примеров я и приведу в данной статье. И чтобы не ограничиваться суррогатными случаями, буду демонстрировать эти примеры на реальном коде из двух проектов:


  1. 3D-движка для создания игр jMonkeyEngine, как пример большого проекта, в котором всегда можно найти что-то интересненькое.
  2. моего собственного проекта plantuml-native-image, в котором я провожу эксперименты по компиляции PlantUML в нативный исполняемый код с помощью GraalVM native-image.

Собственно, случай во втором проекте и побудил меня к написанию статьи. Но обо всём по порядку...

Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии22

Опыт построения системных отношений «вуз-предприятие»

Время на прочтение18 мин
Количество просмотров4.1K



Ну вот и наступило время новой, совершенно неожиданной реальности… Совсем недавно слова «самоизоляция», «эпидемия», «коронавирус» относились исключительно к медицинской терминологии, и вот весь мир ушел в затвор, и мы, естественно, не остались в стороне от этих процессов. А еще отличительная черта современности: все человечество одномоментно перешло на дистанционное обучение. Школы, колледжи, вузы – все образовательные учреждения слетели с привычной орбиты и несутся в неизвестном направлении. Мы, ИТ-работодатели, привыкшие к выстроенным, отлаженным годами процессам взаимодействия с вузами, привыкшие к очень тесной, контактной ежедневной работе со студентами (нашим кадровым ресурсом), тоже сошли с рельсов, называемых годовым процессом очного обучения.


Время приостанавливается, процессы замедляются, наступает период переосмысления и обобщения накопленного в этой многолетней суете, называемой «лучшей практикой», опыта – полезного и вредного, созидательного и деструктивного. И вот как раз обобщением нашего богатого опыта ежедневной работы с вузами хотелось бы заняться в период карантина.


Каждая ИТ-компания, выходя на достаточно серьезный уровень развития, сознает неизбежность системного подхода к воспроизводству кадровых ресурсов. То есть это не тот классический подбор персонала, с которым все знакомы, а именно СИСТЕМНЫЙ ПОДХОД, то есть имеющий в своей основе набор управляющих принципов и определенный способ мышления.


Эта новая концепция применительно к проблеме воспроизводства кадровых ресурсов предполагает смену не только мышления HR-специалиста, но также инструментов и технологий поиска и подбора ИТ-кадров высокой квалификации, в первую очередь – разработчиков ПО.

читать дальше
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Корпоративные тренинги: лидеры учат лидеров

Время на прочтение8 мин
Количество просмотров3.5K


Здравствуй, Хабр! Хочу рассказать о том, как у нас, в НПО «Криста», проходят корпоративные тренинги в рамках проекта #КристаКоманда, разработанного для подготовки кадрового резерва компании.

Сначала остановлюсь на том, нужны ли тренинги вообще? Долгое время у меня был некоторый скептицизм относительно их полезности. Однако однажды я познакомился в интернете с разного рода информацией о корпоративных университетах. Оказалось, что они уже достаточно давно существуют. Компании тратят немалые финансовые ресурсы на обучение своих сотрудников посредством тренингов.

Прежде мне доводилось участвовать в различных тренингах. Как правило, ведут их достаточно квалифицированные, опытные тренеры. Обычно тренинг идёт 2 – 3 дня по 8 часов. Теоретический материал чередуется с практическими заданиями. К концу тренинга его участникам предлагается сделать небольшой проект для закрепления знаний. Казалось бы, всё было правильно, но всякий раз после участия в тренинге такого формата я ловил себя на мысли, что мне чего-то не хватило. Тренинги нашего проекта #КристаКоманда стали для меня настоящим открытием и позволили сделать шаг в профессиональном развитии. Чем же они отличаются от других тренингов?
читать дальше
Всего голосов 27: ↑11 и ↓16-5
Комментарии15

#Назаметку. Осторожно, атомарные операции в ConcurrentHashMap

Время на прочтение6 мин
Количество просмотров10K


В Java с незапямятных времён есть замечательный интерфейс Map и его имплементации, в частности, HashMap. А начиная с Java 5 есть ещё и ConcurrentHashMap. Рассмотрим эти две реализации, их эволюцию и то, к чему эта эволюция может привести невнимательных разработчиков.

Warning: в статье использованы цитаты исходного кода OpenJDK 8, распространяемого под лицензией GNU General Public License version 2.
читать дальше
Всего голосов 21: ↑19 и ↓2+17
Комментарии20

Ищем аномалии и предсказываем сбои с помощью нейросетей

Время на прочтение11 мин
Количество просмотров14K

image


Промышленная разработка программных систем требует большого внимания к отказоустойчивости конечного продукта, а также быстрого реагирования на отказы и сбои, если они все-таки случаются. Мониторинг, конечно же, помогает реагировать на отказы и сбои эффективнее и быстрее, но недостаточно. Во-первых, очень сложно уследить за большим количеством серверов – необходимо большое количество людей. Во-вторых, нужно хорошо понимать, как устроено приложение, чтобы прогнозировать его состояние. Следовательно, нужно много людей, хорошо понимающих разрабатываемые нами системы, их показатели и особенности. Предположим, даже если найти достаточное количество людей, желающих заниматься этим, требуется ещё немало времени, чтобы их обучить.


Что же делать? Здесь нам на помощь спешит искусственный интеллект. Речь в статье пойдет о предиктивном обслуживании (predictive maintenance). Этот подход активно набирает популярность. Написано большое количество статей, в том числе и на Хабре. Крупные компании вовсю используют такой подход для поддержки работоспособности своих серверов. Изучив большое количество статьей, мы решили попробовать применить этот подход. Что из этого вышло?

Читать дальше
Всего голосов 7: ↑6 и ↓1+5
Комментарии4

Кто есть кто в ИТ?

Время на прочтение13 мин
Количество просмотров35K


На современном этапе развития промышленной разработки программного обеспечения можно наблюдать многообразие производственных ролей. Их число растет, классификация усложняется с каждым годом, и, естественно, усложняются процессы подбора специалистов и работы с кадровым потенциалом. Информационные технологии (ИТ) – это сфера высококвалифицированных трудовых ресурсов и кадрового дефицита. Здесь процесс выращивания кадров, необходимость планомерной работы с кадровым потенциалом бывают значительно эффективнее прямого подбора с помощью интернет-ресурсов.

В статье рассматриваются вопросы, актуальные для специалистов по работе с персоналом ИТ-компаний: причинно-следственные связи в эволюции производственных ролей, последствия неверного толкования содержания ролей для кадровой работы в целом, а также возможные варианты повышения эффективности подбора специалистов.
Читать дальше
Всего голосов 19: ↑15 и ↓4+11
Комментарии15

SonarQube и IntelliJ IDEA: правильная интеграция

Время на прочтение7 мин
Количество просмотров38K

SonarQube — отличный инструмент для внедрения статического анализа кода в процесс разработки ПО. Он поддерживает как используемую у нас в компании Java, так и большое количество других языков программирования.


На данный момент этот инструмент плотно вошёл в нашу жизнь, следя за единым стилем кода и уберегая от самых разных видов ошибок. Поиск ошибок происходит при сборке на CI или перед принятием pull request в версионное хранилище. Все найденные ошибки отображаются в Web-интерфейсе, где можно изучать их и управлять ими.


Однако беда в том, что удобный Web-интерфейс не означает удобство по устранению найденных замечаний в коде проекта. Для того, чтобы внести исправление, приходится сначала смотреть, в каком именно файле это замечание обнаружено, потом открывать этот файл и только затем вносить исправление. Также это приводит к тому, что разработчик узнает о проблеме с очень большим отставанием (иногда анализ в SonarQube может занимать десятки минут), что не способствует поддержанию чистоты кода.


Для того, чтобы облегчить жизнь разработчикам нашей компании, использующим IntelliJ IDEA, я составил инструкцию. А в дальнейшем понял, что она может быть полезной более широкому кругу специалистов, и решил выложить её в публичный доступ.

Осторожно, много скриншотов
Всего голосов 18: ↑17 и ↓1+16
Комментарии1
Изменить настройки темы