ZDD: как устроена разработка в BestDoctor

ZDD: как устроена разработка в BestDoctor

Илья Лебедев (head of engineering в BestDoctor, евангелист MoscowPython) @ Moscow Python Meetup 71
"У нас в разработке своя атмосфера: все коммитят в мастер, ревью и ручное тестирование делают после релиза в бой, релизы происходят несколько раз в день по расписанию. Расскажу, как оно так работает, почему не ломается, про плюсы, минусы и подводные камни".
Видео: http://www.moscowpython.ru/meetup/71/zdd-in-bestdoctor/

53b0434aded1fb944ec3037c382158c1?s=128

Moscow Python Meetup

December 26, 2019
Tweet

Transcript

  1. Zaeb*s Driven Development

  2. План рассказа - как появился ZDD;

  3. План рассказа - как появился ZDD; - основные принципы и

    их следствия;
  4. План рассказа - как появился ZDD; - основные принципы и

    их следствия; - проблемы подхода;
  5. План рассказа - как появился ZDD; - основные принципы и

    их следствия; - проблемы подхода; - инструменты.
  6. Важный дисклеймер

  7. Как появился ZDD - у нас был стандартный флоу разработки;

  8. Как появился ZDD - у нас был стандартный флоу разработки;

    - его было сложно оптимизировать;
  9. Как появился ZDD - у нас был стандартный флоу разработки;

    - его было сложно оптимизировать; - и разрабатывать было не в кайф;
  10. Как появился ZDD - у нас был стандартный флоу разработки;

    - его было сложно оптимизировать; - и разрабатывать было не в кайф; - решили всё разобрать и построить заново;
  11. Как появился ZDD - у нас был стандартный флоу разработки;

    - его было сложно оптимизировать; - и разрабатывать было не в кайф; - решили всё разобрать и построить заново; - “как выглядит крутой флоу разработки?”.
  12. Как выглядит крутой флоу разработки - очень часто интегрируем код;

  13. Как выглядит крутой флоу разработки - очень часто интегрируем код;

    - часто релизим код;
  14. Как выглядит крутой флоу разработки - очень часто интегрируем код;

    - часто релизим код; - пишем много тестов;
  15. Как выглядит крутой флоу разработки - очень часто интегрируем код;

    - часто релизим код; - пишем много тестов; - автоматизируем всё, что автоматизируется;
  16. Как выглядит крутой флоу разработки - очень часто интегрируем код;

    - часто релизим код; - пишем много тестов; - автоматизируем всё, что автоматизируется; - not break things much.
  17. Очень часто интегрируем код - нужен крутой CI;

  18. Очень часто интегрируем код - нужен крутой CI; - всё

    в мастер, к чёрту бранчи;
  19. Очень часто интегрируем код - нужен крутой CI; - всё

    в мастер, к чёрту бранчи; - используем фичафлаги;
  20. Очень часто интегрируем код - нужен крутой CI; - всё

    в мастер, к чёрту бранчи; - используем фичафлаги; - можно ломать билд (ненадолго).
  21. Часто релизим код - нужен CD (хотя бы “для бедных”);

  22. Часто релизим код - нужен CD (хотя бы “для бедных”);

    - фичафлаги можно переключать руками;
  23. Часто релизим код - нужен CD (хотя бы “для бедных”);

    - фичафлаги можно переключать руками; - мануальное тестирование не блокирует релиз;
  24. Часто релизим код - нужен CD (хотя бы “для бедных”);

    - фичафлаги можно переключать руками; - мануальное тестирование не блокирует релиз; - код ревью не блокирует релиз.
  25. Пишем много тестов - разделяем разные типы тестов;

  26. Пишем много тестов - разделяем разные типы тестов; - тесты

    – часть DOD всех задач;
  27. Пишем много тестов - разделяем разные типы тестов; - тесты

    – часть DOD всех задач; - не должно быть мигающих и date-bound тестов;
  28. Пишем много тестов - разделяем разные типы тестов; - тесты

    – часть DOD всех задач; - не должно быть мигающих и date-bound тестов; - нужен код, который удобно тестировать: - аннотации типов; - чистые функции; - свои фреймворки.
  29. Автоматизируем всё - больше линтеров богу линтеров;

  30. Автоматизируем всё - больше линтеров богу линтеров; - накатка/откатка релизов;

  31. Автоматизируем всё - больше линтеров богу линтеров; - накатка/откатка релизов;

    - боты говорят людям, что делать;
  32. Автоматизируем всё - больше линтеров богу линтеров; - накатка/откатка релизов;

    - боты говорят людям, что делать; - анонимизация/накат свежего дампа.
  33. Not break things (much) - ревью;

  34. Not break things (much) - ревью; - мануальное тестирование;

  35. Not break things (much) - ревью; - мануальное тестирование; -

    ночные билды;
  36. Not break things (much) - ревью; - мануальное тестирование; -

    ночные билды; - работа над ошибками.
  37. Как выглядит крутой флоу разработки - очень часто интегрируем код;

    - часто релизим код; - пишем много тестов; - автоматизируем всё, что автоматизируется; - not break things much.
  38. Проблемы - много работы для девопсеров;

  39. Проблемы - много работы для девопсеров; - нужно время разработки

    на автоматизацию;
  40. Проблемы - много работы для девопсеров; - нужно время разработки

    на автоматизацию; - приготовьтесь много общаться.
  41. Инструменты На https://github.com/best-doctor/ много всякого. Например: - its_on – сервис

    фичафлагов;
  42. Инструменты На https://github.com/best-doctor/ много всякого. Например: - its_on – сервис

    фичафлагов; - mr_proper – проверятор чистоты функций;
  43. Инструменты На https://github.com/best-doctor/ много всякого. Например: - its_on – сервис

    фичафлагов; - mr_proper – проверятор чистоты функций; - Mario – фреймворк для бизнес-логики;
  44. Инструменты На https://github.com/best-doctor/ много всякого. Например: - its_on – сервис

    фичафлагов; - mr_proper – проверятор чистоты функций; - Mario – фреймворк для бизнес-логики; - flake8-* – килограмм плагинов для flake8.
  45. Спросите меня о чём-нибудь - https://github.com/best-doctor/ – это наш Гитхаб;

    - https://www.fb.com/melevir – это я, давайте дружить; - http://bit.ly/zdd_slides – это эти слайды.