воскресенье, 26 января 2014 г.

[prog] Немного информации о развитии архитектуры/инфраструктуры eBay с эмоциональными комментариями

Участвуя в обсуждении вчерашней заметки про перспективы .NET вспомнил, что когда-то в какой-то презентации об эволюции архитектуры eBay я видел примеры миграции платформы с Windows на Unix. Решил найти эту презентацию и утащить к себе в блог. Вот она:

Попутно нашлось еще несколько презентаций на эту тему. Для меня они оказались интересными не смотря на свой уже довольно почтенный возраст, все-таки 2007 и 2008-2009 годы -- это для ИТ очень давно :)

Upd. Еще одна презентация нашлась:

Так же нашлась PDF-ка из разряда маркетингового булшита success story, рассказывающая о том, как специалисты Sun помогали eBay создавать новую архитектуру на базе J2EE: eBay Creates Technology Architecture for the Future.

Кстати говоря, последняя PDF-ка заслуживает прочтения, т.к. дает больше информации о том, как же именно eBay переходил от старой разработки на C++ к новой архитектуре на Java. Подозреваю, что процесс был непростой и болезненный. В eBay было свое подразделение разработки с более чем 100 сотрудниками, в основном C++ разработчиками. Специалисты из eBay проанализировали технологии Java и .NET и остановили выбор на Java. Но, т.к. своих спецов по Java у них практически не было, то была нанята команда консультантов из Sun. Эти консультанты помогали как в разработке будущей архитектуры, так и в выборе подходящих инструментов (например, IBM WebSphere в качестве сервера приложений), а так же обучали разработчиков eBay (не только связанным с Java вещам, но и технологиям проектирования и разработки ПО вообще). И, как мне представляется, привлечение этой команды консультантов стало одним из факторов успеха при разработки и внедрении нового поколения софта eBay.

Почему я думаю, что этот процесс был болезненным? Потому, что мне доводилось оказываться в роли руководителя сидящей на поддержке старого решения команды, тогда как всеми явно осознается необходимость создания чего-то нового, более мощного и удобного. Да только текущая загрузка команды не позволяет это сделать в нормальном режиме. Полагаю, что на рубеже 1999-го и 2000-го годов в eBay было именно так: все силы уходили на поддержание написанного на C++ монстра (ISAPI DLL-ка, собираемая из 3.3 миллионов строк C++ кода!). Поэтому приглашение сторонней команды экспертов выглядит разумным шагом.

Однако, я не могу поверить в то, что в такой большой команде C++разработчиков eBay не оказалось ни одного инициативного разработчика с собственными идеями о перестройке архитектуры eBay. Наверняка были люди, которые задолго до 1999-го понимали, что ISAPI DLL -- это тупиковый путь, что нужно искать альтернативы. Наверняка эти альтернативы обсуждались между своими и, я просто уверен в этом, наверняка о них докладывалось руководству. Только в итоге руководство решило нанять консультантов-тренеров со стороны. Знакомая картинка... :(

Ну и еще один момент, специально для желающих похоливарить и пообсуждать, какое же говно этот ваш C++. Разработчики eBay столкнулись с внутренним ограничением компилятора на количество методов класса! Подозреваю, что речь может идти о Microsoft Visual C++ 6.0, с коим мне пришлось провести в обнимку очень много времени. Так же я прекрасно представляю возможности Java времен 1998-2001 годов. И можете делать со мной что хотите, но я не могу поверить, что в Java были и/или есть языковые возможности, не позволяющие разработчику дойти до такой степени маразма, а именно: впихнуть в один класс столько методов, чтобы компилятор был не в состоянии скомпилировать этот класс из-за своих собственных ограничений. Таких возможностей в Java не может быть в принципе. Единственный фактор, который может привести к возникновению таких проблем в C++ -- это давление со стороны менеджмента: нефиг тут думать, у нас производственные планы горят, давай-давай, time-to-market matters и пр. менеджерское дерьмо... Чтобы потом за большие деньги нанять сторонних консультантов и переписать все к едрене-фене.