Профессиональные навыки
Опыт работы
Июль 2015 — по настоящее время
Программист, backend-разработчик
Подольск
Март 2014 — Декабрь 2014
Genesys
Software engineer
Москва
Обязанности и достижения

Передо мной была поставлена задача разработки и замены архитектуры web-сервиса по классификации текста (ML технология Solariat/SocialOptimizr) на более эффективную.Я провёл работу по определению узких мест текущей системы, использовавшей uWSGI + Celery. Затем подготовил и испытал 3 различных варианта новой архитектуры кластера.Результатом явилась система, в которой worker-машины могли эффективно выполнять как CPU-bound задачи классификации текста используя все доступные ядра процессора, так и I/O-bound задачи (web, REST API, slow clients и т.д.) используя Green-threads.При назначении задач использовался умная балансировка (в отличии от простой round-robin стратегии). В добавок новая архитектура позволяла динамически расширять и сужать кластер машин, обслуживающих web-сервис.Технологии:- Python- Gunicorn (web server)- Gevent (green threads, async networking)- ZeroMQ (ZMQ routing, ZMQ devices)- worker discovery- load balancing- RPC- MongoDB- SciPy / Scikit-learn (ML, classification)

Январь 2013 — Март 2014
Solariat / SocialOptimizr
Software architect
Москва
Обязанности и достижения

Стартап Solariat (впоследствии был переименован в SocialOptimizr) построил технологию машинного обучения для real-time классификации текстовых сообщений в социальных сетях и интерактивного анализа накопленной статистики.Я провёл масштабный рефакторинг и чистку кода, затрагивающую, без преувеличения, все компоненты большой системы. Оптимизировал и распараллелил процесс подготовки, обучения и сравнения классификаторов, что кардинально (как минимум в 10 раз) сократило время тренировки и проверки результатов. В несколько раз увеличил скорость прохождения тестов.Так же мне удалось значительно улучшить качество классификации путём перебора и сравнения всевозможных feature-extractor функций и классификаторов (ML).Кроме того я участвовал в разработке online-классификатора и оригинальных индексов для эффективного поиска по множеству критериев.Технологии:- Python- NumPy- SciPy / Scikit-learn (ML, классификаторы, sparse-матрицы)- NLTK (RegexGrammarParser, Tagger, ...)- Pandas- Matplotlib- Multiprocessing (OS process pool)- MongoDB (sharding, replication)- ElasticSearch(позже стартап SocialOptimizr был приобретён компанией Genesys, где я и продолжил работать)

Июнь 2012 — Октябрь 2012
City Chatter
Backend architect
Москва
Обязанности и достижения

В 2012 году я был приглашён в стартап CityChatter для создания горизонтально-масштабируемой серверной архитектуры дополняющей мобильное чат-приложение.В рамках этой работы я активно участвовал в тестировании всевозможных реализаций websocket, результаты которого доступны здесь: http://eric.themoritzfamily.com/websocket-demo-...Полученная архитектура позволяла динамически расширять и сужать кластер серверов в облаке (в зависимости от загрузки системы). При этом соответствующие DNS записи автоматически обновлялись для бесшовной интеграции/деградации.Технологии:- Python / PyPy- Tornado- Fabric- Pub/Sub- Websocket- Redis- Amazon Web Services (EC2, Route53)- Linode- DNS based load-balancing- Linux TCP/IP tuning- load testing

Июнь 2004 — Июль 2010
Datafly.net
Fullstack web-developer
Москва
Обязанности и достижения

Долгое время я сотрудничал с компанией Datafly.net создавая различные web-сайты.Пожалуй, самым крупным и сложным из которых был web-сайт для японской принтинговой компании KingPrinters. При помощи этого сайта компания не только получает львиную долю заказов, но и ведёт весь сопутствующий учёт, а так же отслеживает всю технологическую цепочку.Нужно сказать, что дневной оборот у компании порядка нескольких десятков тысяч долларов – заказы и медиа-данные приходят как горячие пирожки.Технологии:- Python, C- Apache, Nginx, Gunicorn, uWSGI- Web technologies: HTML, CSS, JS, MVC, etc.- DB: MySQL, PostgresSQL, NoSQL, ORM- Memcached, Redis- Metaprogramming- Linux, FreeBSD- rsync, scp, ssh, autossh

Высшее образование
Сентябрь 1997 — Май 2001
ТНУ-Симферополь
Математики и информатики
Симферополь
Специализация и достижения

Программист