![]()
Основы разработки высокопроизводительных приложений на Java
1. Основы языка Java и подготовка среды разработки
Понятия JDK, javac, Maven, Gradle, IDE, Spring. Настройка окружения для разработки, установка среды разработки, подготовка репозитория git и форк репозитория с базовым шаблоном сервиса для дальнейших блоков.
2. Системы версионирования кода
Способы обеспечения одновременной разработки проекта несколькими людьми. Системы контроля версий. Git, SVN. Отличия. Типовые операции.
3. Системы сборки и версионирования программных пакетов
Проблема управления версиями программных модулей и публикации артефактов. Системы сборки Maven и Gradle. Репозиторий артефактов программного кода.
4. Изучения работы фреймворка Spring
Какой жизненный цикл у бина и у приложения, какие есть встроенные механизмы у Spring для работы с часто встречающимися задачами.
5. Работа с presistance слоем
Сохранение данных в БД PostgreSql, проверка данных, работа с ORM Hibernate, транзакции и часть модуля Spring-Data. Тестирование репозиториев.
6. Разработка HTTP API сервиса
Работа с http запросами, обсуждение многослойной архитектуры с разделением по слоям ответственности, обработка ошибок, тестирование контроллеров.
![]()
Классические BigData-системы на основе технологий Hadoop и Spark
1. Общие вопросы организации BigData-систем. Проблемы организации BigData-систем
Определение понятия Большие Данные. Специфика проектирования и создания систем работы с большими данными.
2. Классификация характера задач для выбора подходящей реализации. Методы декомпозиции BigData-задач
Виды задач, решаемых BigData-системами. Зависимость способа решения задачи от ее разновидности. Составные части BigData-систем.
3. Основные метриками для оценки производительности BigData-систем
Виды задач, решаемых BigData-системами. Зависимость способа решения задачи от ее разновидности. Составные части BigData-систем.
4. Знакомство с Hadoop-стеком
Появление и развитие технологии Hadoop. Спектр решаемых задач. Примеры использования в крупных копаниях. Составные части Hadoop-кластера. Экосистема Hadoop-проектов.
5. Парадигма MapReduce
Распределенное выполнение программ. Операции отображения и свертки. Примеры. Возможность переопределять части MapReduce программы в каркасе Hadoop.
6. Разработка MapReduce программ на Java
Особенности реализации функций отображения и свертки в Java. Работа с консолью Hadoop-кластера. Спецификация параметров запуска MapReduce Java-приложения.
7. Интерфейсы программного каркаса Hadoop для различных языков программирования
Возможности Hadoop Streaming API. Примеры реализации MapReduce-программ на языке python и запуска из консоли bash. Текущий контроль.
8. Программный каркас Apache Spark
Состав и назначение Spark-кластера. Спектр решаемых задач. Примеры работы с источниками данных. План выполнения вычислений. Работа с основной и внешней памятью. Использование программного интерфейса Spark RDD.
9. Технология построения аналитических платформ на Apache Spark SQL
Предпосылки появления программного интерфейса Spark SQL. Умные источники данных для Spark.
![]()
Технологии поставки и хранения данных в BigData-системах
1. Импорт данных при помощи Sqoope
Проблема импорта данных в системы пакетной обработки. Импорт данных в HDFS при помощи Sqoop. Настройка количества операций отображения. Передача пароля через командную строку.
2. Технология брокера сообщений
Архитектура событийно-ориентированных BigData-систем. Задача брокера сообщений. Типовые архитектуры систем передачи сообщений. Достоинства и недостатки. Семантики доставки (точно один раз, как минимум один раз, максимум один раз).
3. Брокер сообщений Apache Kafka
Архитектура. Производители, потребители, брокеры. Вопросы масштабирования. Принципы организации долговременного хранения сообщений. Настройка дедупликации сообщений.
4. Поточная доставка данных при помощи Flume
Архитектура Flume. Агент, канал передачи, селектор, слив. Варианты конфигурирования. Примеры и упражнения.
5. Обработка потока данных при помощи Apache Spark Streaming
Принцип микропакетной обработки. Плавающее окно. Спектр решаемых задач. Работа с программным интерфейсом DStream.
6. Проблема масштабирования хранения данных. Работа с классическими СУБД
Определение Базы Данных и Системы Управления Базами Данных. Организация хранения информации в классических СУБД на примере PostgreSQL. Вопросы обеспечения целостности данных. Требования ACID.
7. Распределенные файловые системы
Подходы к хранению данных. Специфика хранения файлов. Архитектура популярных распределенных файловых систем на примере HDFS, NFS v4.1, Lustre. Использование распределенных файловых систем в задачах обработки больших объемов данных.
8. Архитектура NoSQL-систем
Специфика хранения данных по записям. Проблематика обеспечения согласованности данных. Теорема CAP. Архитектура NoSQL (not only SQL) на примере Apache Cassandra и их отличие от классических СУБД.
9. Технология построения аналитических платформ на Apache Hive
Состав и назначение кластера Hive. Связь с технологией Hadoop. Синтаксис запросов HiveQL. Возможность создания пользовательских функций.
10. Кеширование данных. Проектирование кешей
Понятие и назначение кеша данных. Ограничения. Стратегии замещения данных в кеш, стратегии предвыборки. Популярные системы кеширования для BigData-задач.
11. Платформа вычислений в памяти Apache Ignite
Технологии вычислений в памяти и хранения данных в памяти. Кластер Ignite. Возможности Ignite для организации кеширования, вычислений, передачи сообщений и машинного обучения на основе больших данных.
![]()
Контейнеризация и развертывание высокопроизводительных приложений
1. Системы развертывания BigData-приложений
Специфика развертывания распределенных высокопроизводительных приложений. Введение в облачные сервисы (IaaS, PaaS, SaaS). Философия DevOps, непрерывная интеграция и доставка кода.
2. Технология контейнеризации приложений
Технология Docker. Разграничение пространств процессов в операционной системе при помощи cgroups. Состав технологии: файлы докер, реестр образов, контейнеры, демон Docker. Слои доступа к файлам.
3. Docker Swarm – технология масштабирования приложений в кластере
Кластер Docker-хостов. Создание кластера. Масштабирование контейнеров. Маршрутизация входящих соединений. Конфигурирование развертывания в yml-файлах.
4. Архитектура системы оркестрации контейнеров Kubernetes
Оркестрация сервисов масштабных приложений. Проблемы и вызовы. Состав кластера Kubernetes. Основные элементы развертывания (Pod, Service, Route).
5. Динамические Service Mesh на примере Istio
Создание динамических сетей маршрутизации данных между сервисами. Отделение слоя доставки данных и авторизации от бизнес-логики.
Практика, подготовка к защите и защита итогового проекта
Практика, подготовка к защите и защита итогового проекта. В рамках модуля обучающиеся проходят практику на базе индустриального партнера, развивая навыки, полученные в предыдущих модулях, готовят и представляют к защите итоговый проект.