Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

Moscow Python Meetup
PRO

December 26, 2019
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Zaeb*s
    Driven
    Development

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  6. Важный дисклеймер

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. Not break things (much)
    - ревью;

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  38. Проблемы
    - много работы для девопсеров;

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  45. Спросите меня о чём-нибудь
    - https://github.com/best-doctor/ – это наш Гитхаб;
    - https://www.fb.com/melevir – это я, давайте дружить;
    - http://bit.ly/zdd_slides – это эти слайды.

    View Slide