Как мы делаем раскладку Календаря@Mail.Ru

1,294 views
1,202 views

Published on

Moscow Django MeetUp №7
21 ноября 2012
http://moscowdjango.ru/meetup/7/calendar-layout/

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,294
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Как мы делаем раскладку Календаря@Mail.Ru

  1. 1. Как мы делаемраскладку Календаря Владимир Рудных
  2. 2. Обо мне• тимлид Календаря Mail.Ru• pythonista• бывший перловик• ленивый программист Moscow Django MeetUp №7
  3. 3. Календарь Mail.Ru• calendar.mail.ru• написан на Python• Django framework• PostgreSQL• Rich Internet Application• RESTful API• шаблонизация на клиенте (Fest) Moscow Django MeetUp №7
  4. 4. calendar.mail.ru Moscow Django MeetUp №7
  5. 5. Разработка в Mail.Ru Тестовое Productionокружение Офисная сеть (разработчики) Moscow Django MeetUp №7
  6. 6. Раскладка проектарепозиторий много git серверы серверы серверов как? Moscow Django MeetUp №7
  7. 7. Раскладка проектарепозиторий "rsync" много git серверы серверы серверов ? Ахаха, мы же не перловики! Moscow Django MeetUp №7
  8. 8. Раскладка проекта Moscow Django MeetUp №7
  9. 9. Раскладка проекта Вся мощь Python с нами! Moscow Django MeetUp №7
  10. 10. Раскладка проекта• setuptools• distribute• easy_install• pip Moscow Django MeetUp №7
  11. 11. Раскладка проекта• python setup.py install• pip install package• pip install -r requirements.txt Moscow Django MeetUp №7
  12. 12. Раскладка проекта NO WAY! Moscow Django MeetUp №7
  13. 13. Раскладка проектаЗагаживать систему пакетами?Что делать с зависимостями? Как отслеживать их версии? Moscow Django MeetUp №7
  14. 14. Раскладка проектаА если нужна другая версия Python? А что делать, если нужно откатиться? Что делать с зависимостями при откате? Moscow Django MeetUp №7
  15. 15. Раскладка проекта АД Moscow Django MeetUp №7
  16. 16. Раскладка проекта Вспоминаем про virtualenv Moscow Django MeetUp №7
  17. 17. Vitrualenv• весь проект в одном месте• со всеми зависимостями• любые версии Python и модулей• не засоряет систему Moscow Django MeetUp №7
  18. 18. Раскладка проекта Но как раскладывать? Makefile? Fabric? RPM*!* RPM, DEB или любой другой формат пакетов Moscow Django MeetUp №7
  19. 19. RPM• весь проект со всеми зависимостями• в одном пакете• накатить/откатить - без проблем• версионность пакетов• версионность отдельных модулей• не засоряет систему• админы умеют (привет, CPAN!) Moscow Django MeetUp №7
  20. 20. RPMКак собирать? Jenkins CI Moscow Django MeetUp №7
  21. 21. сборка RPM• пишем fabfile для запуска сборки• пишем SPEC-файл для RPM• заводим задачу в Jenkins CI• ...• пушим ветку в git, получаем RPM: - git master -> RPM stable - git prerelease -> RPM testing Moscow Django MeetUp №7
  22. 22. Jenkins CI Задачи в Jenkins:• development - все ветки• prerelease - ветка prerelease• release - ветка master Moscow Django MeetUp №7
  23. 23. плюшки Jenkins• автоматическая сборка RPM• continuous integration• тесты• lint• coverage• change log• мгновенная обратная связь Moscow Django MeetUp №7
  24. 24. Jenkins CI Moscow Django MeetUp №7
  25. 25. Jenkins CI: report Moscow Django MeetUp №7
  26. 26. Jenkins jobs dev prerelease release pylint ✔ flake8 ✔ ✔coverage ✔ ✔ tests ✔ ✔ ✔ RPM ✔ ✔ Moscow Django MeetUp №7
  27. 27. Раскладка проекта Разложили, что дальше?Как узнать, что всё хорошо? Нужен мониторинг! Moscow Django MeetUp №7
  28. 28. Мониторинг• метрики в Graphite (+Statsd)• ошибки в Sentry• дежурные администраторы• обращения пользователей в службу поддержки Moscow Django MeetUp №7
  29. 29. Graphite Что будем мониторить?Да всё будем мониторить! Moscow Django MeetUp №7
  30. 30. Graphite• количество запросов• тип запросов• время выполнения• время ожидания• таймауты• количество ошибок• выкладки и рестарты Moscow Django MeetUp №7
  31. 31. Graphite Где будем мониторить?Да везде будем мониторить! Moscow Django MeetUp №7
  32. 32. Graphite• клиент (браузер)• сервер (cpu, memory, hardware)• nginx• uwsgi• приложение• БД• обвязка (очереди, рассыльщики) Moscow Django MeetUp №7
  33. 33. Раскладка проекта Разложились. Есть ошибки. Что делать? Moscow Django MeetUp №7
  34. 34. Раскладка проекта Просить админов погрепать логи? Moscow Django MeetUp №7
  35. 35. Раскладка проекта Moscow Django MeetUp №7
  36. 36. Раскладка проекта Sentry! Moscow Django MeetUp №7
  37. 37. SentryПолучаем все ошибкиFrontend + Backend в удобном виде. Realtime! Moscow Django MeetUp №7
  38. 38. Sentry• url ошибки• данные запроса (request)• полный stacktrace ошибки• версии модулей• информация о пользователе (email, браузер, ОС) Для каждой ошибки! Moscow Django MeetUp №7
  39. 39. Sentry За исключением приватных данных пользователя =)“password”: “********” Moscow Django MeetUp №7
  40. 40. Sentry Moscow Django MeetUp №7
  41. 41. Sentry Moscow Django MeetUp №7
  42. 42. Раскладка проекта Но как избежать ошибок? Moscow Django MeetUp №7
  43. 43. Раскладка проекта Тестирование + Code review Moscow Django MeetUp №7
  44. 44. Тестирование• nose• factory_boy• mock• Selenium (coming soon...) Moscow Django MeetUp №7
  45. 45. Тестирование• модульное• функциональное• регрессионное• альфа (тестировщики)• бета (пользователи) Moscow Django MeetUp №7
  46. 46. Code reviewPhabricator Moscow Django MeetUp №7
  47. 47. Code review• подписка на коммиты (с фильтрами)• аудит и рецензирование коммитов• просмотр кода и diff’ов Moscow Django MeetUp №7
  48. 48. Подведём итоги Moscow Django MeetUp №7
  49. 49. Best practice• пишем на Python• используем virtualenv• менеджеры пакетов ОС (RPM)• автоматизируем процесс (Jenkins)• мониторим всё и вся• тесты, тесты, тесты!• обратная совместимость кода• code review, code style + lint Moscow Django MeetUp №7
  50. 50. Ссылки• Virtualenv: virtualenv.org• Jenkins: jenkins-ci.org• Graphite: graphite.wikidot.com• Statsd: github.com/etsy/statsd• Sentry: getsentry.com• Phabricator: phabricator.org Moscow Django MeetUp №7
  51. 51. Контакты• Владимир Рудных• rudnyh@corp.mail.ru• github.com/dreadatour• dreadatour.habrahabr.ru Moscow Django MeetUp №7

×