Бесплатно 3 часа. Вступительный тест
Здесь вы узнаете о том, как устроено обучение, и пройдёте тест из вопросов про бэкенд-разработку.
0 модуль 5 часов. Интро-модуль
Серия уроков про требования к коду, работу с Git, процесс обучения на курсе и первое практическое задание.
— Небольшой онбординг
— Знакомство с Git
— Требования
1 модуль 115 часов. Сервисы Admin Panel + ETL
Создание и настройка панели администратора для онлайн-кинотеатра на Python с применением Django. Детальное изучение самых используемых компонентов Django — админки и ORM. Знакомство с индексами, миграциями и оптимизацией запросов. Проектирование реляционной базы данных. Устройство Docker и работа Nginx. Знакомство с архитектурным паттерном ETL и создание своего ETL для перекачки данных из PostgreSQL в Elasticsearch.
Спринт 1
— Проектирование базы данных, знакомство с индексами и потреблением памяти
— Знакомство с процессом вставки данных, dataclasses и работой со временем в базах данных
— Вводная информация о базах данных без SQL, критерии выбора фреймворка и подробное изучение Django: от установки до админки
Спринт 2
— Глубокое изучение технологии ORM
— Реализация API в сотрудничестве с Django и тестирование результата
— Подробное знакомство с Docker
— Обработка запросов в production-среде и конфигурирование Nginx
Спринт 3
— Подробное изучение Elasticsearch, полнотекстового поиска и архитектуры ETL
- Python + UWSGI + Django
- PostgreSQL
- Nginx
- Docker
- ETL
- Elasticsearch
+ 1 проект в портфолио
Админка онлайн-кинотеатра + ETL для перекачки данных
2 модуль 80 часов. Сервис Async API
Погружение в асинхронный Python и принципы его работы и применение Fast API на практике. Знакомство с итераторами, генераторами и корутинами. Разбор многопоточности и многопроцессности.
Студенты работают в командах по 2–3 человека. Процесс разработки имитирует разработку в настоящей продуктовой компании — у команд есть тимлид, код-ревью и еженедельные демо с наставниками.
Спринт 4
— Принципы работы в командном модуле и ТЗ на спринт
— Описание принципа работы в Git
— Знакомство с асинхронным подходом, итераторами, генераторами и корутинами
— Разбор асинхронных фреймворков: Twisted, AIOHTTP и FastAPI
— Детальное изучение FastAPI
Спринт 5
— Подробное описание общих принципов код-ревью
— Разница между солидным и несолидным кодом
— Функциональные тесты для сервиса и инфраструктура тестов
— Понятие API и инструкция по написанию документации
- Python
- ASYNCIO
- FastAPI
- Redis
- Итераторы и генераторы
- Корутины
+ 1 проект в портфолио
API онлайн-кинотеатра
3 модуль 80 часов. Сервис авторизации
Разработка сервиса, отвечающего за создание, хранение и логирование профиля юзера. Он позволит пользователям регистрироваться в кинотеатре и управлять своим аккаунтом. Подробный разбор, как правильно хранить пароли и обеспечить безопасность пользовательских данных.
Студенты самостоятельно проектируют архитектуру сервиса, защитив свои решения на ревью. Они продумывают систему взаимодействия между сервисами, обращая внимание на обработку ошибок и возможное отключение одного из сервисов.
Погружение в синхронные фреймворки на примере Flask и работа с реляционными базами данных на примере PostgreSQL. Фокусировка на компьютерной безопасности и правильной организации сбора, защиты и хранения данных.
Спринт 6
— Объяснение, для чего нужен сервис Auth
— Анализ и сбор требований, работа с чувствительными данными, безопасность, шифрование, хеширование и управление доступом к ресурсам
— Изучение способов авторизации и проработка требований к сервису. Продолжение изучения Flask и Redis
Спринт 7
— Детальный рассказ о работе OAuth 1.0, OAuth 2.0 и openID
— Работа с каптчей и двухфакторной авторизацией
— Изучение общения между микросервисами. Настройка устойчивости сервиса к нагрузкам и изменениям API, внедрение в AsyncAPI авторизации, управление уровнем нагрузки и быстрое нахождение проблем
- Python + FlaskPython + Flask
- Redis
- PostgreSQL (реплики/шарды)
- OpenID
- oauth2
- jwt
- сaptcha + Proof-of-Work
+ 1 проект в портфолио
Сервис авторизации пользователей с защитой данных
4 модуль 80 часов. Сервис UGC
Сервис разрешает пользователям создавать свой контент в вашем кинотеатре — оставлять лайки, комментарии, отзывы к фильмам. Студентам нужно организовать сбор и хранение данных об активности пользователей.
Самостоятельный выбор асинхронного фреймворка и хранилища данных для сервиса. Проведение собственного исследования производительности разных хранилищ данных. Защита полученных результатов, выводов и принятых решений на демо с наставником.
Спринт 8
— Что такое UGC и зачем оно нужно. Планирование сервиса
— Описание архитектуры и полезные советы по ее проектированию
— Выбор хранилища, событийная работа с данными и работа с Kafka
— Подходы к хранению и обработке данных, которые не помещаются на один сервер. Локальный подъем вычислительного кластера и работа с данными внутри него
Спринт 9
— Ещё одно распределённое хранилище, хранение данных и оптимизация хранения и обработки
— CI/CD: Построение непрерывной интеграции для приложения
— Знакомство с логированием в микросервисной архитектуре
- Python
- Mongo
- ApacheKafka
- Clickhouse
- Apache Spark
- CI/CD
- ELK
+ 1 проект в портфолио
Организация сбора и хранения данных об активности пользователей
5 модуль 60 часов. Сервис нотификации
Сервис нотификации отвечает за коммуникацию с пользователем через Email, мобильные пуш-уведомления, websocket в браузере. Это часто решаемая бизнес-задача в коммерческой разработке — от правильной коммуникации с пользователем зависят показатели бизнеса.
Изучение архитектурных проблем веб-разработки. Самостоятельное прохождение пути от бизнес-задачи до рабочего решения. Самостоятельный выбор стека технологий и отрисовка архитектуры сервиса.
Новые технологии: брокеры сообщений на примере RabbitMQ и Websocket.
Спринт 10
— Описание принципа работы сервиса нотификаций
— Механизм отправки сообщений пользователям и единая политика контактов
— Проектирование коммуникационной системы
— Устройство Email и шаблонизаторов. Изучение, какие протоколы или технологии можно применить в разных ситуациях, когда нужно связаться с клиентом
— Использование брокера сообщений RabbitMQ. Сервисы транзакционной рассылки писем и сокращенные ссылки
— Возвращение к CI/CD-процессу
- Python
- FastAPI
- RabbitMQ
- CI/CD
+ 1 проект в портфолио
Сервис нотификаций через Email, мобильные пуш-уведомления, websocket в браузере
Финишная прямая 80 часов. Дипломный проект
Студенты сами выбирают бизнес-задачу или придумывают её, планируют своё время, проектируют архитектуру решения, выбирают и исследуют технологии, затем защищают разработанное приложение.
Финальная точка — защита дипломного проекта, где выпускники показывают результат работы своей команды.
Спринт 11
— Подготовка к финальной прямой. Организация работы в дипломном модуле
— Идеи для диплома. Готовые идеи для реализации в дипломном проекте
— Проработка задачи с заказчиком. Требования для разработки и виды заказчиков. Декомпозиция проекта и самостоятельная подготовка ТЗ для заказчика
— Организация рабочего времени. Полезные советы, как организовать рабочее время и наладить прозрачные процессы в команде
— Архитектура и планирование. Риски и планирование задач по проекту
Python + Framework (фреймворк студенты выбирают сами)
Хранилище данных и остальные технологии студенты выбирают сами
+ 1 проект в портфолио
Сервис на выбор
Карьерный трек 1 неделя. Программа трудоустройства
Карьерный трек разделён на семь блоков. Сначала студент думает, точно ли ему нужно менять место, и определяет собственные критерии для комфортной работы. Далее он составляет резюме вместе с опытным HR-консультантов и тщательно готовится ко всем видам собеседований, а мы будем предлагать актуальные вакансии партнёров.