Как сделать так, чтобы проект работал и обслуживал пользовательские запросы даже при деградации части подсистем?
Какие паттерны взаимодействия применить, чтобы сделать простую и надёжную систему?
Как не допустить утечек памяти в нагруженном приложении?
Как избежать проблем при работе с БД?
Как выдерживать растущие нагрузки без покупки или аренды дополнительного оборудования?
Понадобятся знания:
Понимание работы с Базами данных и очередями
Будет большим плюсом:
Опыт работы с Docker
Базовое умение работы в консоли
Опыт коммерческой разработки от года
Опыт работы с Linux
Опыт написания конкурентного/многопоточного кода
Аргументированно выбирать асинхронный подход, чтобы снизить связность системы и повысить общую надёжность
После курса вы сможете
Уверенно писать на Golang и разрабатывать серверные и клиентские приложения
Эффективно использовать сеть для взаимодействия между сервисами и проектировать функциональность исходя из доменной области
Работать и синхронизировать goroutine и проводить оптимизацию под работу в нагруженных приложениях
Эффективно и без неожиданностей распиливать монолит на микросервисы и использовать линтеры, чтобы избежать ошибок
Понимать устройство observability больших систем
Гарантировать качество работы сервиса с помощью юнит- и интеграционных тестов
Главное практика
53 часа практики и сборки собственного полноценного сервиса В каждом модуле — по три практических задания, от простого к сложному. Внимательно читайте условия и ловушки, которые встречаются в процессе работы.
На курсе вы создадите один проект на выбор
C авторизацией, процессингом платежей и хранением счётов. Вы создадите отказоустойчивую систему с возможностью выдерживать отказы сервисов
Если у вас есть готовая идея, уточните у спикера, как реализовать её в рамках нашего курса
C подпиской на события. Можно использовать minio с s3 совместимым протоколом. Разработаете подписку на события добавления/изменения файлов с учётом работы с миллиардами небольших файлов. Реализуете контроль доступа и версионирование версий файлов
C авторизацией, сервисом обработки сообщений и подсистемой доставки обновлений до клиентов. Вы выберете способ хранения данных. Учтёте всплески нагрузки при переподключении клиентов и возможность доставлять сообщения офлайн
Онлайн-банк
Свой проект
Файловое хранилище
Мессенджер
Бесплатная консультация по курсу «Golang-разработчик»
Получить консультацию оставьте заявку и с вами свяжется наш менеджер
Ответим на вопросы:
Gони, Redis, Gони!. Как использовать Redis за пределами key-value storage
Особенности работы с конкурентностью в Golang
Виталий Лихачев
SRE в Booking.com
9+ лет в коммерческой разработке
Занимал позицию Senior Software Engineer в Avito
Выступает с докладами на конференциях
Пишет сложные проекты с нетривиальной бизнес логикой на разных языках
Строит инфраструктуру под проекты в публичных облаках
Спикер курса
Вводная лекция
Проекты в портфолио:
Набор гео-инструментов MAPSLY
Интернет-платформа Avito
SaaS платформа для автоматизации найма
Прошедшие мероприятия
Что будет на курсе?
Кому подойдёт курс?
Какие особенности и нюансы использования есть у Golang?
С чем можно столкнуться на собеседовании?
С чем придётся столкнуться в реальных проектах?
Вся учеба в одном месте!
В личном кабинете доступны все купленные курсы, виден прогресс обучения и полученные сертификаты. У каждого курса есть дневник с уведомлениями от команды Слёрма и кураторов. Подробные инструкции помогут вам эффективно учиться и сохранять мотивацию
Программа
Знакомство с курсом
тема 1
Изучение программы курса и формата обучения
Информация о спикере
Результат прохождения курса
Вводный курс в GO
тема 2
Как собирать и запускать программы в Go
Тестовые задания для закрепления материала
Основные концепции языка
тема 3
Значимые отличия Go от других языков программирования
Из чего состоит программа на Go
Модули, пакеты, концепция указателей и методов
Структуры, массивы, слайсы
Maps, строки и руны
Типичные ошибки с slices/maps/etc
5 практических заданий и бонусная задача для закрепления материала
Конкурентная обработка данных
тема 4
Горутины и каналы
Оператор select и пакет sync
Паттерны конкурентной области
Типичные ошибки с горутинами
5 практических заданий и бонусная задача для закрепления материала
Интерфейсы и работа с ошибками
тема 5
Интерфейсы и работа с ошибками
Error wrapping и пакет multierror
Panic / recover
Типичные ошибки при работе с errors/interfaces/panic
4 практических задания для закрепления материала
Написание тестов
тема 6
Тестирование в Golang
Интеграционные тесты
Fuzzy тестирование
Библиотеки gomock, testify
Ловушки при написании тестов и советы
Практическое задание по написанию тестов
Работа с context
тема 7
Пакет context
Основные концепции языка Go – что дальше?
Практическое задание
Ошибки/проблемы при работе с context
Начало работы над проектом
тема 8
Подготовка основы для проекта
Конфигурация и логирование
Профилирование и оптимизация
Рекомендации по созданию проекта
3 практических задания для закрепления материала
Создание базового сервиса
тема 9
Выбор тематики для проекта
Кодогенерация в контексте Golang
Потенциальные проблемы и ошибки при работе с HTTP
Проблема с таймаутами сервера
Знакомство с rider-service
Работа в Golang с базами данных
Подключение базы данных к собственному проекту
Практическое задание
Делим систему на сервисы
тема 10
Подходы к разделению сервисов
Боремся со сложностями выезда из монолита
Антипаттерны работы в микросервисной среде
Пишем новые сервисы, настраиваем взаимодействие
тема 11
Что такое GRPC и как он применяется в реальных проектах
Асинхронная архитектура
Паттерны развертывания архитектуры
Брокеры сообщений в реальном проекте
Практическое задание
Выкатываем систему в production
тема 12
Совместимость контрактов
Сборка образа/сборка бинарника
Канарейки и отказоустройчивость stateless
Feature toggless
Rollback
Канареечный деплой
Постепенное замещение реплик сервиса новой версией
Смотрим на систему в production
тема 13
Observability:
Что такое Observability?
Зачем нужна наблюдаемость системы?
Способы сбора метрик
Устройство Prometheus
Структурированное логирование
Подключение метрик и логов в собственный проект
Tracing:
Что такое трассировки? Где и когда используются?
OpenTelemetry
Spans
Sampling
Внедрение Tracing в свой проект
Практическое задание
Нагрузочные тесты
бонус
Пирамида тестирования
Нагрузочные тесты: виды, анализ результатов, корректность
При чем тут SRE
Инструменты выполнения тестов
Типичные ошибки при проведении тестов
Постоянное нагрузочное тестирование
Cвидетельство
Именное свидетельство о прохождении курса получает студент, если:
изучил 80% курса
принимал участие в решении практик, которые входят в курс.
Если вы считаете, что знания, полученные на курсе, могут быть полезными на вашем текущем месте работы, оставляйте заявку с контактами компании в форме ниже или обсудите покупку курса с вашим руководителем. Как это организовать, что говорить и куда идти — написали здесь.
Как купить курс
Видеокурс
Видеоуроки
Практические задания
Свидетельство
в рассрочку на 4 месяца или 45 000 ₽ единовременно