Экскурсии в офис Mail.ru. Успейте записаться!

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

Осень 2019

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


 

1. Разработка серверных приложений на языке Go.
2. Проектирование веб-сервисов.
3. Сборка, деплой и тестирование веб-сервисов.

Подробнее

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

Курс не обучает программированию с нуля - слушатели должны иметь опыт программирования хотя бы в рамках университетских заданий. Курс предполагает большой объем материала и сложные ДЗ, которые займут много времени, но позволят “прокачать” навыки программирования.

При наличии вакансий лучшим выпускникам предлагается стажировка в Mail.Ru Group. За время существования курса в компанию пришло уже 15 выпускников курса по Go.

Подробнее

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

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

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

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

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

Андрей Кучин Андрей Кучин

qq.

Программа

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

Смешанное занятие №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: Рубежный контроль 1  

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

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

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

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

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

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

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