Browse Category

Engineering Practices

DevOps за пределами разработки и эксплуатации

Начавшееся как союз Dev и Ops, DevOps-движение постепенно распространилось на организации в целом, а затем нашло выход и за их пределы. Ниже несколько кейсов, в которых принимают участие не только разработчики и админы, но и другие отделы.

 

Keep Reading

Share

Метафора системы и архитектура

У архитектуры множество определений. Одно из наиболее емких — представление о компонентах системы и их взаимосвязях между собой. В качестве компонентов могут выступать как достаточно крупные куски системы, например, интернет-банк, мобильный банк, смс-банк, процессинг, так и более мелкие, — компонент по работе с карточными лимитами, модуль конвертации валют, компонент уведомлений.

Разработчикам, явно или неявно, приходится проводить анализ архитектуры для того, чтобы понять, в каком месте системы необходимо добавить новую функциональность, с чем будем взаимодействовать новый компонент или на работу каких компонентов может повлиять тот, в который мы вынуждены внести изменения.

Водопадный подход максимально пытался обеспечить целостность архитектуры за счет BDUF/BRUF (Big Design Upfront/Big Requirement Upfront). Это были два грандиозных по своим масштабам этапа — сбор требований и проектирование, плавно перетекающее в детальный дизайн. Выхлопом этапов были железобетонные требования и нерушимый, крепкий как скала дизайн.

В Agile все несколько иначе — мы работаем короткими итерациями, каждая из которых включает в себя и уточнение требований и дизайн и тестирование. BDUF/BRUF не подходит ни под каким углом.

Как же при таком подходе обеспечить целостность архитектуры системы?
Keep Reading

Share

Зачем проводить Code Review?

Linus’s Law: «given enough eyeballs, all bugs are shallow»

«Зачем проводить Code Review?», — вопрос достаточно распространенный.

Ниже мне хотелось бы упомянуть о двух важных аспектах, о которых часто забывают.

Wikipedia о code review нам говорит следующее: «улучшение качества программного продукта и совершенствование навыков разработчика. …могут быть найдены и устранены такие проблемы, как ошибки в форматировании строк, состояние гонки, утечка памяти и переполнение буфера, что улучшает безопасность программного продукта»

Всё верно, но ревью кода решает еще две очень важные задачи, которые невозможно решить никаким иным путем:

  • Синхронизация ментальных моделей
  • Распространение знаний о коде

Все остальное: качество, корректность и т.д. так или иначе, костылями и/или автотулами можно сделать, а вот понять код можно только просмотрев код и никак иначе.
Keep Reading

Share