Постер курса

OTUS

Kotlin Backend Developer

  • Продвинутый уровень
  • Наставник: Есть
  • Сертификат: Есть
  • Формат: Online
  • Рассрочка: Нет
  • Язык: Русский
  • Осталось мест: Неограничено
Записаться

Kotlin Backend Developer

Что даст вам этот курс


Это обзорно-практический курс. В нем вы прикоснетесь к большому числу инструментов разработки современных, гибких, высокопроизводительных серверных приложений на языке Kotlin. На некоторых из инструментов - по вашему выбору - вы остановитесь подробнее и реализуете собственный проект с их помощью. Также вы увидите тактические и стратегические архитектурные приемы разработки и как Kotlin помогает в разработке.

Вы научитесь:


использовать язык Kotlin для разработки серверных приложений;
создавать приложения для разных платформ с помощью Kotlin Multiplatform: JS, JVM, Native (Linux/Windows/MacOs/Android/iOS);
применять асинхронное и многопоточное программирование с корутинами;
выполнять интеграцию бэкенд-приложения с различными фронтендами с использованием OpenAPI и Kotlin Multiplatform;
использовать Kotlin совместно с различными фреймоврками: Spring, Ktor, Kotless (Amazon Web Services);
реализовывать асинхронный транспорт с применением WebSocket, RabbitMQ и Kafka;
строить хранилища на базе SQL и NoSQL (Cassandra, AWS DynamoDB)
писать приложения с монолитной, микросервисной и бессерверной архитектурами;
разрабатывать гибкую и надежную бизнес-логику любой сложности, используя инструменты Kotlin DSL, ООП и null-safety;
проектировать архитектуру приложений с применением таких подходов как модульная разработка, DDD, TDD, MDD;
учитывать требования законодательства в области защиты информации при формировании архитектуры приложения;
внедрять элементы BI в приложения для получения аналитических отчетов по функционированию и бизнес-процессам.


Курс рекомендован разработчикам, знакомым с объектно-ориентированным программированием и SQL.




Выпускной проект


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

Процесс обучения


Все обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в слаке курса, сдача домашних работ и получение обратной связи от преподавателя.

Вебинары идут дважды в неделю по 2 академических часа (то есть астрономических 1,5 часа). Все вебинары сохраняются и в записи в вашем личном кабинете.

В самом начале обучения идет краткий обзор возможностей языка Kotlin. Подробное изучение этих возможностей на практике происходит всё остальное время во время разработки приложений.

На вебинарах разрабатываются 3 высоконагруженных приложения:
- приложение с монолитной архитектурой с помощью Kotlin и Spring, которое хранит свои данные в PostgreSQL;
- высоконагруженное бэкенд-приложение с микросервисной архитектурой, которое способно масштабироваться под нагрузку любой величины, с помощью KTOR Framework, развернутое в Docker-контейнере и хранящее данные в Cassandra;
- высоконагруженное приложение с бессерверной архитектурой с помощью Kotless Framework, развернутое на AWS и работающие с DynamoDB.
Все ключевые классы покрываем тестами, разрабатываем в TDD, подключаем систему мониторинга на базе ELK-stack.


В ходе обучения вам будет необходимо выполнять домашние задания. Каждое домашнее задание посвящается одному из компонентов вашего выпускного проекта. После выполнения всех домашних заданий, вы получите готовый выпускной проект.
Все домашние задания связаны между собой.
Сдача домашних заданий происходит в виде ревью преподавателями, в результате которого вы получаете рекомендации по улучшению своего кода.
Программа обучения
Введение в Kotlin
  • Тема 1. Введение в курс
  • Тема 2. Основные конструкции Kotlin
  • Тема 3. Объектно-ориентированное программирование
  • Тема 4. Предментно ориентированные языки (DSL)
  • Тема 5. Асинхронное и многопоточное программирование с корутинами
  • Тема 6. Асинхронное и многопоточное программирование с каналами
  • Тема 7. Kotlin Multiplatform и интероперабельность с JVM, JS
Старт проекта и API
  • Тема 8. Маркетинг и аналитика проекта // ДЗ
  • Тема 9. Тестирование проекта, TDD, MDD
  • Тема 10. Архитектурные вопросы и инициализация проекта
  • Тема 11. Создаем интерфейс с помощью OpenAPI // ДЗ
  • Тема 12. Создаем внутренние модели и маперы
  • Тема 13. Практика по инициализации проекта и API
Работа с фреймворками в Kotlin
  • Тема 14. Разработка монолитного приложения со Spring // ДЗ
  • Тема 15. Разработка микросервисного приложения с KTOR
  • Тема 16. Разработка бессерверного приложения
  • Тема 17. Практика по работе с фреймворками
Модуль бизнес-логики проекта
  • Тема 18. Основы бизнес-логики и разработка библиотеки для шаблона CoR // ДЗ
  • Тема 19. Создание модуля бизнес-логики с использованием шаблона Цепочка Ответственности.
  • Тема 20. Шаг валидации в бизнес-цепочке
  • Тема 21. Практика по созданию бизнес-уровня Backend-приложения
Транспортный уровень приложения
  • Тема 22. Транспорт с WebSocket // ДЗ
  • Тема 23. Транспорт с RabbitMQ
  • Тема 24. Транспорт с Kafka
  • Тема 25. Практика по транспортному уровню приложения
Работа с базами данных в Kotlin-проекте
  • Тема 26. Создание репозитария // ДЗ
  • Тема 27. Конкурентный доступ к БД
  • Тема 28. Репозитарий с PostgreSQL
  • Тема 29. Репозитарий с Cassandra
  • Тема 30. Репозитарий с DynamoDB
  • Тема 31. Практика по работе с базами данным в Backend-приложении
Защита информации и управление пользователями
  • Тема 32. Общие принципы защиты информации // ДЗ
  • Тема 33. Авторизация и аутентификация в фреймворках
  • Тема 34. Практика по управлению пользователями
Мониторинг приложения
  • Тема 35. Общие принципы мониторинга // ДЗ
  • Тема 36. Сбор логов и построение аналитических отчетов
  • Тема 37. Практика по мониторингу
Проектная работа
  • Тема 38. Обзор значимых проектов на Kotlin, которые выходят за рамки курса выбор темы проекта
  • Тема 39. Консультация по проектам и домашним заданиям
  • Тема 40. Защита проектных работ
Что нужно знать?
  • Опыт программирования на любом объектно-ориентированном языке программирования; SQL навыки работы с Linux. опыт работы на Java; знание шаблонов проектирования; умение писать чистый код; навыки использования git. Перед началом обучения вам нужно будет самостоятельно установить Ubuntu, Docker, Docker-Compose, Intellij и aws-cli. Требования к ПК: не менее 8 ГБ оперативной памяти
Знания и навыки, которые приобретете
  • Получите материалы по всем занятиям (видеозаписи занятий, презентации, примеры кодов)
  • Освоите Kotlin и научитесь создавать на нем высокопроизводительные серверные приложения
  • Сможете подружить Kotlin и Spring
  • Научитесь использовать KTOR, Kotlin Multiplatform, Kotless
  • Получите помимо языка спектр как классических, так и самых современных интрументов, на которые есть высокий неудовлетворенный спрос на рынке (Cassandra, AWS, ELK-stack и др.)
  • Получите сертификат об окончании курса
  • Получите приглашение пройти собеседование в компаниях-партнерах (в случае успешного обучения на курсе)
Партнеры

Преподаватели

  • Сергей Окатов

    Кандидат физико-математических наук, руководитель отдела разработки, архитектор Datana (группа компаний ЛАНИТ).

    Основные специализации — Full Stack-разработка бизнес-приложений, разработка приложений для стартапов, работа с большими данными. Хорошо понимает последние тенденции в разработке бэкенда и архитектуры, имеет большой опыт в Java и Kotlin.Свою первую программу написал в 1991 году и разрабатывал всю жизнь. После окончания УрГУ занимался наукой — теоретической физикой — в университетах России, Европы и США. С 2015 года перешел в коммерческую разработку, занимался проектами в области Web, Java, BigData, Kotlin, работал как в небольших компаниях, так и в корпорациях. Неоднократно принимал участие в развитии различных стартапов — и в роли разработчика, и в качестве основателя.Среди последних интересов — Serverless для backend, Flutter (frontend для различных платформ), мультиязычные интерфейсы (OpenAPI, gRPC), NewSQL-базы данных, машинное обучение. Руководитель программы

  • Дмитрий Терехов

    Бекенд разработчик на Kotlin. Программировать начал с 2014 года под встраиваемые системы на языках С/С++. Писал ПО для оборонки, программировал микроконтроллеры. Осознав, что делает в своей жизни что-то не то, начал искать себя - писал под мобилки (iOS, Android), изучил фронтенд, а после стал искать работу на JVM стеке. Устроившись Java разработчиком, понял, что нашел свое предназначение. Бекенд мир открыл для него достаточно много интересных направлений и технологий. Любит автоматизацию, консоль, девопс, писать код и помогать людям. В свободное время пишет скрипты на Piton для автоматизации своей работы. Преподаватель

  • Дмитрий Золотов

    Flutter Developer, Yandex

    DevOps, FullStack разработчик (Flutter/Python/Kotlin/GoLang/C++), системный администратор, приглашенный преподаватель в ИТМО, исследователь технологий электронного обучения. Опыт работы - 23 года.Руководил межфакультетской лабораторией перспективных информационных технологий в РГПУ им. А. И. Герцена, участвовал в создании и масштабировании ресурсов для электронного обучения (в т.ч. проект "Российская электронная школа"), проектировал и разрабатывал высоконагруженные веб-приложения и системы автоматизации. Контрибьютор в проект ReOpenLdap. Разрабатывал архитектуру отказоустойчивых конфигураций гибридного облака на основе Consul и Kubernetes, сервисных сетей, интеграционных платформ с использованием AMQP. Также являюсь преподавателем по компьютерным сетям, DevOps, операционным системам, мультимедиа-технологиям. Руководител отделом автоматизации процессов в финансовой организации, в которой был консультантом и DevOps по миграции систем с использованием облачных технологий, а также разработчиком для Android/iOS.Закончил Российский Государственный Педагогический Университет, 2002, учитель физики. Автор серии вебинаров по Kubernetes и кроссплатформенной разработке: https://www.youtube.com/channel/UCs_AMB-HbhHzMhE0VdBZByg Преподаватель

  • Кирилл Крылов

    В последнее время разрабатывал разные программы в разных областях, работал в стартапе, IT компании и вел свои проекты. Сейчас работаю Software Developer’ом в JetBrains, разрабатывая и улучшая новые способы дополнять код. Создавал проекты с нуля почти во всех областях и на разных языках (осталось только затронуть gamedev). ? Преподаю разработку на Android (Java/Kotlin) в Samsung больше 4-ех лет ? Backend разработка, развертка CI/CD и плагина к IntellIJ IDEA на Kotlin в JB ? Инференс нейронных моделей (GPT-2) на Python ? Основатель и ведущий разработчик 2-ух мобильных приложений на React Native+TS и чистом Kotlin ? Фронтенд на Angular (TypeScript)Образование: СПбГУ, прикладная математика и информатика Преподаватель

  • Дмитрий Шагиахметов

    Бэкенд-разработчик в Датана

    Бэкенд-разработчик в Датана. В работе приходится иметь дело не только с бэкендом, но и с фронтендом.Прошел путь от низкоуровневой разработки для микроконтроллеров до разработки микросервисов на Kotlin и Python.В своем багаже имеет опыт разработки: - Программ для контроллеров STM32 (С); - Десктопных приложений для Windows (C#); - Мобильных приложений для Android (Kotlin); - Фронтенд на Angular (Typescript); - Серверных приложений под Linux (Kotlin, Python). Преподаватель

  • Евгений Тюменцев

    Директор компании по разработке программного обеспечения. 20 лет преподаю компьютерные дисциплины в ВУЗе: C++, Kotlin, C#, ООП. Технологии программирования.В прошлом занимался профессионально разработкой многопоточных кросс-платформенных приложений на С++. Код, написанный 14 лет назад, до сих пор работает в составе IBM Watson.Один из результатов - успешная разработка технически сложного коммерческого проекта командой из 7 студентов. Преподаватель