May 11, 2013 01:14
Достался мне тут один сайтец в наследиеице на Django.
Вот казалось бы, есть классная технология, большое комьюнити, куча статей, да и область 1 в 1 для такого инструмента! Но нет, любую хорошую идею можно обгадить. Потому меня и позвали. Надо будет в Линкедине написать, что я ассенизатор-программист. Разгребаю говно за других.
Меня удивляет пару моментов. Почему-то люди считают, что они вечные. Так в любой области. А с приходом понятия фриланса, похоже, все только усугубилось. (Ладно я работаю в большом кровавом энтерпрайзе, где люди трудятся по 20 лет, а потом их нельзя уволить, потому что они вроде бы как дико опытные, но их опыт, увы, остановился эдак лет 8 назад.) Такое ощущение, что все писалось для непереносимости проекта. Я король горы, знаю как ЭТО работает, поэтому если не заплатите - вам пипец. Документация? Какая документация?! И так обещали сделать сайт через 3 месяца, а сдали через 6. Глючный.
Почитав, сколько существует всяких плюшек для развертывания Django сайтов, я до сих пор не могу понять одну простую вещь: как ЭТО деплоилось?!
1) Вроде есть WSGI. Вроде бы правильно запихнули в питон. Но баш-скрипт зачем?! Неужели демон крутится, и проверяет запущен ли?
2) Привязка к одному пути. Да, по всему коду раскидано /home/myuser/project. При чем этот же путь не захардкожен в одном месте, а гуляет по всему проекту. Бессовестно! В скрипте WSGI даже 6 раз скопипастчен.
3) requirments.txt пришлось выдирать зубами. В принципе, хорошо, что он есть. Плохо, что в нем конфликты. И получить такой же virtualenv у меня не вышло. Про поломанные зависимости молчу
4) Доставляют файлы test.py в каждом app. Самое обидное, что тестируют эти тесты 2 + 2 = 4
5) Сайт уже год работает в дебаг режиме. При попытке выключить дебаг режим, сайт автоматом начинает отображать мобильную версию
6) __localsettings.py. В котором настройки к production базе данных. КАКОГО Х*Я?! Ну есть же столько путей, как сделать это красиво. Ну нахрена такое городить
7) У меня после pip freeze написано django==1.4. А структура проекта от 1.3. Как оно работает?!
8) И последнее, самое ужасное. НЕТУ СИСТЕМЫ КОНТРОЛЯ ВЕРСИЙ. Как?! Почему?!??
Из-за последнего пункта я попал в нелепую ситуацию. Нужно было СРОЧНО сделать изменение в проекте. Под рукой был рабочий svn. Вот туда я локально и временно, для себя ЛИЧНО положил проект. Теперь же мне хочется вносить изменения быстро, без копирования файлов по ssh вручную, сравнивая чего я наменял последний раз(хорошо хоть изменения затрагивали максимум 3 файла) посредством svn diff.
Присматриваюсь к Fabric. Читаю Two scoops of Django. Дочитываю Pro Git. Развертывать мне хочется одной простой коммандой из фабрика - clone репозитория. Но где этот репозиторий положить?! Прямо на серваке с сайтом? Безумие. На github не вывалишь, т.к. не опенсорс. Пока думаю над BitBucket - в нем есть приватные репозитории. Но опять же, как временное решение, придется делать репозиторий прямо на серваке сайта. Радует, что он пока не особо нагружен.
Обидно, что приходится думать о ДевОпс. И я молчу про CI. Обидно, что нету ни документации, ни тестов. При том, что в джанго для этого есть ВСЕ и даже больше. И совсем обидно за такие банальные вещи, как система контроля версий и захардкоженный путь в файлах к каталогу с проектом. Не знаю даже за что хвататься :\
Программирование