Software Architect: Best Practice по разработке архитектуры программного обеспечения
Новогодняя распродажа!
Все курсы со скидкой 30%. Торопитесь!
Подробнее

Курсы

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

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

Best Practice по разработке архитектуры программного обеспечения

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

4 месяца

Продолжительность
4 месяца, 4 академ. часа в неделю
Что даст вам этот курс

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

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

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

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

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


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

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

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

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

Преподаватели
Андрей Шиллинг
Вадим Тисов
Ведущий разработчик в QIWI
Денис Тисов
Sergey Kuznetsov
Егор Зуев
TeamLead в компании InBit
Михаил Кузнецов
ING Group
Стас Щетинников
Главный Архитектор Решений
Ак Барс Цифровые Технологии

В настоящее время - работает в областях корпоративной и solution архитектуры в условиях гибкой продуктовой разработки
Эксперт в области архитектуры и разработки программного обеспечения
Спикер на профильных конференциях
Прикладной опыт в отраслях земельного кадастра, нефтедобычи и финансов
Общий стаж в IT - 15 лет

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

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

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

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

Software developer в N26, Берлин, Германия

Закончил магистратуру МФТИ на факультете ФИВТ. Сейчас учавствует в запуске успешного финтех стартапа Германии “N26” (с оценкой суммарной капитализации 3.5 миллиарда долларов) в новых странах мира. Любит находить проблемы в существующих приложениях и адаптировать их под микросервисную архитектру. Преподавал курс по языку Java в Яндекс

Интересы:
Distribted systems, DevOps, Machine Learning

Компании:
Сбербанк-Технологии, Яндекс

Сертификаты:
Certified Kubernetes Application Developer, AWS Certified Cloud Practitioner

Работает в IT с 2005 года, есть опыт работы в таких компаниях как Hewlett-Packard, Ford Motor Company, General Motors.
На данный момент является Senior Java Developer в Epam Systems (Team Lead и RM).

Опыт преподавания с 2015 года - 5 лет Khasang, 2 года Epam Systems - по направлению Java Core, Spring + Hibernate, Java concurrency, Java 8(functional), development in team, architecrute.

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

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

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

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

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

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

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

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

Андрей
Шиллинг
Вадим
Тисов
Денис
Тисов
Sergey
Kuznetsov
Егор
Зуев
Михаил
Кузнецов
Стас
Щетинников
Преподаватели
Андрей Шиллинг
Главный Архитектор Решений
Ак Барс Цифровые Технологии

В настоящее время - работает в областях корпоративной и solution архитектуры в условиях гибкой продуктовой разработки
Эксперт в области архитектуры и разработки программного обеспечения
Спикер на профильных конференциях
Прикладной опыт в отраслях земельного кадастра, нефтедобычи и финансов
Общий стаж в IT - 15 лет

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

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

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

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

Денис Тисов
Software developer в N26, Берлин, Германия

Закончил магистратуру МФТИ на факультете ФИВТ. Сейчас учавствует в запуске успешного финтех стартапа Германии “N26” (с оценкой суммарной капитализации 3.5 миллиарда долларов) в новых странах мира. Любит находить проблемы в существующих приложениях и адаптировать их под микросервисную архитектру. Преподавал курс по языку Java в Яндекс

Интересы:
Distribted systems, DevOps, Machine Learning

Компании:
Сбербанк-Технологии, Яндекс

Сертификаты:
Certified Kubernetes Application Developer, AWS Certified Cloud Practitioner

Sergey Kuznetsov
Работает в IT с 2005 года, есть опыт работы в таких компаниях как Hewlett-Packard, Ford Motor Company, General Motors.
На данный момент является Senior Java Developer в Epam Systems (Team Lead и RM).

Опыт преподавания с 2015 года - 5 лет Khasang, 2 года Epam Systems - по направлению Java Core, Spring + Hibernate, Java concurrency, Java 8(functional), development in team, architecrute.

Егор Зуев
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).

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

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

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

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

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

Егор Зуев о курсе «Архитектор программного обеспечения»
Необходимые знания
Знание и опыт работы в одном из следующих стеков: 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: Stateless services. Принцип работы. Реализация паттерна на примере обычного REST сервиса и балансировщика
1) как правильно делить микросервисы (бизнес логика). Паттерны и Антипаттерны
2) принцип организации сервисов (БД, взаимодействие, очереди)
3) пример обращения к разным инстансам через балинсирощвик, и возможные проблемы конкурентного доступа (например запись в БД)
4) бд как единая точка синхронизации
Домашние задания: 1
1 Микросервисы
Необходимо поделить ваше монолитное приложение на группу микросервисов
Тема 2: State services. Принцип работы. Реализация паттерна на примере REST сервиса с сессиями
1) Что хранить в state
2) in-memory бд как хранилище (redis, tarantool)
3) привязка к инстансу (веб сокеты, пример - чат)
18 декабря, 20:00 — 21:30
Лектор: Стас Щетинников
Домашние задания: 1
1 Realtime
Необходимо добавить к вашему приложение поддержку realtime (например, чат, или уведомления, или интерактивное обновление информации)
Тема 3: Sharding. Принцип работы. Реализация паттерна на примере распределенного поиска
1) кейсы шардирования (поиск, вычисления, хранение)
2) как правильно делить данные
3) распределенный поиск (пример со sphinx)
4) map-reduce (можно на примере mongodb)
5) основные ошибки при шардировании (шардирование по плохому критерию, неравномерная нагрузка)
6) кто координирует (клиент, координатор, прокси)
21 декабря, 11:00 — 12:30
Лектор: Вячеслав Лапин
Домашние задания: 1
1 Умный поиск
Необходимо придумать систему умного (семантического) поиска (например поиск товаров в интернет магазине). Систему поиска сделать распределенной и данные побить по некоторому критерию
Тема 4: Caching and sidecar. Принцип работы. Реализация паттерна на примере механизма кеширования запросов до сервиса
1) зачем нужно кеширование (скорость обработки запросов, экономия ресурсов и т.д.)
2) централизованное кеширование (например, на уровне сервиса)
3) распределенное кеширование (хеширование, разреление по хешу,бакеты)
25 декабря, 20:00 — 21:30
Лектор: Стас Щетинников
Домашние задания: 1
1 Кеширование
Нужно определить, какие данные, в вашей системе являются перманентными / или редко меняются (например, информация о товаре для интернет магазина). Необходимо разработать сервис кеширования (sidecar) для этих данных, с возможностью задавать правилакеширования (например ttl).
Тема 5: Вопросы отказоустойчивости информационной системы. Отложенные сообщения (очереди). Реализация системы уведомлений пользователей, состоящей из нескольких сервисов
1) очереди (виды очередей)
2) pipeline обработка
3) паттерн (push/pull)
4) если не очереди - двух-фазный коммит
28 декабря, 11:00 — 12:30
Лектор: Михаил Кузнецов
Домашние задания: 1
1 Асинхронное взаимодействие
Нужно определить, какие сервисы в вашем приложении, должны работать асинхронно (например, отправка уведомлений). Далее необходимо выбрать очередь сообщений и перевести данные сервисы на асинхронное взаимодействие
Тема 6: подходы к организации инфрастуктуры: мониторинг, профилирование, взаимодействие между сервисами
1) мониторинг
2) профилирование
3) асинхронное взаимодействие
4) service discovery
5) service mesh
11 января, 11:00 — 12:30
Лектор: Стас Щетинников
Домашние задания: 1
1 Мониторинг
Необходимо добавить систему мониторинга для вашего приложения на основе стека grafana + prometheus
Decentralized Systems
Тема 1: Общий концепт. Решаемые задачи. Примеры
1) p2p (torrent)
2) blockchain
3) ipfs
4) DHT
15 января, 20:00 — 21:30
Лектор: Егор Зуев
Тема 2: CAP теорема. Общие принципы и описание. BASE и ACID
1) виды и типы СУБД
2) base и acid (что это, где и когда использовать)
3) организация синхронизации (консенсуса в разных СУБД)
4) примеры
18 января, 11:00 — 12:30
Лектор: Денис Тисов
Тема 3: CP системы. RAFT, PAXOS, ZAB
1) принцип работы raft
2) принцип работы paxos
3) принцип работы ZAB
22 января, 20:00 — 21:30
Лектор: Егор Зуев
Домашние задания: 1
1 Используя любой CP алгоритм, необходимо реализовать свою базу данных (например K-V).
Тема 4: PA системы. GOSSIP, CasPAXOS. CRDT структуры
1) принцип работы gossip (scuttlebut)
2) CRDT структуры
25 января, 11:00 — 12:30
Лектор: Денис Тисов
Домашние задания: 1
1 Используя любой PA алгоритм, необходимо реализовать механизм обмена сообщениями (на подобии чата).
Тема 5: Практический семинар: реализация своей распределенной sql / nosql базы данных. Реализация своего оркестратора для управления задачами
1) реализация своей СУБД на основе sqlite + consensus алгоритма (PC)
2) реализация своей K-V storage + consensus алгоритма (PA)
3) реализация своего сервиса оркестрации (распределенная система)
29 января, 20:00 — 21:30
Лектор: Егор Зуев
Тема 6: Основы блокчейн: bitcoin
1) какие задачи решает блокчейн
2) основные компоненты
3) bitcoin (структуры, POW)
1 февраля, 11:00 — 12:30
Лектор: Егор Зуев
Тема 7: Основы блокчейн: ethereum
1) отличия от bitcoin
2) POS
3) EVM
4) смарт контракты
5) свой блокчейн
5 февраля, 20:00 — 21:30
Лектор: Егор Зуев
Тема 8: Практический семинар: создание своего приватного блокчейн на основе EVM
1) определить состав требований для разрабатываемой системы
2) выбор алгоритма согласования
3) реализация сервиса
4) интеграция с EVM
8 февраля, 11:00 — 12:30
Лектор: Егор Зуев
Домашние задания: 1
1 Крипто-платежи
Нужно создать сервис для возможности покупки товара / подписки через криптовалюту
Тема 9: основы работы DAG
1) принцип работы DAG
2) плюсы и минусы, отличия от блокчейн
3) реализации: IOTA, hashgraph
12 февраля, 20:00 — 21:30
Лектор: Егор Зуев
Costs and efforts
Тема 1: Оценка стоимости спроектированной системы. Определение рисков на разных стадиях жизненного цикла: проектирование, разработка, внедрение, поддержка и эксплуатация, утилизация
1) стоимость ресурсов (время / деньги)
2) инфраструктура
3) поиск компромисов
4) техничеческий долг
5) особенности каждого элемента цикла V-образной модели
6) TOGAF
15 февраля, 11:00 — 12:30
Лектор: Михаил Кузнецов
Итоговый проект
Тема 1: Вводный урок по итоговому проекту
19 февраля, 20:00 — 21:30
Лектор: Егор Зуев
Домашние задания: 1
1 Итоговый проект
Цель: В завершении курса студентам будет предложено выполнить проектную работу. Задание включает в себя разработку распределенной / децентрализованной, отказоустойчивой системы. 1) Консультация по проекту. Студентам будет предложено одно из заданий на выбор (либо свое): 1. распределенная база данных. 2. распределенный data-lake. 3. реализация приватного блокчейн 4. распределенная система семантического поиска Необходимо выбрать и обсудить спецификации проекта.
Тема 2: консультация по проекту
консультация по проекту. Промежуточный скрининг проектов.
22 февраля, 11:00 — 12:30
Лектор: Егор Зуев
Домашние задания: 1
1 Необходимо предоставить первый прототип системы (MVP)
Тема 3: Итоговый урок
защита проекта. Защита архитектуры и реализации проекта
26 февраля, 20:00 — 21:30
Лектор: Егор Зуев
Выпускной проект
Выпускной проект — возможность закрепить навыки, наработанные в процессе обучения. Это отдельная работа, на выполнение которой отводится последний месяц обучения.
Прошедшие открытые вебинары по курсу
Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.
Алгоритмы согласования
Егор Зуев
День открытых дверей
21 ноября в 20:00
После обучения вы

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

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

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

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

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

Ваш сертификат

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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