Облачные сервисы. Часть 1 из 5 [OTUS]

198

Расширенный практический курс по работе с облачными сервисами

Что даст вам этот курс:
В курсе сделан основной упор на выполнение практических задач в облачных системах AWS и GCP, с которыми может столкнуться программист / технический руководитель, как в малом стартапе, так и в большой компании.
Подобные задачи включают в себя весь жизненный цикл становления проекта: от планирования архитектуры и выбора инфраструктуры, и заканчивая вводом системы в промышленную эксплуатацию, со всем вытекающим (ci/cd, мониторинг, и т.д.).

Фишки курса :
1) много практики: соотношение теории и практики 20/80
2) решение реальных задач на протяжении всего курса (создание своего приложения)
3) только нужные сервисы: данный курс будет включать в себя весь необходимый набор сервисов, который поможет при развертке инфраструктуры
4) адаптированный курс для программистов: потребуются только минимальные знания linux и любого известного языка программирования

После курса вы научитесь:
1) планировать и развертывать инфраструктуру в облачной системе (начиная от деплоя приложения и заканчивая настройкой приватной сети, CDN и репозиториев), на базе AWS и GCP;
2) проектировать архитектуру, с учетом особенностей облачных решений и предоставляемых ими сервисов;
3) поймете, как считать экономику и планировать бюджет, исходя из потребностей архитектуры.

Курс подойдет:
1) разработчикам с опытом работы уровня middle+ / senior / team lead, которым необходимо развертывать приложения, настраивать инфраструктуру, БД, думать о вопросах безопасности и экономике ресурсов
2) специалистам, которые хотят развить практические навыки работы с облачными сервисами и которые уже занимаются разработкой веб-приложений, порталов, сервисов (или любым другим видом backend-разработки)

Необходимые знания:
Знание и опыт работы в одном из следующих стеков: Java (spring / Java EE), Node.js, C# (.net), python (django), Golang, PHP

Программа курса

  • 1 Cloud computing in theory
    1 Введение в облачные сервисы что такое облако. Виды предоставляемых сервисов (виртуальные машины, контейнеры, сервисы). Обзор популярных облачных решений (AWS, GCP, Azure, IBM bluemix) и их возможностей.
    2 Подходы к выстраиванию инфраструктуры рассмотрим основные подходы к организации инфраструктуры в разрезе решаемых задач. Поговорим о жизненном цикле разработки ПО, архитектурных решениях и их влиянии на инфраструктуру. Затронем проблему “бесшовной” поставки ПО (CI / CD). Рассмотрим паттерн Infrastructure as code, и обсудим проблемы мониторинга.
    Docker кластеры и развертка приложений. Обзор docker swarm и Kubernetes.
  • 2 AWS services
    1 Введение. Основные компоненты платформы AWS разбор основных компонентов платформы AWS (которые будут изучены в рамках курса). Обзор системы управления аккаунтами и доступами AWS IAM.
    2 EC2 инстансы типы инстансов, их возможности и конфигурирование. Работа с инстансами (включение / выключение, подключение по ssh, работа с дисками (EBS, EFS)). Развертка простого веб-сервера. Домашние задания 1 Создать аккаунт на AWS. Создать инстанс на EC2, и развернуть на нем простое веб приложение.
    3 Работа с хранилищами S3 принцип работы хранилища и типовые кейсы использования. Пример заливки простого файла. Интеграции S3 с EC2 инстансом на примере сайта с медиа контентом.
    4 Базы данных развертка базы данных на EC2 (на выбор, MongoDB / Postgres). Базовые стратегии бэкапирования и работа с дисками (EBS / EFS). Проблемы репликации данных и скалирования. Домашние задания 1 Создать еще один инстанс на EC2 и развернуть на нем БД (любую). Цель: Создать еще один инстанс на EC2 и развернуть на нем БД (любую), далее связать созданное веб приложение (в рамках предыдущего урока) с данной базой. Кейс хранения данных на выбор. Пример: сохранять кол-во посещений за день конкретным ip адресом.
    5 База данных как сервис понятие БД как сервис. Развертка БД на основе RDS / DocumentDB сервисов. Миграция данных (на примере развернутой базы на EC2 из предыдущего урока).
    6 Очереди сообщений обзор подходов к организации обмена сообщениями между сервисами. Обзор apache kafka, RabbitMQ, ActiveMQ. Развертка одной из них на EC2 инстансе. Домашние задания 1 Заменить БД на любую базу из предложенных AWS (RDS / DocumentDB). Цель: Заменить БД на любую базу из предложенных AWS (RDS / DocumentDB). На инстансе, где была БД, развернуть любую очередь. Далее необходимо доработать свое веб приложение: нужно добавить микро-сервис, который будет взаимодействовать с разработанным ранее веб приложением. Пример: микросервис может представлять из себя систему нотификаций, и когда с одного ip адреса будет поступать более 100 запросов в день, веб сервис кинет сообщение в очередь, которое заберет микро-сервис нотификации, и например, отправит email системному администратору.
    7 Очереди сообщений как сервис понятие очереди как сервиса. Обзор SQS сервиса. Замена развернутой очереди на EC2 (в рамках предыдущего урока) на SQS.
    8 Serverless applications обзор подхода. Создание lambda функций. Запуск функции на примере загрузки картинки в S3. Запуск функции на примере работы с очередью SQS. Домашние задания 1 Замена очереди сообщений (развернутой в рамках предыдущего ДЗ) на SQS. Цель: Замена очереди сообщений (развернутой в рамках предыдущего ДЗ) на SQS. Замена микросервиса по отправке уведомлений на lambda функцию.
    9 Балансировка нагрузки обзор ELB. Виды балансировщиков. Создание двух инстансов EC2 с балансировщиком. Другие примеры использования.
    10 Container registry идея репозитория контейнеров. Пример использования. Создание, деплой и развертка образов. Автоматизация. Домашние задания 1 Запустить еще один инстанс веб приложения. Цель: Запустить еще один инстанс веб приложения. Создать балансировщик нагрузки и закрепить его за двумя созданными инстансами, где работает веб приложение.
    11 Кластер на Kubernetes когда нужен свой кластер. Пример создания кластера. Развертка простого приложения. Kubernetes и container registry.
    12 Мониторинг зачем нужен мониторинг. Какие метрики. Обзор CloudWatch. Домашние задания 1 Переместить веб приложение в кластер на Kubernetes. Цель: Переместить веб приложение в кластер на Kubernetes. Настроить cloudwatch таким образом, чтобы можно было получать логи веб приложения.
    13 Networking. VPC зачем нужна приватная сеть. Организация своей приватной сети на примере взаимодействия между контейнерами EC2. Создание своего домена и привязка к ресурсу.
    14 CDN что из себя представляет сервис доставки контента в глобальной сети. Обзор технологии Cloudfront. Пример использования CDN для организации кеша веб-сервиса. Домашние задания 1 Создать приватную сеть. Подключить VPN, чтобы можно было работать с ней удаленно. Цель: Создать приватную сеть. Подключить VPN, чтобы можно было работать с ней удаленно. Далее расширить разработанное веб приложение таким образом, чтобы там появился статический контент (картинки, js, css). Далее настроить CDN таким образом, чтобы он кешировал данный статический контент.
  • 3 GCP
    1 Введение основные компоненты платформы GCE (которые будут изучены в рамках курса). Обзор системы управления аккаунтами и доступами Google IAM.
    2 Compute engine и app engine типы сервисов. Отличие compute от app engine. Типы инстансов, их возможности и конфигурирование. Работа с инстансами (включение / выключение, подключение по ssh). Развертка простого вебсервера на compute engine. Развертка простого вебсервера на app engine. Домашние задания 1 Перенести разработанный веб сервис из кластера AWS на compute engine. Цель: Перенести разработанный веб сервис из кластера AWS на compute engine. Привязку к SQS, БД и lambda функцию нужно оставить на AWS.
    3 Работа с хранилищами Cloud storage принцип работы хранилища. Пример заливки простого файла. Интеграции Cloud Storage с инстансом на compute engine на примере сайта с медиа контентом.
    4 Базы данных развертка базы данных на compute engine (на выбор MongoDb / Postgres). Бэкапы и работа с дисками. Проблемы репликации. Домашние задания 1 Развернуть БД на compute engine. Цель: Развернуть БД на compute engine. Перевести веб сервис на работу с новой развернутой БД. Данные необходимо смигрировать.
    5 База данных как сервис развертка БД на основе Cloud SQL / Big Table сервисов. Миграция данных (на примере развернутой базы на compute engine из предыдущего урока).
    6 Очереди сообщений обзор подходов к организации обмена сообщениями между сервисами. Развертка очереди (apache kafka, RabbitMQ, ActiveMQ) на compute engine инстансе. Домашние задания 1 Поднять новый инстанс на compute engine и перенести на него lambda функцию из AWS. Цель: Поднять новый инстанс на compute engine и перенести на него lambda функцию из AWS. Далее поднять еще один инстанс и установить на него любую очередь. Связать эту очередь с веб сервисом и перенесенной lambda функцией.
    7 Очереди сообщений как сервис обзор сервиса PUB/SUB. Замена очереди (развернутой на compute engine в рамках предыдущего урока).
    8 Serverless applications обзор сервиса. Его отличия от AWS lambda. Создание функций. Запуск функции на примере загрузки картинки в cloud storage. Запуск функции на примере работы с PUB/SUB.
    9 Балансировка нагрузки обзор GC LB. Создание двух инстансов compute engine с балансировщиком. Другие примеры использования.
    10 Container registry обзор container registry сервиса. Его отличие от container registry AWS. Пример использования. Создание, деплой и развертка образов. Автоматизация. Домашние задания 1 Запустить еще один инстанс веб приложения. Цель: Запустить еще один инстанс веб приложения. Создать балансировщик нагрузки и закрепить его за двумя созданными инстансами, где работает веб приложение.
    11 Кластер на Kubernetes обзор реализации кластера на google cloud. Отличия от AWS Kubernetes. Пример создания кластера. Развертка простого приложения. Kubernetes и container registry
    12 Мониторинг обзор stackDriver. Пример использования stackDriver на развернутом приложении в compute engine. Пример использования на развернутом приложении в Kubernetes. Домашние задания 1 Переместить веб приложение в кластер на Kubernetes. Цель: Переместить веб приложение в кластер на Kubernetes. Настроить cloudwatch таким образом, чтобы можно было получать логи веб приложения.
    13 Networking. VPC обзор VPC на google cloud. Организация своей приватной сети на примере взаимодействия между инстансами на compute engine. Создание своего домена и привязка к ресурсу.
    14 Cloud CDN обзор CDN на google cloud. Пример использования CDN для организации кеша веб-сервиса. Домашние задания 1 Создать приватную сеть. Подключить VPN, чтобы можно было работать с ней удаленно. Цель: Создать приватную сеть. Подключить VPN, чтобы можно было работать с ней удаленно. Далее настроить CDN таким образом, чтобы он кешировал статический контент разработанного веб приложения.
  • 4 Risks and costs
    1 Риски при проектировании (технические и экономические) технические риски при проектировании архитектуры разрабатываемой ИС (отказоустойчивость, скалируемость, защищенность). Экономические риски при проектировании инфраструктуры в разрезе предложенной архитектуры (внеплановое увеличение стоимости, привязка к зависимым сервисам). Типы производств и их потребности (средняя компания, стартап и т.д.). Стадии развития компании и переоценка ценностей.
    2 Планирование бюджета оценка бюджета и стоимости архитектуры. Подходы к сокращению бюджета и последующее влияние на архитектуру системы.