Фух, попустило, с
братомАвтор: Eugeny__
Дата: 07.01.13
все будет ок.
Решил тут небольшой отчетик за год написать, все равно заняться нечем, да и полбутылки коньяка в организме, принятые по случаю нормального завершения ситуации с братом, заставляют высказаться.
Чуть менее чем год назад я поменял работу. Меня взяли переписывать(для дальнейшей интеграции с более современными) древний, как говно мамонта проект на плюсах, который оброс костылями настолько, что уже не лезло ни в какие ворота. Ну, про него я писал
тутАвтор: Eugeny__
Дата: 29.02.12
, ну и
тутАвтор: Eugeny__
Дата: 01.03.12
. Месяца 3 разгребал всю херню(проектной документации ноль, как оно работает и как должно, знают очень немногие, и общение частично затруднено, так как разные часовые пояса, изначальный разработчик вообще в Австралии и довольно странный человек, а копание в том коде(16 тысяч строк на С++ только в основном пректе, это же надо было СТОЛЬКО нахренячить) — это ад, треш, и угар). Написал три прототипа(один за другим, не сразу, канешн) для нового. Все три слил в мусорку, написав четвертый. Он-то и стал основой для того, что получилось. По сути, весь прототип на данный момент тоже перепилен, но именно его идея и архитектура воплотилась в жизнь. Получилось около 800 строк на жабе и скале, ну и до кучи 200 на xml, куда без него.
Сам проект, по сути, являет собой некую ноду для своеобразных распределенных вычислений, которая общается с такими же нодами по миру(я даже толком не знаю, сколько их всего, но пару сотен точно есть), а также с поставщиками исходного материала, и потребителями продуцированного. Не жуткий рокет сайнс, но и не "формочка для бухгалтерии". Больше сказать не могу, увы — коммерческая тайна и все такое. Но общая суть понятна, надеюсь.
Вобщем-то, я старался изпользовать в массе своей принцип KISS, но не фанател от этого. Получилось, что я выкинул кучу говнища(как, например, локальная БД на мускуле для каждой ноды, или пяток сторонних сервисов-хелперов), но и не писал велосипед там, где оно не надо(если есть либа, которая нужный функционал умеет — благо, в конторе был богатый выбор либ как общего назначения, так и специфических для предметной области, правда, по ходу, пришлось поправить несколько багов в них — то я эту либу использовал).
В сентябре у меня была альфа. Попросил личное окно в отделе QA, дали. К концу сентября дотестили и довели до ума базовый функционал, к концу октября — свистелки, перделки, плагины. В ноябре — предпусковое тестирование(вообще-то, можно было все сделать быстрее, но проект зависел от другого, который ранее начала декабря не мог быть запущен). Мне уже скучновато было. Провели true-failover тестирование(это когда у ноды отламывают в самые нужные моменты сеть, доступ к ФС, доступ к мылу, доступ к activemq, внезапные ребуты, краш одного из рабочих процессов, коррапт рабочих файлов, феерически кривые входные данные, а нода должна как минимум сообщить о том, что с чем-то конкретным что-то не так, выслать все данные о неполадке, но продолжить работу в нормальном режиме без вмешательства извне). Провели нагрузочное, стандартно 10х от планируемой нагрузки. Но отработало очень быстро, мне захотелось узнать предел. Попросил Олега(одного из вменяемых тестеров) выделить время, провести чуть более другое нагрузочное. Для этого нужна подготовка. Но результаты оказались забавные. 10х — летаем. 50х — летаем. 100х — да не вопрос. На 200х мы добились скорости, которую дает изначальный проект, который переписывался, собсно(это не к холивару жаба-плюсы, а к тому, что если по-нормальному писать, а не через жопу, то можно достичь гораздо больших результатов, чем из-за выбора технологии). 500х. Уже медленнее, но пашет. 1000х. Заметные тормоза, но ошибок нет. На 2000х(двухтысячекратная от номинальной нагрузка, не шуточки) свалилась тестовая винда на виртуалке на синий экран по 0x00000077: KERNEL_STACK_INPAGE_ERROR. Учитывая, что хостовая система выжила, это означало банальную нехватку системных ресурсов. Я предложил попробовать 2000х на линухе, так как он постабильнее в этом плане будет, но мне сказали что я упоротый псих, и у них тут куча проектов и на номинале-то не пашут толком, а я тут со своим нагрузочным задалбываю...
В начале декабря запустились. На это выделялось от недели до месяца, но я от скуки уже заранее написал детальные доки по деплою, договорился с админами. Заняло полдня. Потом я пошел домой, и потестировал продакшн(он в амазоновском облаке) с домашнего весьма скоростного инета(до амазона ровные 100 мегабит туда и назад, красивенько так).
Весь декабрь страдал херней, докапывая прожект менеджера, когда же мы что-то дальше делать будем. А что-то дальше — интеграция с проектом другой ноды, а она, хоть и обещана, но не готова. У них там аврал, треш, угар. От меня прожект-манагер отмахивается, если остаюсь дома — тупо подтверждает часы работы из дома(хотя делать мне радикально нечего, я и не делаю). Помог народу с проблемой нехватки памяти в жабовской куче, просто потому что это хотя-бы интересно. Пол месяца пробухал. На первые рабочие дни января опять же, записал в трекере, что, типа, работаю из дома, все подтвердили. Сегодня спрашиваю прожект манагера — мож чего сделать? Отмахивается, тупо подтверждает часы. Я уже даже и поработать хочу, но, видимо, не судьба, пока у народа аврал не закончится. Ну я понимаю, мой проект по графику идет после того, который они щас запускают, но мне-то что делать? Я уже перечитал всего Мартина(песнь льда и пламени), вставил свои фразы во все интересные срачи на рсдн, пересмотрел в кинотеатрах все интересные фильмы, прошел еще раз Скайрим, докачался в третьей диабле до 58 уровня, устроил трындец в личной жизни, посадил печень... Я вот сейчас понимаю, что люблю программирование, мне без него, оказывается, скучно.
Ах, да. Изначального разработчика после разбора полетов уволили к чертям. Мелочь, а приятно.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.