HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-19
1 В 2022 году мы запустили курс<a><strong>Архитектура приложений</strong></a>, на котором учим писать как разработчик, но думать - как архитектор. Этот курс заканчивается важным этапом - защитой итоговых проектов. Принимать в ней участие не обязанность, а возможность продемонстрировать свои новые навыки и получить итоговые комментарии от спикеров курса. Такая защита прошла 23 декабря 2022, поэтому в этой статье мы решили подробнее рассказать, как проходит финальная встреча со спикерами и почему она важна для студентов.<h2>Что такое финальный проект</h2>
1 В 2022 году мы запустили курс<a><strong>Архитектура приложений</strong></a>, на котором учим писать как разработчик, но думать - как архитектор. Этот курс заканчивается важным этапом - защитой итоговых проектов. Принимать в ней участие не обязанность, а возможность продемонстрировать свои новые навыки и получить итоговые комментарии от спикеров курса. Такая защита прошла 23 декабря 2022, поэтому в этой статье мы решили подробнее рассказать, как проходит финальная встреча со спикерами и почему она важна для студентов.<h2>Что такое финальный проект</h2>
2 Он состоит из логически связанных между собой заданий в процессе обучения, которые на выходе складываются в единый проект: от небольшой системы с ограниченной функциональностью реализации целой предметной области. Кроме подобного типа заданий есть и те, которые помогают отработать конкретный навык в каждом модуле.<h2>Зачем нужна итоговая защита</h2>
2 Он состоит из логически связанных между собой заданий в процессе обучения, которые на выходе складываются в единый проект: от небольшой системы с ограниченной функциональностью реализации целой предметной области. Кроме подобного типа заданий есть и те, которые помогают отработать конкретный навык в каждом модуле.<h2>Зачем нужна итоговая защита</h2>
3 Она дает возможность рассказать о своем учебном проекте и объяснить логику архитектурных решений. Этот навык пригодится в дальнейшей работе, а ревью и полезные рекомендации от наставников позволят развить проект и прокачать стек. Главная задача защиты учебного проекта - усилить ваши знания и навыки в архитектуре приложений.<p><em>Взглянем изнутри на защиту итоговых проектов, которая прошла 23 декабря.</em></p>
3 Она дает возможность рассказать о своем учебном проекте и объяснить логику архитектурных решений. Этот навык пригодится в дальнейшей работе, а ревью и полезные рекомендации от наставников позволят развить проект и прокачать стек. Главная задача защиты учебного проекта - усилить ваши знания и навыки в архитектуре приложений.<p><em>Взглянем изнутри на защиту итоговых проектов, которая прошла 23 декабря.</em></p>
4 <p>Свои финальные проекты защитили 6 человек. Выпускники пообщались с наставниками, задали вопросы, а главное - получили ревью от спикеров курса Архитектура приложений: Senior software engineer<strong>Егора Лукьянова</strong>и Solution Architect &amp; co-founder в TorrowTechnologies<strong>Александра Вагнера</strong>.</p>
4 <p>Свои финальные проекты защитили 6 человек. Выпускники пообщались с наставниками, задали вопросы, а главное - получили ревью от спикеров курса Архитектура приложений: Senior software engineer<strong>Егора Лукьянова</strong>и Solution Architect &amp; co-founder в TorrowTechnologies<strong>Александра Вагнера</strong>.</p>
5 <p>Егор имеет за плечами более 15 лет опыта в IT. В настоящее время руководит бэкенд-разработкой на Python и отвечает за архитектуру платформы анализа больших данных, самоотверженно развивая культуру осознанного проектирования программного обеспечения.</p>
5 <p>Егор имеет за плечами более 15 лет опыта в IT. В настоящее время руководит бэкенд-разработкой на Python и отвечает за архитектуру платформы анализа больших данных, самоотверженно развивая культуру осознанного проектирования программного обеспечения.</p>
6 <p>Александр в IT уже 8+ лет. Сейчас строит с нуля компанию и платформу Torrow, где активно применяет богатый опыт разработки high-load веб-сервисов и приложений, а также обширный стек технологий: .NET Core (C#), TypeScript, MongoDB, ElasticSearch.</p>
6 <p>Александр в IT уже 8+ лет. Сейчас строит с нуля компанию и платформу Torrow, где активно применяет богатый опыт разработки high-load веб-сервисов и приложений, а также обширный стек технологий: .NET Core (C#), TypeScript, MongoDB, ElasticSearch.</p>
7 <p>Первым свой проект продемонстрировал выпускник<strong>Игорь Лютоев</strong>- разработчик на Python, который пришел на курс с целью прокачать архитектурные навыки в технических направлениях.</p>
7 <p>Первым свой проект продемонстрировал выпускник<strong>Игорь Лютоев</strong>- разработчик на Python, который пришел на курс с целью прокачать архитектурные навыки в технических направлениях.</p>
8 <p>Игорь создал сервис уведомлений, который парсит курс доллара на сайте Московской биржи и раз в час отправляет уведомления по электронной почте. На первом уроке была описана первоначальная структура проекта, схема из 6 блоков: планировщик по расписанию запускает сервисы, один из которых парсит данные, а другой их отправляет. </p>
8 <p>Игорь создал сервис уведомлений, который парсит курс доллара на сайте Московской биржи и раз в час отправляет уведомления по электронной почте. На первом уроке была описана первоначальная структура проекта, схема из 6 блоков: планировщик по расписанию запускает сервисы, один из которых парсит данные, а другой их отправляет. </p>
9 В процессе обучения проект был описан более подробно по схеме C4: Мосбиржа - Трекер курса USD - Email System - Пользователь. Игорь произвел разбивку по взаимодействию сервисов между собой, далее - по компонентам.По мере добавления новых вводных проект совершенствовался и расширялся: добавленная гибкость позволила системе быстро реагировать на изменение источников и хранилищ данных. В итоге появилась диаграмма классов; системы и сервисы стали работать с интерфейсами, на которые направлены зависимости и в которых происходят реализации. При этом сама логика сильно не изменилась, но стала полнее:<ul><li>планировщик (Scheduler);</li>
9 В процессе обучения проект был описан более подробно по схеме C4: Мосбиржа - Трекер курса USD - Email System - Пользователь. Игорь произвел разбивку по взаимодействию сервисов между собой, далее - по компонентам.По мере добавления новых вводных проект совершенствовался и расширялся: добавленная гибкость позволила системе быстро реагировать на изменение источников и хранилищ данных. В итоге появилась диаграмма классов; системы и сервисы стали работать с интерфейсами, на которые направлены зависимости и в которых происходят реализации. При этом сама логика сильно не изменилась, но стала полнее:<ul><li>планировщик (Scheduler);</li>
10 <li>задания, которые запускают сбор данных и нотификации;</li>
10 <li>задания, которые запускают сбор данных и нотификации;</li>
11 <li>слой репозитория, сохраняющий данные в БД и отдающий их оттуда же;</li>
11 <li>слой репозитория, сохраняющий данные в БД и отдающий их оттуда же;</li>
12 <li>ходящие между ними дата-классы, которые передают значения (курс доллара и дату).</li>
12 <li>ходящие между ними дата-классы, которые передают значения (курс доллара и дату).</li>
13 </ul>Игорь задумался и о том, какие паттерны проектирования можно использовать в системе.<strong>Порождающий паттерн - Строитель</strong>. Его можно использовать при создании уведомления для отправки. Разные каналы отправки (электронная почта, мессенджер) предполагают разные реализации; контент и структура при этом остаются общими.<p><strong>Поведенческий паттерн - Наблюдатель</strong>. Полезен, когда разные группы подписчиков необходимо уведомлять о наступлении интересующего их конкретного события (например, изменения курса евро). Каждый подписчик может содержать разную логику событий.</p>
13 </ul>Игорь задумался и о том, какие паттерны проектирования можно использовать в системе.<strong>Порождающий паттерн - Строитель</strong>. Его можно использовать при создании уведомления для отправки. Разные каналы отправки (электронная почта, мессенджер) предполагают разные реализации; контент и структура при этом остаются общими.<p><strong>Поведенческий паттерн - Наблюдатель</strong>. Полезен, когда разные группы подписчиков необходимо уведомлять о наступлении интересующего их конкретного события (например, изменения курса евро). Каждый подписчик может содержать разную логику событий.</p>
14 <p><strong>Структурный паттерн - Фасад</strong>. Позволяет скрыть сложную логику за понятным интерфейсом. В проекте Игоря интерфейс отправки данных (систему интересуют сообщения и получатели) снаружи, а под капотом - логика работы с электронной почтой.</p>
14 <p><strong>Структурный паттерн - Фасад</strong>. Позволяет скрыть сложную логику за понятным интерфейсом. В проекте Игоря интерфейс отправки данных (систему интересуют сообщения и получатели) снаружи, а под капотом - логика работы с электронной почтой.</p>
15 <p>При прохождении модуля "Чистая архитектура" диаграмма классов была доработана с учетом разбивки классов по компонентам и по удалению границ. Появились отдельные модули для парсеров, репозитория и нотификаций. Модули сгруппированы по отдельной логике, а слои разделены таким образом: основная бизнес-логика на верхнем уровне, логика работы с репозиториями на среднем уровне и конкретные реализации на низшем уровне.</p>
15 <p>При прохождении модуля "Чистая архитектура" диаграмма классов была доработана с учетом разбивки классов по компонентам и по удалению границ. Появились отдельные модули для парсеров, репозитория и нотификаций. Модули сгруппированы по отдельной логике, а слои разделены таким образом: основная бизнес-логика на верхнем уровне, логика работы с репозиториями на среднем уровне и конкретные реализации на низшем уровне.</p>
16 <p>Далее были рассмотрены архитектурные подходы, а также функциональные и нефункциональные требования.<em>Система не может считаться завершенной, пока не реализованы главные требования.</em></p>
16 <p>Далее были рассмотрены архитектурные подходы, а также функциональные и нефункциональные требования.<em>Система не может считаться завершенной, пока не реализованы главные требования.</em></p>
17 <p>Игорь предположил, что систему можно реализовать через подход CQRS/EventSourcing: отдельные сервисы, которые живут сами по себе, и шина данных (парсер, складывающий данные в Kafka). В подобной очереди могут участвовать и другие сервисы. Еще один предложенный подход к реализации - Layered System (слоистая система), в рамках которой все компоненты разделены по слоям: сервисный слой для реализации конкретной бизнес-логики, слой интеграций с различными сервисами и источниками данных, слой репозиториев для работы с конкретными данными.</p>
17 <p>Игорь предположил, что систему можно реализовать через подход CQRS/EventSourcing: отдельные сервисы, которые живут сами по себе, и шина данных (парсер, складывающий данные в Kafka). В подобной очереди могут участвовать и другие сервисы. Еще один предложенный подход к реализации - Layered System (слоистая система), в рамках которой все компоненты разделены по слоям: сервисный слой для реализации конкретной бизнес-логики, слой интеграций с различными сервисами и источниками данных, слой репозиториев для работы с конкретными данными.</p>
18 Ближе к концу обучения была дополнительно учтена масштабируемость системы. Воркеры для парсинга не нуждаются в масштабировании - только для разделения на источники данных. С шиной сообщений можно поработать для надежности. Точно следует масштабировать отправляющие сообщения воркеры (так как отправителей может быть много) и базу данных для них же.В заключительной части проекта необходимо было учесть конкретные технологии реализации. Для управления БД можно применить PostgreSQL из-за ее способности работать с объемами данных и простого сегментирования. Для работы планировщика наверняка понадобится очередь. Можно использовать Redis с его pub/sub, но это не надолго; лучше посмотреть в сторону RabbitMQ. Для масштабирования системы стоит сразу двигаться в сторону облачной архитектуры (Kubernetes, Docker и т. д.).<h2>О других проектах</h2>
18 Ближе к концу обучения была дополнительно учтена масштабируемость системы. Воркеры для парсинга не нуждаются в масштабировании - только для разделения на источники данных. С шиной сообщений можно поработать для надежности. Точно следует масштабировать отправляющие сообщения воркеры (так как отправителей может быть много) и базу данных для них же.В заключительной части проекта необходимо было учесть конкретные технологии реализации. Для управления БД можно применить PostgreSQL из-за ее способности работать с объемами данных и простого сегментирования. Для работы планировщика наверняка понадобится очередь. Можно использовать Redis с его pub/sub, но это не надолго; лучше посмотреть в сторону RabbitMQ. Для масштабирования системы стоит сразу двигаться в сторону облачной архитектуры (Kubernetes, Docker и т. д.).<h2>О других проектах</h2>
19 Python-разработчик в X5 Retail Group Андрей Чибизов показал проект по реализации REST API CRUD-операций баз данных. Приложение должно уметь подключаться к разнообразным БД на множестве серверов и предоставлять эндпоинт - операции CRUD к базам данных.<p>Тимлид и разработчик Евгений Боев продемонстрировал телеграм-бот, который принимает все поступающие к нему файлы и помещает их на Яндекс Диск. Евгений давно хотел поработать с ботами в Telegram, чтобы в дальнейшем реализовать свои идеи в личном проекте.</p>
19 Python-разработчик в X5 Retail Group Андрей Чибизов показал проект по реализации REST API CRUD-операций баз данных. Приложение должно уметь подключаться к разнообразным БД на множестве серверов и предоставлять эндпоинт - операции CRUD к базам данных.<p>Тимлид и разработчик Евгений Боев продемонстрировал телеграм-бот, который принимает все поступающие к нему файлы и помещает их на Яндекс Диск. Евгений давно хотел поработать с ботами в Telegram, чтобы в дальнейшем реализовать свои идеи в личном проекте.</p>
20 <p>Выпускница Мария выбрала в качестве финального проекта сервис уведомлений о курсах валют, а ее коллеги по курсу Чоро и Петр рассказали об API для умного дома.</p>
20 <p>Выпускница Мария выбрала в качестве финального проекта сервис уведомлений о курсах валют, а ее коллеги по курсу Чоро и Петр рассказали об API для умного дома.</p>
21 <blockquote><strong>Новый поток курса Архитектура приложений стартует 20 февраля 2023.</strong><a><strong>Присоединяйтесь к курсу</strong></a><strong>и защищайте свои проекты на итоговой встрече!</strong></blockquote>Ведь как сказал автор курса Егор Лукьянов: "<em>Тема архитектуры бесконечна, обучаться ей можно всю жизнь. Менять работу каждый месяц не получится, а разобраться в новом хочется и нужно. Поэтому послушать про проекты других студентов - круто</em>".
21 <blockquote><strong>Новый поток курса Архитектура приложений стартует 20 февраля 2023.</strong><a><strong>Присоединяйтесь к курсу</strong></a><strong>и защищайте свои проекты на итоговой встрече!</strong></blockquote>Ведь как сказал автор курса Егор Лукьянов: "<em>Тема архитектуры бесконечна, обучаться ей можно всю жизнь. Менять работу каждый месяц не получится, а разобраться в новом хочется и нужно. Поэтому послушать про проекты других студентов - круто</em>".