Онлайн-курс "Go и архитектура программного обеспечения" — разрабатывайте Infrastructure as Code-архитектуру с нуля | robot_dreams
  • < Живой онлайн-курс >
  • < 9 недель >
  • < старт 13.01 >
Владислав Школа

Владислав Школа

Solutions Architect, Startups в Amazon Web Services

Go и архитектура программного обеспечения

Разработайте Infrastructure as Code-архитектуру с нуля и научитесь обеспечивать отказоустойчивую работу систем

О курсе

Когда проект обрастает фичами, с каждым новым обновлением становится все сложнее разобраться в полотнах кода, сохранять высокую производительность, выявлять и устранять баги. В результате ― в один момент система может не выдержать нагрузки, а бизнес потеряет деньги. Это можно предотвратить, если научиться проектировать системы на старте так, чтобы потом они легко могли масштабироваться и при этом корректно работать.

На курсе вы освоите язык Go, сможете легко интегрировать его в текущий бэкенд и писать на нем микросервисы. Научитесь проектировать архитектуру для высоконагруженных систем и получите набор инструментов, подходов и решений в области системного дизайна.

  • 11 ключевых инструментов для системного дизайна
  • работа с распределенными системами
  • проектирование собственной архитектуры по итогам курса

Специализация курса

курс подойдет
  • engineers, backend developers
  • software architects
  • DevOps, Tech Leads, CTO
нужно
  • кодить как минимум на одном языке программирования
  • понимать структуры данных и основные принципы проектирования мультипоточных программ
  • уметь проектировать SQL или NoSQL базы данных
  • знать, в чем разница между L4 и L7, TCP vs UDP, что такое JSON и Protobuf etc.
  • опыт работы с облачными сервисами [AWS, Azure, GCP] будет преимуществом

13 января — 10 марта

17 занятий (по вторникам и четвергам)

Записаться на курс
Лилия Луценко

О лекторе

Владислав Школа

Solutions Architect, Startups в Amazon Web Services

  • помогает европейским стартапам разрабатывать легко масштабируемые и безопасные архитектуры на позиции Solutions Architect в AWS [Мюнхен, Германия]
  • имеет > 4 лет опыта в инженерии программного обеспечения, кодит на Go, специализируется на Distributed Systems, Cloud, Applied Machine Learning и Stream Processing
  • > 2 лет работал Software Engineer и разрабатывал облачные системы в области машинного обучения в BMW Group [Мюнхен, Германия]
  • разрабатывал рекомендационные и стриминговые системы для дейтинг-стартапа LOVOO c > 2 млн daily active users [Дрезден, Германия]
  • реализовал клиент-серверный сервис загрузки файлов в GlobalLogic [Киев, Украина]
  • имеет степень магистра в области проектирования распределенных систем Дрезденского технического университета
 

Программа

    • занятие 1
    • онлайн 13.01 на 19:00

    Intro. Краткая история архитектурных шаблонов

    Ознакомьтесь с простейшей клиент-серверной архитектурой, а затем с двух- и трехуровневой архитектурой. Разберитесь в преимуществах слоеной архитектуры. Определите различия между монолитом и микросервисом. Научитесь выбирать тип архитектуры в зависимости от задачи.

    • занятие 2
    • онлайн 18.01 на 19:00

    Занятие 2. СGo. Настройка среды и базовый синтаксис

    Изучите базовый синтаксис языка Golang [Go]. Научитесь использовать встроенные структуры данных, классы и интерфейсы, for-/while-циклы и switch-оператор. Решите задачи на базовые структуры данных.

Показать всю программу свернуть программу
    • занятие 3
    • онлайн 20.01 на 19:00

    Go. Мультипоточность

    Узнайте, что такое горутины и в чем их преимущество. Научитесь использовать встроенные библиотеки-парсеры для JSON и программировать базовые http-серверы на Go. Изучите процесс коммуникации между разными каналами. Напишите многопоточную программу на Go.

    • занятие 4
    • онлайн 25.01 на 19:00

    Go. Сервисы и деплой через Docker

    Научитесь применять встроенный http-пакет и внешние фреймворки. Установите Docker и изучите структуру Dockerfile. Создайте Dockerfile для Go-приложения с нуля. Научитесь добавлять Go-зависимости и обрабатывать GET/POST-запросы.

    • занятие 5
    • онлайн 27.01 на 19:00

    Занятие 5. Микросервисы и SOA

    Ознакомьтесь с примерами сервис-ориентированной архитектуры [SOA] и микросервисной архитектуры. Определите их отличия. Изучите протоколы коммуникации между сервисами [REST, SOAP, grpc, GraphQL] и узнайте, зачем нужен Service Discovery. Ознакомьтесь с инструментами для оркестровки контейнеров. Научитесь применять разные протоколы коммуникации между сервисами.

    • занятие 6
    • онлайн 01.02 на 19:00

    Занятие 6. API и REST API

    Узнайте, для чего нужен API и из каких компонентов он может состоять. Изучите типы спецификаций для написания API и научитесь писать спецификацию в OpenAPI. Узнайте, какие существуют интеграции API Gateway и почему он стал таким популярным. Напишите сервис на основе сгенерированного кода от OpenAPI-документа.

    • занятие 7
    • онлайн 03.02 на 19:00

    Шаблоны передачи данных между слабосвязанными компонентами системы

    Определите разницу между синхронными и асинхронными запросами, буферизированными и небуферизированными потоками. Изучите паттерн Public-Subscriber и паттерн Push. Научитесь обрабатывать исключения, пользоваться потоками ввода/вывода для чтения/записи данных и работать с файловой системой. Изучите систему обмена сообщениями на примере Apache Kafka.

    • занятие 8
    • онлайн 08.02 на 19:00

    CРаспределение нагрузки

    Узнайте, зачем необходимо распределять нагрузку. Научитесь балансировать нагрузку с помощью nginx, HA, ELB и DNS-балансировки. Научитесь применять последовательное хеширование для решения проблем с распределением. Решите задачу по системному дизайну с помощью балансировщиков нагрузки.

    • занятие 9
    • онлайн 10.02 на 19:00

    Проблемы распределенных систем

    Узнайте, в чем суть САР-теоремы и почему полная определенность невозможна в распределенных системах. Изучите возможные решения проблем в распределенных системах: двухфазная блокировка, алгоритмы консенсусов [RAFT, Paxos] и распределенные транзакции.

    • занятие 10
    • онлайн 15.02 на 19:00

    Базы данных в распределенных системах

    Поймите разницу между транзакционными [OLTP] и аналитическими [OLAP], реляционными [SQL] и нереляционными [NoSQL] базами данных. Ознакомьтесь со способами масштабирования баз данных. Изучите опции масштабирования в DynamoDB.

    • занятие 11
    • онлайн 17.02 на 19:00

    Event-driven архитектура

    Узнайте, что такое событие и как правильно определить его структуру. Изучите разницу между тонкими и толстыми событиями. Ознакомьтесь с паттерном Eventbus и ситуациями, в которых его нужно применять. Научитесь обрабатывать ошибки в событийно-ориентированных системах.

    • занятие 12
    • онлайн 22.02 на 19:00

    Event-streaming архитектура

    Узнайте, что такое поток событий и какие проблемы он способен решить. Научитесь обрабатывать потоки событий. Разберите отличия самых популярных стриминговых систем: Apache Flink, Kinesis и Kafka. Имплементируйте систему обработки ивентов с помощью одной из систем.

    • занятие 13
    • онлайн 24.02 на 19:00

    Мониторинг распределенных систем

    Поймите, для чего нужно мониторить систему. Узнайте, из чего состоит и как работает стек ELK. Изучите метрики для мониторинга систем. Научитесь работать со сборщиками логов [LogstashD, FluentD, встроенные сборщики провайдеров] и использовать трейсинг в распределенных системах.

    • занятие 14
    • онлайн 01.03 на 19:00

    Модель IaaC [инфраструктура как код]

    Ознакомьтесь с наиболее распространенными проблемами, возникающими при поддержке распределенных систем. Изучите «инфраструктуру как код» и узнайте, как она упрощает работу с багами и мониторинг. Получите краткий обзор инструментов для IaaC и детально изучите эту модель на примере построения инфраструктуры с Cloud Development Kit (CDK).

    • занятие 15
    • онлайн 03.03 на 19:00

    Способы оптимизации высоконагруженной системы

    Научитесь оптимизировать нагрузку на архитектуру с помощью кэширования [Redis/Memcached] и сетей доставки контента [Content Delivery Network, CloudFront, CloudFlare]. Изучите граничные вычисления.

    • занятие 16
    • онлайн 08.03 на 19:00

    Современные подходы к архитектуре

    Ознакомьтесь с современными тенденциями и подходами к разработке архитектур: предметно-ориентированное проектирование [Domain Driven Design], шаблон CQRS, гексагональная архитектура [Hexagonal Architecture] и микрофронтенды.

    • занятие 17
    • онлайн 10.03 на 19:00

    Презентация курсового проекта

    Спроектируйте и запишите в IaaC архитектуру системы на выбор. Система должна иметь возможность масштабироваться, код ― запускаться без ошибок, сервисы ― написаны на Go или Python [если планируется больше одного сервиса]. Презентуйте проект лектору и коллегам-студентам.

Cкилы после курса

  • 1

    язык GO

    знаете базовый синтаксис Gо и пишете на нем микросервисы, можете создавать Gо-приложения с нуля и деплоить их через Docker

  • 2

    best practices построения архитектур

    знакомы с лучшими практиками построения архитектуры ПО, умеете подбирать архитектуру под конкретную задачу

  • 3

    оптимизация и масштабирование

    понимаете принципы IaaC-архитектуры, создаете легко масштабируемые и отказоустойчивые приложения, можете оптимизировать существующую архитектуру вашего проекта на текущей работе

Заявка на курс

Регистрируясь, вы соглашаетесь с условиями
договора-оферты и политикой конфиденциальности.

What if … :

  • 1. ... курс не понравился — можно вернуть деньги.
  • 2. ... не подходит график занятий — уточните, когда будет следующий поток.
  • 3. ... вы пропустили занятия — сохраняется запись.