- PVSM.RU - https://www.pvsm.ru -
2 ноября 2015 года у нас в компании прошел первый хакатон. Он проходил два дня в рамках только нашего отдела. В 17:00 второго дня всем необходимо было продемонстрировать результаты своей работы. Темы можно было предлагать любые. В нем приняли участие четыре команды. Наша команда была под номером — 3. О нашем опыте я и расскажу. Кому интересно добро пожаловать под кат.
Наша команда называлась Illumi и состояла из четырех человек. Люди в нашей команде были разные, примерный расклад по скиллам: фронтенд-разработчик, который переметнулся на темную сторону бэкенда; три бэкенд разработчика, которые перешли на светлую сторону DevOps’a и на текущий момент в большей своей степени занимаются автоматизацией процессов. Мы все непосредственно занимаемся программированием. Заниматься этим же на хакатоне не совсем хотелось. Поэтому решили, что на хакатоне мы будем заниматься воплощением интеграции кода с железом. Когда ты сначала программируешь, а потом происходит некий физический процесс — это действительно здорово. Если этим заниматься каждый день, скорее всего, не будет такого же кайфа).
Знания нашей команды в области программирования под Arduino, а так же законов Ома, Киргофа, Кулона и т.п. ограничивались университетскими и школьными. Поэтому в течение месяца мы подтягивали матчасть и собирали нашу будущую систему по кусочкам. Причем вначале мы понимали концепцию того, что хотим получить, но в действительности определились с реализацией только за три дня до начала хакатона.
Цель хакатона у нас была очень простая — получить море удовольствия от реализации нашей задумки. Уже целый месяц наши разговоры на перекурах, обедах и даже в личное время были о нашем проекте. Здесь наверное добавить больше нечего.
Разработать систему визуального оповeщения о необходимых событиях. Например, при критической ошибке на сервере загорается сигнальная лампа.
Традиционные системы оповещения (письма, смс, сообщения в различных средствах массовой связи) не удовлетворяют по скорости и значимости, а также в значительной степени зависят от различных внутренних и внешних средств доставки, человеческого фактора. Поэтому расширение системы оповещение средством свето-визуальной индикации, является решением обозначенной выше проблемы и в полном объеме соответствует нормам Международного Права ©.
Данное решение призвано ускорить реакцию на сформулированную ранее проблему, в целом повышая качество предоставляемого сервиса. Также, не стоит упускать из виду социальный аспект. Люди, впервые столкнувшиеся с подобные решением, неизбежно будут проявлять интерес, что как следствие окажет благотворное влияние на систему коммуникации внутри компании в целом.
Простыми словами мы решили реализовать систему, которая будет нас нотифицировать о факапах на продакшене. Поддерживается два типа нотификаций: первая, когда что-то упало на проде у нас загорается проблесковый маяк красного цвета; вторая, когда какая-то характеристика выходит за пределы допустимого, загорается проблесковый маяк желтого цвета. Для реализации мы использовали:
Хакатон стартовал 2 ноября в 10:00, общим фото, блинами и Dr. Pepper. Не обошлось и без опоздавших, не все смогли придти к 10 утра в понедельник).
Как нам казалось, к началу хакатона мы были готовы. Мы понимали, что собираемся делать, как мы это будем делать, закупили все необходимые компоненты, распланировали шаги и понимали, что в конце каждого шага у нас должен быть готовый результат — итеративный подход. Была видео трансляция того, что мы будем делать, поэтому мы подготовили план по интерактиву с пользователями, в этом нам помог итеративный подход. В первый день мы реализовали прототип на стробоскопах. В середине первого дня мы уже имели рабочий прототип, с которым каждый наблюдающий за нами, мог поиграться, а мы продолжали работать. Для описания разрабатываемой системы, мы использовали подход 4C (Context, Container, Component, Class). В наших условиях мы не опускались ниже уровня Container. Выложили в паблик итерфейс с 4 кнопками включить выключить, синий желтый стробоскоп. Тут нас настиг фейл с интерактивом, в видео трансляции была задержка примерно 30 секунд поэтому интерактив получился не совсем интерактивным, но всем, кто пробывал управлять удаленно нашими стробоскопами, понравилось. Даже был момент, когда один из наших сотрудников написал скрипт, который постоянно выключает лампы, и ни кто не мог их включить. Пришлось найти и пофиксить человека). Так же в самом начале возникла проблема с различными фаерволами и настройками сети, о которых мы даже не думали, потратили часа 3-4 на ее решение.
Разошлись мы где-то в начале 10 вечера. Успели большую часть запланированного на первый день.
Второй день мы начали в 8 утра. Мы рассчитывали, что в этот день мы отделаемся только физической реализаций нашей системы. Монтаж и установка придумывались на ходу. Резали, сверлили, скручивали, изолировали на месте, паять в офисе не разрешили). Мы придерживались модульной структуры нашей системы и решили сделать кнопку селф-теста, которая включает наши проблесковые маяки на 5 секунд каждый. Это чуть не стало роковой ошибкой. Пришлось потратить ~2 часа на освоение и отладку работы с кнопкой, но эффект того стоил. Теперь систему можно было тестировать, просто подключив к питанию и нажимая кнопку. Еще одна проблема, с которой мы столкнулись, это странное поведение Arduino. Иногда она не хотела реагировать на наши команды. В долгих поисках решения мы поняли, что ей необходимо какое-то время на инициализацию, и с ней нельзя работать по схеме клиент-сервер. В этом случае клиенту придется всегда ожидать инициализации, а это ~2 секунды. Чтобы решить эту проблему, реализовали простой сокет сервер на PHP, который при старте инициализирует Arduino и после позволяет прозрачно общаться с ней без необходимости инициализации соединения. Чуть позже также реализовали сокет-сервер на Erlang’e, но в итоге все равно при демонстрации использовали PHP-сервер, т.к. сильных Erlang спецов у нас нет и рисковать на демо, не хотелось.
Час X был в 17:00 к этому времени у нас было все готово и мы даже пришли самые первые в демонстрационную комнату, чтобы все подготовить. На демо мы показали, что создали пульт по дистанционному управлению световыми маяками. Можно было с мобильника зайти на url и управлять ими. Пока я рассказывал о том, что мы сделали и как, каждый в зале мог поиграться с нашим решением и это уже был полный интерактив!
Наша система в сборе (фото / видео):
Всем удачи!
Автор: devKP
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/web-razrabotka/115781
Ссылки в тексте:
[1] Image: https://habrastorage.org/files/6f9/4f7/d10/6f94f7d108cf443086244fa12dca8ff5.jpg
[2] Image: https://habrastorage.org/files/a13/3b1/698/a133b16987b24e5e87ddbce43d9a7441.jpg
[3] Image: https://habrastorage.org/files/696/3d7/e1d/6963d7e1dba748d1b4fdcef5e4bbe981.jpg
[4] Источник: https://habrahabr.ru/post/279887/
Нажмите здесь для печати.