Разработка веб-сервисов на Go

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

- разработка серверных приложений на языке Go
- проектирование веб-сервисов
- сборка, деплой и тестирование веб-сервисов

Подробнее

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

Подробнее

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

Дмитрий Дорофеев Дмитрий Дорофеев

Выпускник ИУ6 и Технопарка. Руководитель группы разработки Почты

Василий Романов Василий Романов

Технический менеджер проекта Почта@Mail.ru

Сергей Гречкин-Погребняков Сергей Гречкин-Погребняков

Работаю в Mail.Ru с января 2015 года. Окончил кафедру "Прикладная математика" МГТУ им. Н.Э.Бауман...


Подробнее

Программа

занятие Часы в ауд. + сам. работа

Смешанное занятие №1: Введение. Основы Go. Настройка окружения.   + ДЗ №1

Мы рассмотрим основы языка, такие как базовые переменные, сложные типы данных (слайсы и отображения) и управляющие структуры (условые операторы, циклы). Поговорим про функции, структуры, методы и интерфейсы. Настроим окружение для разработки и напишем первую программу на Go.
Домашнее задание №1: ДЗ №1
Настроить окружение. Написать калькулятор и покрыть его тестами.
4 часа + 4 часа СР

Лекция №1: Асинхронная модель Go.   + ДЗ №2

В этой лекции мы расскажем самой сильной стороне Go - асинхронном программировании. Рассмотрим горутины и чем они отличаются от полноценных тредов. Поговорим про каналы, как средство передачи данных между горутин. Поднимем вопрос гонки данных (data race) и узнаем, как найти такие места и что есть в языке Go для работы с ними - мютексы, атомики.
Домашнее задание №2: ДЗ №2
Написать программу, считающую хеши параллельно
4 часа + 4 часа СР

Лекция №2: Работа с сетью. HTTP   + ДЗ №3

Мы научимся работать с сетью по протоколу TCP, познакомимся с протоколом HTTP и особенностями работы с ним в Go. Также затронем вопрос тестирования HTTP сервисов.
Домашнее задание №3: ДЗ №3
Поднять веб-сервер, интегрировать его с фронтендом. Начать делать авторизацию
4 часа + 4 часа СР

Смешанное занятие №2: Проектирование API. Авторизация.   + ДЗ №4

На лекции рассмотрим различные способы организации API. Познакомимся с такими понятиями как RPC, REST, GraphQL. Расскажем про различные способы авторизации пользователей.
Домашнее задание №4: ДЗ №4
Готовая авторизация. Scoreboard с пагинацией.
4 часа + 4 часа СР

Рубежный контроль №1: Рубежный контроль  

Проверка заданий модуля
4 часа + 4 часа СР

Лекция №3: Вебсокеты. Фреймворки. Архитектура.   + ДЗ №5

Познакомимся с паттернами и лучшими практиками разработки веб-сервисов. Рассмотрим несколько фреймворков для Go.
Домашнее задание №5: ДЗ №5
Применить middlewares в проекте. Начать использовать роутер
4 часа + 4 часа СР

Смешанное занятие №4: Работа с базами данных   + ДЗ №7

Научимся работать с различными типами хранилищ (mysql, mongo, redis). Рассмотрим протокол AMQP для очередей.
Домашнее задание №7: ДЗ №7
Начать хранить все данные в базе
4 часа + 4 часа СР

Смешанное занятие №3: Игровая механика   + ДЗ №6

Научимся работать с вебсокетами для асинхронного общения клиента и сервера. Научимся строить бекенд для игр
Домашнее задание №6: ДЗ №6
Начать писать многопользовательскую игровую логику
4 часа + 4 часа СР

Лекция №4: Микросервисы   + ДЗ №8

Рассмотрим микросервисную архитектуру, ее достоинства и недостатки. Познакомимся с gRPC для общения между сервисами
Домашнее задание №8: ДЗ №8
Вынести авторизацию и игру в отдельные сервисы
4 часа + 4 часа СР

Рубежный контроль №2: Рубежный контроль  

Проверка заданий модуля
4 часа + 4 часа СР

Рубежный контроль №3: Предзащита  

Предзащита
4 часа + 4 часа СР

Смешанное занятие №5: Конфигурирование, логирование, мониторинг.   + ДЗ №9

Рассмотрим различные библиотеки для логирования. Подключим систему мониторинга, научимся строить графики. Рассмотрим способы конфигурирования сервиса.
Домашнее задание №9: ДЗ №9
Логировать все события. Завести мониторинг. Подключить remote config
4 часа + 4 часа СР

Смешанное занятие №6: Рефлексия, кодогенерация. Производительность   + ДЗ №10

Научимся работать с рефлексией и кодогенерацией. Рассмотрим вопросы производительности, профилирования приложений.
Домашнее задание №10: ДЗ №10
Начать использовать библиотеки с кодогенерацией
4 часа + 4 часа СР

Хакатон №1: Хакатон  

Хакатон
8 часа

Рубежный контроль №4: Рубежный контроль  

Проверка заданий модуля
4 часа + 4 часа СР

Смешанное занятие №7: Deploy. CI   + ДЗ №11

Познакомимся с docker, научимся упаковывать свой сервис и доставлять его до продакшена. Научимся использовать CI для автоматизации тестирования и деплоя.
Домашнее задание №11: ДЗ №11
Задеплоить игру
4 часа + 4 часа СР

Смешанное занятие №8: Продвинутые темы   + ДЗ №12

Изучим unsafe и cgo. Поговорим про современные подходы к разработке бекенда, сервисы, упрощающие разработку. Познакомимся с линтерами и научимся их применять в работе.
Домашнее задание №12: ДЗ №12
Прогнать свой код через gometalinter и исправить ошибки
4 часа + 4 часа СР

Рубежный контроль №5: Рубежный контроль  

Проверка заданий модуля
4 часа + 4 часа СР

Экзамен №1: Защита итогового проекта  

Публичная защита проекта
4 часа + 4 часа СР