Your SlideShare is downloading. ×
Как мы делаем раскладку Календаря@Mail.Ru
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

768

Published on

Moscow Django MeetUp №7 …

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
768
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×