Современные подходы к разработке программного обеспечения

  • Проектирование систем — архитектура
  • Дизайн сервиса — организация кода внутри приложения
  • Хранение и обработка данных сервиса — организация данных
  • Quality Assurance — shift left и пирамида тестов
  • Инфраструктура — IaaC, *aaS
  • Доставка на продакшен — CI/CD pipelines
  • Безопасность
  • Данные для отчетов — подходы Data Lake и Data Mesh

Код

  • неопытности разработчиков
  • продавливания бизнесом разработчиков по срокам
  • Система персонализаций и тестов версии 1.0, которая выросла из прототипа, где ее разработчик не любил лишних вызовов функций (и функции у него были по 500 строк) и не признавал понятие цикломатической сложности и важности ее ограничения
  • Система управления контентом версии 1.0, где несколько фронтендеров писали бекенд систему с API
  • Всегда ли такой подход плох? — Нет. В прототипах и RnD он может быть хорош.
  • Что делать, если мы пишем не прототип? Или пишем много прототипов? — Нам нужна более умная разработка
  • UI-слой
  • слой бизнес-логики
  • слой хранения данных

Данные

  • совместный доступ к данным
  • сложные выборки данных, когда паттерн выборки меняется
  • Atomicity — Атомарность
  • Consistency — Согласованность
  • Isolation — Изолированность
  • Durability — Стойкость
  • Basically Available
  • Soft state
  • Eventual consistency
  • согласованность данных (англ. consistency) — во всех вычислительных узлах в один момент времени данные не противоречат друг другу
  • доступность (англ. availability) — любой запрос к распределённой системе завершается корректным откликом, однако без гарантии, что ответы всех узлов системы совпадают
  • устойчивость к разделению (англ. partition tolerance) — расщепление распределённой системы на несколько изолированных секций не приводит к некорректности отклика от каждой из секций

Архитектура

Deploy

  • Capistrano, написанный на Ruby
  • Fabric, написанный на Python

Инфраструктура

Качество

Безопасность

Надежность

DataOps

Итоги

Рекомендованное чтение

  1. По проектированию и архитектуре можно изучить книги из моей статьи “Как прокачаться в проектировании программного обеспечения — список книг
  2. Плейлист из книг раздела Код
  3. Плейлист из книг раздела Данные
  4. Плейлист для раздела Devops
  5. Плейлист для раздела QA
  6. Плейлист для раздела Security
  7. Плейлист для раздела SRE
  8. Плейлист для раздела DataOps

--

--

--

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Alexander Polomodov

Alexander Polomodov

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.

More from Medium

Incremental and Iterative Development

Metafiction in François Ozon’s Dans la Maison

Remote Handyman and Estimation Service

My Experience At Bloom Institute of Technology (FKA Lambda School)