Обучение Backend-разработке
Богатая программа, командная работа, «взрослый» стек: NodeJS, Express, NestJS, Swagger, MongoDB, PostgreSQL, Microservices, RabbitMQ, WebSocket, основы DevOps (docker + kubernetes + jenkins), SOLID, Hexagonal Architecture, SAGA, основы фронтенда.
Результат / будет знать, уметь
- По окончании курса будете знать, уметь: NodeJS, Express, NestJS, Swagger, MongoDB, PostgreSQL, Microservices, RabbitMQ, WebSocket, основы DevOps (docker + kubernetes + jenkins), SOLID, Hexagonal Architecture, SAGA, основы фронтенда.
Контакты
Программа
<Неделя 1>
Введение в back-end разработку
- Установка окружения и создание простого Express приложения с использованием TypeScript и Nodemon
- Развертывание простого TypeScript Express приложения на Versel
- Routing для обработки GET, POST, PUT и DELETE запросов в Express приложении. Использование различных типов HTTP-запросов для обработки CRUD-операций
- End-to-end тестирование приложения
- Swagger документация
- JS: Типы данных. Особенности объектов как ссылочного типа данных. Копирование объектов. Синтаксис деструктуризации
<Неделя 2>
DataAccessLayer, Middleware и валидация данных
- Реализация базовых операций CRUD (Create, Read, Update, Delete) в репозиториях
- Express Middleware и принцип цепочки обязанностей (Chain of Responsibility)
- Валидация входных данных с использованием express-validator
- Реализация Basic Authorization для аутентификации и авторизации запросов
- Проверка учетных данных пользователя с использованием Basic Authorization
- JS: Методы массивов map, filter, sort и др. “Полифилы” методов массивов. Array. prototype как “хранилище” методов. + практика
<Неделя 3>
MongoDB, CRUD операции и асинхронное программирование
- Введение и установка MongoDB
- Использование CRUD операций для работы с данными в MongoDB
- Работа с MongoDB через командную оболочку и графический инструмент Studio 3T
- Изучение Promise в Node.js и асинхронного программирования
- Применение async-await для написания удобного асинхронного кода в Node.js
- Взаимодействие между Node.js и MongoDB
- Использование официального MongoDB драйвера для Node.js для выполнения CRUD операций
- JS: Методы массивов slice, splice, toSpliced, reduce + практика
<Неделя 4>
Бизнес-логика, пагинация, сортировка, CQS/CQRS и слои приложения
- Изучение Business Logic Layer для отделения бизнес-логики от слоя доступа к данным
- Реализация пагинации и сортировки для эффективной работы с большими объемами данных
- Понимание принципов CQS и CQRS для разделения команд и запросов
- Реализация QueryRepository для разделения операций чтения и записи данных
- Освоение основ data-mapping для преобразования данных между слоями приложения
- Организация слоев приложения для более модульной и масштабируемой архитектуры
- JS: Синтаксис вычисляемых свойств объекта (“ассоциативный массив“), map-set, object. keys, object. values, object. entries
<Неделя 1>
Хеширование паролей, bcrypt и проверка паролей
- Введение в безопасность паролей и необходимость их хеширования
- Изучение метода хеширования паролей с использованием bcrypt
- Разработка и реализация процесса хеширования паролей
- Понимание процесса проверки правильности введенного пароля
- Реализация проверки пароля с использованием bcrypt
- Обзор распространенных практик и подходов к обеспечению безопасности паролей
- JS: Обработка событий: интерфейс Event, оnclick и addEventListener (особенности использования), “всплывающие” события, свойства target и currentTarget, методы stopPropagation и preventDefault. Паттерны проектирования. Observer, Publisher-Subscriber. Примеры использования
<Неделя 2>
JWT, HTTP заголовки, авторизация с использованием токена Bearer
- Введение в JWT (JSON Web Tokens) и их роль в аутентификации и авторизации
- Генерация и проверка JWT токенов для безопасной передачи информации
- Изучение HTTP заголовков и их использование в веб-приложениях
- Использование заголовка Authorization для передачи авторизационных данных
- Реализация авторизации с использованием токена Bearer в HTTP заголовке
- Обзор распространенных практик и подходов к обеспечению безопасности при работе с JWT и авторизацией
- JS: Область видимости переменных. Замыкание: пример счетчик, почему и как работает. Сборка мусора. Рекурсия и стек вызова
<Неделя 3>
Nodemailer, SMTP, регистрация аккаунта и подтверждение по электронной почте
- Изучение Nodemailer и настройка SMTP для отправки электронных писем
- Разработка функциональности регистрации аккаунта
- Генерация уникального кода подтверждения
- Отправка письма с кодом подтверждения
- Реализация механизма подтверждения аккаунта
- Обработка запросов подтверждения и обновление статуса аккаунта
- JS: Promise. Для чего нужны, какую проблему решают. Создание собственного Promise. Все тонкости работы с методами . then . catch . finally
<Неделя 4>
JWT Refresh Token
- Изучение концепции Refresh Token в связке с JWT
- Разработка механизма обновления токена для продления срока действия
- Генерация и сохранение Refresh Token в безопасном хранилище
- Проверка валидности Refresh Token перед обновлением
- Обновление и выдача нового JWT при использовании Refresh Token
- Реализация логики обработки и обновления токенов в приложении
- Обзор распространенных практик и подходов к обновлению JWT с использованием Refresh Token
- JS: Promise. Работа с методами . then . catch . finally на реальных примерах. Специальный синтаксис async/await. Обработка ошибок с помощью try и catch. Статические методы класса Promise
<Неделя 1>
Multi devices и ограничения по IP
- Изучение стратегий работы с несколькими устройствами пользователей в серверном приложении
- Разработка механизма аутентификации и управления сеансами для поддержки нескольких устройств
- Реализация ограничений по IP для защиты серверного приложения от brute force атак
- Использование middleware для проверки и ограничения IP-адресов
- Обработка и логирование попыток доступа с недопустимых IP-адресов
- JS: Структуры данных Stack/Queue. Событийный цикл (Eventloop): микрозадачи и макрозадачи. Решение практических задач
<Неделя 2>
Mongoose и схемы
- Изучение Mongoose - объектно-ориентированной библиотеки для работы с MongoDB в Node.js
- Освоение концепции схем в Mongoose, которые определяют структуру и типы данных моделей
- Создание моделей с использованием схем в Mongoose для удобного взаимодействия с базой данных MongoDB
- Реализация CRUD операций (создание, чтение, обновление, удаление) с использованием Mongoose
- Изучение возможностей Mongoose для валидации данных, настройки связей между моделями и других расширенных функций
- Разработка и тестирование функциональности с использованием Mongoose и схем
- JS: Ключевое слово ‘this’, работа с this в функциях и методах объектов. Потеря контекста. Методы функций call, apply, bind. This в функциях конструкторах
<Неделя 3>
Введение в понятия DTO, POJO, анемичной модели и класса. Работа с объектными зависимостями и внедрение зависимостей (DI)
- Изучение DTO, POJO, Anemic Model и Transaction Script в объектно-ориентированном проектировании
- Понимание зависимостей объектов и их влияния на приложение
- Введение в Dependency Injection (DI) и использование Composition Root для управления зависимостями
- Применение принципов объектно-ориентированного проектирования и управления зависимостями в практике
- JS: Классы в JS. Для чего нужны, какие проблемы решают. Как создать собственный класс. Для чего нужна функция constructor() в классах. Приватность в классах. Геттеры и сеттеры (get/set). Статические методы класса
<Неделя 4>
Inversion of Control (IoC) и фреймворк Inversify. Введение в ООП
- Введение в IoC и роль фреймворка Inversify
- Изучение основных компонентов Inversify: контейнеры, привязки и разрешение зависимостей
- Создание и настройка контейнера Inversify
- Применение IoC с помощью Inversify для повышения гибкости и тестируемости кода
- Введение в ООП. Знакомство с принципами DDD
- JS: Прототипы в JS, proto/prototype. Все ли в JS объекты? Разница между proto и prototype. Прототипное наследование
<Неделя 1>
Nest. js - создание проекта, контроллеры, маршрутизация и сервисы
- Введение в Nest. js - фреймворк для разработки масштабируемых и модульных приложений на Node.js
- Создание нового проекта с использованием Nest. js CLI и настройка базовой структуры проекта
- Изучение концепции контроллеров в Nest. js и создание обработчиков HTTP-запросов
- Определение маршрутов и настройка маршрутизации в приложении Nest. js
- Создание и использование сервисов для инкапсуляции бизнес-логики в приложении
- Разработка и тестирование функциональности с использованием контроллеров, маршрутизации и сервисов в Nest. js
- JS: Разработка игры на чистом JavaScript + ООП, тесты, WebSocket
<Неделя 2>
Nest. js - валидация, обработка исключений и использование guards, Passport. js, tests
- Изучение возможностей валидации данных в Nest. js с использованием библиотеки class-validator
- Применение пайпов (pipes) в Nest. js для обработки и преобразования данных
- Изучение ValidationPipe для автоматической валидации входных данных в контроллерах
- Обработка исключений с помощью Exception Filters в Nest. js для управления ошибками в приложении
- Использование глобального фильтра (useGlobalFilter) для единообразной обработки исключений во всем приложении
- Изучение гвардов (guards) в Nest. js и внедрение Auth Guard для реализации авторизации и защиты маршрутов
- Аутентификация с использованием различных стратегий: Local, JWT, Basic. Использование Passport. js
- Практическое применение интеграционного тестирования с использованием базы данных
- Изучение концепций mock и spy для создания контролируемых и независимых тестовых сред
- JS: Разработка игры на чистом JavaScript + ООП, тесты, WebSocket
<Неделя 3>
Nest. js - DI, области видимости, environment variables, CQRS (UseCase, CommandHandler)
- Переменные окружения, process. env, environment variables
- Nest сonfiguration
- Применение паттерна UseCase и обработка команд с помощью CommandHandler в Nest CQRS
- JS: Разработка игры на чистом JavaScript + ООП, тесты, WebSocket
<Неделя 4>
Dependency Injection (DI) и областей видимости в Nest. js, CI/CD: GitHub Actions
- Dependency Injection (DI) и областей видимости в Nest. js (scopes)
- CI/CD: GitHub Actions
- JS: Разработка игры на чистом JavaScript + ООП, тесты, WebSocket
<Неделя 1-4>
Изучение SQL и использование инструментов для работы с ним
- Ознакомление с основами SQL, включая язык запросов и манипуляции данными
- Проектирование базы данных (связи между таблицами)
- Использование инструмента PGAdmin для работы с PostgreSQL
- Практическое применение "Raw SQL" для выполнения запросов и манипуляций с данными в базе данных. Select, Where, Order by, Offset, Limit
- Подзапросы, группировки, агрегирующие функции
<Неделя 1>
Изучение SQL запросов с использованием TypeORM
- Погружение в SQL запросы с использованием TypeORM и изучение их различных типов, включая SELECT, INSERT, UPDATE, DELETE
- Применение фильтров, сортировки и ограничений для точной выборки данных из базы данных
- Использование агрегатных функций для выполнения расчетов и анализа данных
- Работа с JOIN для объединения данных из разных таблиц
<Неделя 2>
Нормальные формы
- Теория нормализации баз данных
- Денормализация, для чего и в каких случаях может применяться
<Неделя 3>
Миграции в базе данных
- Введение в миграции и их использование в TypeORM для управления изменениями схемы базы данных
<Неделя 4>
Изучение индексов в базах данных
- Разбор понятия индексов и их важности для оптимизации запросов в базах данных
- Изучение типов индексов и их особенностей
- Ознакомление с индексами в SQL базах данных
- Примеры использования индексов в SQL базах данных для оптимизации запросов
<Неделя 1-4>
Блокировки, версионирование и транзакции в SQL
- Блокировки для обеспечения целостности данных при параллельных операциях
- Версионирование данных для контроля доступа и обновления информации
- Применение транзакций для гарантии согласованности данных и атомарности операций
- Уровни изоляции транзакций и их влияние на конкурентность и целостность данных
<Неделя 1>
DDD, сущности предметной области, события предметной области, CQRS
- DDD: Методика проектирования сложных систем
- Сущности предметной области: Ключевые понятия и бизнес-правила модели
- События предметной области: Изменения состояния, взаимодействие между компонентами
- CQRS: Разделение операций записи и чтения данных
<Неделя 2>
Обработки ошибок, паттерн Notifications
- Валидация данных и обеспечение их корректности
- Обработка ошибок и стратегии обработки исключений
<Неделя 3-4>
SOLID, GRASP, паттерны
- SOLID, GRASP и другие принципы проектирования программного обеспечения, обеспечивающие гибкость и поддержку расширяемости кода
<Неделя 1>
AWS files, Swagger
- Работа с файлами в AWS
<Неделя 2>
telegramAPI
- Работа с Telegram API. Вы узнаете, как взаимодействовать с Telegram-платформой, отправлять сообщения, управлять ботами и другие функции API
<Неделя 3>
paymentAPI
- Изучение Payment API. Вы будете исследовать возможности интеграции платежных систем (Stripe), обработку платежей и управление финансовыми транзакциями в вашем приложении
<Неделя 4>
recaptcha
- Вы будете изучать ReCaptcha - механизм защиты от автоматических ботов и спама
1. Будете разрабатывать учебный продукт “INCTAGRAM” в полноценной команде, как на реальном проекте.
2. Наши HR-специалисты помогут улучшить ваше резюме, портфолио и сопроводительное письмо, а также получите советы как проходить рекрутерские интервью.
3. Сможете участвовать в сессиях с индивидуальным разбором вашей ситуации по поиску работы от карьерного ментора.
4. Подготовитесь к собеседованиям: поучаствуете в тренировочных собеседованиях и узнаете, насколько хорошо вы подготовлены к трудоустройству.
5. Мы отправим вас на реальный стартап, где вы сможете получить коммерческий опыт или оффер.
Характеристики, актуальность курса, программа могут меняться, поэтому всю необходимую информацию всегда уточняйте у организаторов. Нажмите, чтобы писать о неактуальной информации.