Software Architect: Best Practice по разработке архитектуры программного обеспечения
Неделя кибер-студента!
Только на этой неделе — дополнительные скидки на обучение в честь Дня студента! Подробности в чате.
Подробнее

Курсы

Курсы в разработке Подготовительные курсы
+7 499 110-61-65

Архитектор программного обеспечения

Best Practice по разработке архитектуры программного обеспечения
Подойдет ли мне этот курс?

Длительность

4 месяца

Начало

16 марта

Общая стоимость

60 000 ₽

В месяц

17 500 ₽

В кредит:

17500 ₽ в месяц

Хочу дешевле
Общая стоимость
60 000 ₽
В месяц: 17 500 ₽
В кредит: 60000 ₽
в месяц
Продолжительность
4 месяца, 4 академ. часа в неделю
Начало занятий
В марте
Что даст вам этот курс

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

Особенности программы
В процессе обучения мы рассмотрим множество нетривиальных проблем проектирования backend-приложений и их дальнейшего сопровождения. Изучим не только паттерны проектирования новых сервисов, но и освоим подходы к работе с legacy-сервисами. Научимся решать проблемы с согласованностью изменений (например, порядок применения транзакций) или с оркестрацией сервисов, что будет полезно тем, кто работает в сфере распределенных / децентрализованных систем.

Для кого этот курс
Программа создана специально для разработчиков, Team Lead и администраторов, готовых освоить Best Practice по разработке архитектуры программного обеспечения и сложных распределенных и отказоустойчивых систем.

После обучения
Выпускники на профессиональном уровне смогут планировать архитектуру и создавать масштабируемые, fault-tolerant приложения, решая нетривиальные задачи в рамках распределенных и децентрализованных систем и используя в проектах классические паттерны проектирования (шардирование, репликация, и т.д.).

Выпускной проект
Проектная работа включает в себя разработку распределенной / децентрализованной, отказоустойчивой системы. Темы для проектов:
— распределенная база данных,
— распределенный data-lake,
— реализация приватного блокчейн,
— распределенная система семантического поиска.


изучение основных проблем при проектировании архитектуры ПО

домашние задания — мини-проекты для портфолио

лучшие практики проектирования архитектуры ПО

настоящее комьюнити и постоянный фидбек преподавателей-экспертов

Преподаватели
Егор Зуев
TeamLead в компании InBit
Стас Щетинников
Михаил Кузнецов
ING Group
Вадим Тисов
Ведущий разработчик в QIWI
Владислав Родин
Более 10 лет суммарного опыта работы. Принимал участие в формировании и развитии таких стартапов, как Chronobank (teamLead), NeverEatAlone (teamLead), NeuroIO (CTO, Co-founder), Tymlez (Lead Dev). За свою карьеру Егору удалось поработать в разных отраслях, включая телемедицину, IOT, Blockchain, социальные сети, и телеметрию. Успел попробовать себя в качестве мобильного разработчика, игродела, фронт-энд разработчика, бэкенд разработчика.

Имеет звание магистра, закончил НИУ ВШЭ по направлению “информатика и вычислительная техника” с отличием. Также Егор занимался научными исследованиями при МГУ (IOT, умный дом), МГТУ Имени Баумана (Микроконтроллеры для вентиляции), Плехановском университете и МАТИ (Нейрология, определение артефактов). На текущий момент времени, Егор занимается научными исследованиями на базе НИУ ВШЭ по направлению “распределенные системы”.

Является победителем Московского отбора “imagine cup” от Microsoft (команда thinger), участником хакатона от IBM, победителем программы “innostar” (инновационные проекты), победитель программы “У.М.Н.И.К” по развитию малых предприятий (инновационные проекты). Также, Егор прошел сертификацию от Cambridge на знание английского языка (FCE, CAE).

Преподаватель
Программирует больше 10 лет. Архитектурой систем занимается уже больше 6 лет.

На данный момент директор разработки в Домклик. До этого несколько лет работал руководителем разработки в myTarget. Любит Data Science, python, golang, DDD и микросервисную архитектуру.

Руководитель программы
Fullstack developer в международной финансовой корпорации ING с главным офисом в Амстердаме (Нидерланды). Проектирует и поддерживает процессы WEB-разработки. Окончил химфак МГУ.

Программирует на JavaScript уже около 8 лет. Консультировал по JS-разработке, занимался популяризацией фронтенд-фреймворка Vue.js.

Кроме JavaScript, имеет опыт разработки на Python и Java. Выступал докладчиком на конференциях Frontend Conf Moscow, UtahJS и др.

Преподаватель
Закончил магистратуру МФТИ факультет ФИВТ. Занимается разработкой нового платежного процессинга на основе микросервисной архитектуры на Kotlin, Spring Boot, Spring Cloud, Kubernetes.

Интересы:
разработка распределенных систем, DevOps

Компании:
Сбербанк-Технологии, Альфа-Лаборатория

Сертификаты:
Oracle Certified Professional, Professional Scrum Master level 1

Работал Java- разработчиком в таких компаниях как НСПК и Яндекс. Занимался проблемами высокой нагрузки, работая как на Spring'овом, так и на Java EE'шном стеках. Улучшал инфраструктуру проектов, внедряя CI/CD и миграции БД. Строил С4- архитектурные схемы для проектов. Преподаю в Московском Физико-Техническом Институте и на портале foxminded.

Преподаватель
Егор
Зуев
Стас
Щетинников
Михаил
Кузнецов
Вадим
Тисов
Владислав
Родин
Преподаватели
Егор Зуев
TeamLead в компании InBit
Более 10 лет суммарного опыта работы. Принимал участие в формировании и развитии таких стартапов, как Chronobank (teamLead), NeverEatAlone (teamLead), NeuroIO (CTO, Co-founder), Tymlez (Lead Dev). За свою карьеру Егору удалось поработать в разных отраслях, включая телемедицину, IOT, Blockchain, социальные сети, и телеметрию. Успел попробовать себя в качестве мобильного разработчика, игродела, фронт-энд разработчика, бэкенд разработчика.

Имеет звание магистра, закончил НИУ ВШЭ по направлению “информатика и вычислительная техника” с отличием. Также Егор занимался научными исследованиями при МГУ (IOT, умный дом), МГТУ Имени Баумана (Микроконтроллеры для вентиляции), Плехановском университете и МАТИ (Нейрология, определение артефактов). На текущий момент времени, Егор занимается научными исследованиями на базе НИУ ВШЭ по направлению “распределенные системы”.

Является победителем Московского отбора “imagine cup” от Microsoft (команда thinger), участником хакатона от IBM, победителем программы “innostar” (инновационные проекты), победитель программы “У.М.Н.И.К” по развитию малых предприятий (инновационные проекты). Также, Егор прошел сертификацию от Cambridge на знание английского языка (FCE, CAE).

Преподаватель
Стас Щетинников
Программирует больше 10 лет. Архитектурой систем занимается уже больше 6 лет.

На данный момент директор разработки в Домклик. До этого несколько лет работал руководителем разработки в myTarget. Любит Data Science, python, golang, DDD и микросервисную архитектуру.

Руководитель программы
Михаил Кузнецов
ING Group
Fullstack developer в международной финансовой корпорации ING с главным офисом в Амстердаме (Нидерланды). Проектирует и поддерживает процессы WEB-разработки. Окончил химфак МГУ.

Программирует на JavaScript уже около 8 лет. Консультировал по JS-разработке, занимался популяризацией фронтенд-фреймворка Vue.js.

Кроме JavaScript, имеет опыт разработки на Python и Java. Выступал докладчиком на конференциях Frontend Conf Moscow, UtahJS и др.

Преподаватель
Вадим Тисов
Ведущий разработчик в QIWI
Закончил магистратуру МФТИ факультет ФИВТ. Занимается разработкой нового платежного процессинга на основе микросервисной архитектуры на Kotlin, Spring Boot, Spring Cloud, Kubernetes.

Интересы:
разработка распределенных систем, DevOps

Компании:
Сбербанк-Технологии, Альфа-Лаборатория

Сертификаты:
Oracle Certified Professional, Professional Scrum Master level 1

Владислав Родин
Работал Java- разработчиком в таких компаниях как НСПК и Яндекс. Занимался проблемами высокой нагрузки, работая как на Spring'овом, так и на Java EE'шном стеках. Улучшал инфраструктуру проектов, внедряя CI/CD и миграции БД. Строил С4- архитектурные схемы для проектов. Преподаю в Московском Физико-Техническом Институте и на портале foxminded.

Преподаватель
Егор Зуев о курсе «Архитектор программного обеспечения»
Необходимые знания
Знание и опыт работы в одном из следующих стеков: Java (spring / Java EE), Node.js, C# (.net), python (django), Golang, PHP
Процесс обучения
Образовательный процесс происходит ONLINE в формате вебинаров (язык преподавания — русский). В рамках курса слушателям предлагаются к выполнению домашние задания, которые позволяют применить на практике знания, полученные на занятиях. По каждому домашнему заданию преподаватель дает развернутый фидбек. В течение всего учебного процесса преподаватель находится в едином коммуникационном пространстве с группой, т.е. при обучении слушатель может задавать преподавателю уточняющие вопросы по учебным материалам.
Программа обучения
Модуль 1
Centralized Systems. Single node patterns
Модуль 2
Centralized Systems. Multi node patterns (microservices)
Модуль 3
Decentralized Systems
Модуль 4
Costs and efforts
Модуль 5
Итоговый проект
Centralized Systems. Single node patterns
Тема 1: Когда нужен монолит, а когда микросервисы и компоненты
1)сложность разработки и выявление требований
2) разные ЯП для разных задач
3) монолит, микросервисы, SOA - плюсы, минусы, отличия
4) контракты
5) 12 факторные приложения
6) DDD и clean architecture
Домашние задания: 1
1 Базовый проект
сделать простой проект на выбор:
1) чат платформу
2) интернет магазин
3) что-то свое по согласованию с преподавателем

Для базовой реализации достаточно регистрации, авторизации, базовых действий через CRUD
Тема 2: Sidecar, Ambassador, Adapter паттерны. Принципы работы.
1) что такое sidecar (расширение поведения). Когда можно использовать, а когда не стоит
2) ambassador ( proxy до сторонних сервисов). Когда можно использовать, а когда не стоит
3) adapter (универсальный логгер, универсальная система отправки уведомлений)
Домашние задания: 1
1 Уведомления
Необходимо создать 2 сервиса для рассылки уведомлений (email и push, например). Сделать над ними универсальный интерфейс
Centralized Systems. Multi node patterns (microservices)
Тема 1: Паттерны и антипаттерны декомпозиции микросервисов.
1) основные проблемы при неправильном разделении микросервисов
2) принцип loose coupling/high cohesion
3) паттерны декомпозиции
4) антипаттерны декомпозиции
Домашние задания: 1
1 Микросервисы
Необходимо поделить ваше монолитное приложение на группу микросервисов
Тема 2: Sharding. Принцип работы. Реализация паттерна на примере распределенного поиска
1) кейсы шардирования (поиск, вычисления, хранение)
2) как правильно делить данные
3) распределенный поиск (пример со sphinx)
4) map-reduce (можно на примере mongodb)
5) основные ошибки при шардировании (шардирование по плохому критерию, неравномерная нагрузка)
6) кто координирует (клиент, координатор, прокси)
Домашние задания: 1
1 Умный поиск
Необходимо придумать систему умного (семантического) поиска (например поиск товаров в интернет магазине). Систему поиска сделать распределенной и данные побить по некоторому критерию
Тема 3: Принципы организации сервисов. Типы межсервисного взаимодействия.
1) Асинхронное и синхронное взаимодействие
2) request-reply и message-based протоколы
3) оркестрация и хореография
4) анемичная модель vs богатая модель
Тема 4: введение в docker. Обзор docker compose
Тема 5: Масштабирование stateless и stateful cервисов. Паттерны кэширования в микросервисной архитектуре. Идемпотентность и коммутативность.
1) Масштабирование stateless и stateful cервисов.
2) Паттерны кэширования в микросервисной архитектуре.
3) Идемпотентность и коммутативность.
Домашние задания: 1
1 Кеширование
Нужно определить, какие данные, в вашей системе являются перманентными / или редко меняются, и которые часто запрашиваются. Необходимо для этих данных использовать один из паттернов кэширования: хранение кэша в выделенном сервисе (например, redis), кэширование внутри приложения, распределенный кэш и т.д.
Для того, чтобы дз было принято должен быть использован хотя бы один из паттернов в вашем проекте.
Тема 6: Вопросы отказоустойчивости информационной системы. Отложенные сообщения (очереди). Реализация системы уведомлений пользователей, состоящей из нескольких сервисов
1) очереди (виды очередей)
2) pipeline обработка
3) паттерн (push/pull)
4) если не очереди - двух-фазный коммит
Домашние задания: 1
1 Асинхронное взаимодействие
Нужно определить, какие сервисы в вашем приложении, должны работать асинхронно (например, отправка уведомлений). Далее необходимо выбрать очередь сообщений и перевести данные сервисы на асинхронное взаимодействие
Тема 7: подходы к организации инфрастуктуры: мониторинг, профилирование, взаимодействие между сервисами
1) мониторинг
2) профилирование
3) асинхронное взаимодействие
4) service discovery
5) service mesh
Домашние задания: 1
1 Мониторинг
Необходимо добавить систему мониторинга для вашего приложения на основе стека grafana + prometheus
Тема 8: Паттерны декомпозиции данных в микросервисах
топики:
1) Паттерны синхронизации данных между сервисами
2) CQRS.
3) Event Sourcing
Тема 9: serverless
1) что такое serverless вычисления
2) типы serverless сервисов
3) обзор lambda функций на примере AWS lambda functions и GCP cloud functions
4) паттерны проектирования на lambda функциях
Decentralized Systems
Тема 1: Общий концепт. Решаемые задачи. Примеры
1) p2p (torrent)
2) blockchain
3) ipfs
4) DHT
23 января, 20:00 — 21:30
Лектор: Егор Зуев
Тема 2: CAP теорема. Общие принципы и описание. BASE и ACID
1) виды и типы СУБД
2) base и acid (что это, где и когда использовать)
3) организация синхронизации (консенсуса в разных СУБД)
4) примеры
29 января, 20:00 — 21:30
Лектор: Владислав Родин
Тема 3: CP системы. RAFT, PAXOS, ZAB
1) принцип работы raft
2) принцип работы paxos
3) принцип работы ZAB
1 февраля, 11:00 — 12:30
Лектор: Владислав Родин
Домашние задания: 1
1 Используя любой CP алгоритм, необходимо реализовать свою базу данных (например K-V).
Тема 4: PA системы. GOSSIP, CasPAXOS. CRDT структуры
1) принцип работы gossip (scuttlebut)
2) CRDT структуры
4 февраля, 20:00 — 21:30
Лектор: Владислав Родин
Домашние задания: 1
1 Используя любой PA алгоритм, необходимо реализовать механизм обмена сообщениями (на подобии чата).
Тема 5: Практический семинар: реализация своей распределенной sql / nosql базы данных. Реализация своего оркестратора для управления задачами
1) реализация своей СУБД на основе sqlite + consensus алгоритма (PC)
2) реализация своей K-V storage + consensus алгоритма (PA)
3) реализация своего сервиса оркестрации (распределенная система)
6 февраля, 20:00 — 21:30
Лектор: Егор Зуев
Тема 6: Основы блокчейн: bitcoin
1) какие задачи решает блокчейн
2) основные компоненты
3) bitcoin (структуры, POW)
11 февраля, 20:00 — 21:30
Лектор: Егор Зуев
Тема 7: Основы блокчейн: ethereum
1) отличия от bitcoin
2) POS
3) EVM
4) смарт контракты
5) свой блокчейн
13 февраля, 20:00 — 21:30
Лектор: Егор Зуев
Тема 8: Практический семинар: создание своего приватного блокчейн на основе EVM
1) определить состав требований для разрабатываемой системы
2) выбор алгоритма согласования
3) реализация сервиса
4) интеграция с EVM
18 февраля, 20:00 — 21:30
Лектор: Егор Зуев
Домашние задания: 1
1 Крипто-платежи
Нужно создать сервис для возможности покупки товара / подписки через криптовалюту
Тема 9: основы работы DAG
1) принцип работы DAG
2) плюсы и минусы, отличия от блокчейн
3) реализации: IOTA, hashgraph
20 февраля, 20:00 — 21:30
Лектор: Егор Зуев
Costs and efforts
Тема 1: Оценка стоимости спроектированной системы. Определение рисков на разных стадиях жизненного цикла: проектирование, разработка, внедрение, поддержка и эксплуатация, утилизация
1) стоимость ресурсов (время / деньги)
2) инфраструктура
3) поиск компромисов
4) техничеческий долг
5) особенности каждого элемента цикла V-образной модели
6) TOGAF
25 февраля, 20:00 — 21:30
Лектор: Михаил Кузнецов
Итоговый проект
Тема 1: Вводный урок по итоговому проекту
27 февраля, 20:00 — 21:30
Лектор: Егор Зуев
Домашние задания: 1
1 Итоговый проект
Цель: В завершении курса студентам будет предложено выполнить проектную работу. Задание включает в себя разработку распределенной / децентрализованной, отказоустойчивой системы. 1) Консультация по проекту. Студентам будет предложено одно из заданий на выбор (либо свое): 1. распределенная база данных. 2. распределенный data-lake. 3. реализация приватного блокчейн 4. распределенная система семантического поиска Необходимо выбрать и обсудить спецификации проекта.
Тема 2: консультация по проекту
консультация по проекту. Промежуточный скрининг проектов.
12 марта, 20:00 — 21:30
Лектор: Егор Зуев
Домашние задания: 1
1 Необходимо предоставить первый прототип системы (MVP)
Тема 3: Итоговый урок
защита проекта. Защита архитектуры и реализации проекта
26 марта, 20:00 — 21:30
Лектор: Егор Зуев
Выпускной проект
Выпускной проект — возможность закрепить навыки, наработанные в процессе обучения. Это отдельная работа, на выполнение которой отводится последний месяц обучения.
Прошедшие открытые вебинары по курсу
Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.
Алгоритмы согласования
Егор Зуев
День открытых дверей
21 ноября 2019 года в 20:00
Для доступа к прошедшим мероприятиям необходимо пройти входное тестирование
Возможность пройти вступительное тестирование повторно появится только через 2 недели
Результаты тестирования будут отправлены вам на e-mail, указанный при регистрации.
Тест рассчитан на 30 минут, после начала тестирования отложить тестирование не получится!
Пройти вступительное тестирование
После обучения вы

  • получите материалы по всем пройденным занятиям (видеозаписи вебинаров, выполненные домашние задания, выпускной проект)

  • сможете планировать архитектуру и создавать масштабируемые, fault-tolerant приложения

  • получите сертификат об окончании курса

  • научитесь решать нетривиальные задачи, в рамках распределенных и децентрализованных систем

  • получите приглашение пройти собеседование в компаниях-партнёрах (в случае успешного обучения)

Дата выдачи сертификата: 13 августа 2020 года
Ваш сертификат

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «Архитектор программного обеспечения»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018г.

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «Архитектор программного обеспечения»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018г.
Общая стоимость
60 000 ₽
В месяц: 17 500 ₽
В кредит: ₽ в месяц
Продолжительность
4 месяца
Начало занятий
16 марта