Воздержание как практика программирования Архитектуры
Тезисы
Множество IT проектов окончились в лучшем случае срывами сроков, а в худшем полными провалами, из-за того, что команды слепо следовали трендам, лучшим практикам и очередным "решит все ваши проблемы" технологиям. Я знаю это не понаслышке, т.к. сам был причиной ни одного такого провала. В условиях взрывного роста количества информации, которую разработчики должны поглощать, усложнения решаемых задач и обилия технологий, очень трудно не забыть о сути нашего ремесла - создании качественных решений для удовлетворения потребностей наших заказчиков, и не впасть в эйфорию, превратив работу в resume driven процесс. Я считаю, что эта проблема очень актуальна для нашей индустрии и очень важно обращать внимание сообщества не только на технологии, но и на психологические аспекты создания решений.
Разрабатывая с нуля аналитическую систему безопасности для retail сектора в условиях ограниченных ресурсов и времени, мы были вынуждены пойти на множество компромиссов, чтобы сконцентрироваться на том, что действительно важно для нашей системы. Этот доклад делает акцент на процессе принятия решений и анализе влияния их последствий, нежели на подробном освещении деталей конкретных технологий, не минуя последних, впрочем. Система включает в себя near real-time мониторинг событий с касс, поиск патернов угроз в realtime потоке событий, корреляцию потока событий с устройств с видео потоком с камер наблюдений и инструменты для пост-анализа происшествий. Стек технологий, на котором в итоге был построен проект, включает в себя Ruby, EventMachine, Rails, RabbitMq, MySql, и немного неожиданно, ActiveX и .Net. Подробно рассмотрим почему мы остановились на EventMachine + Rails, а не написали все на Erlang, почему long-polling в нашем случае достаточен и почему не стали прикручивать WebSockets, как мы работаем с БД и почему мы не используем NoSQL базу, хотя модель данных позволяет, как мы интегрируем видео системы и почему не написали или не адаптировали видео сервер, и какого черта там делает .Net.
Прагматизм в выборе решений, зачастую "скучных" или неочевидных, позволил нам в ограниченные сроки и ограниченными ресурсами создать конкурентноспособный продукт промышленного качества. На мой взгляд, очень важно делиться положительным опытом с сообществом надеюсь, что наш пример послужит вдохновением для других.