Сложность
Сложность
Продвинутый
Тип обучения
Тип обучения
Курс
Формат обучения
Формат обучения
С проверкой домашнего задания
Трудоустройство
Трудоустройство
Отсутствует
Сертификат
Сертификат
Да

Стоимость курса

61 704 ₽
есть рассрочка

Чему вы научитесь

  1. Реализовывать функциональные и нефункциональные требования.
  2. Разрабатывать сервисы на Go с упором на продуманную архитектуру и безопасность.
  3. Проектировать API.
  4. Плавать как рыба в воде в инструментарии вокруг проекта на Go.
  5. Разбираться в незнакомых вещах, включая чужой код.
  6. Читать и писать различного вида тесты.
  7. Преодолевать себя, идти вперёд и не сдаваться!

 

О курсе

Глобальная задача курса – написать с нуля бекенд для чата поддержки банка со всеми вытекающими. После прохождения курса не должно остаться непонятных моментов в том, как могут быть разработаны и устроены сервисы на Go.

Начнем с обсуждения архитектуры, организации пакетов, директорий и инструментов, необходимых для локальной разработки. Спроектируем и реализуем клиентское и менеджерское API. Поиграемся с фреймворками, кодогенерацией и WebSocket. Подключим аутентификацию, хранилище и очереди. Не забудем про логирование, конфигурирование и развертывание. И, конечно же, тесты!

Курс разделён на две части – 7 основных модулей, посвящённых непосредственно сервису, и 2 дополнительных модуля, посвящённых его горизонтальному масштабированию, деплою и мониторингу (В РАЗРАБОТКЕ).

Что вы получите после обучения

Приобретаемые навыки
1
Go
2
Golang
3
GoLang
4
Goland
5
Базы данных
6
Навыки системного аналитика
7
WebSocket
8
Разработка ПО
9
Комплексная разработка ПО
10
Архитектура приложений
11
Чистая архитектура
12
Событийно-ориентированная архитектура
13
Архитектура ПО
14
Архитектура информационных систем
15
Архитектура приложений
16
Безопасность веб-приложений
17
Управление доступом и безопасностью
18
Apache Kafka
19
Concurrency
20
SOLID
21
Принципы SOLID
22
Docker Compose
24
docker
25
Работа с Docker
26
Docker compose
27
Docker Hub
28
Docker image
29
Docker-контейнеры
30
Docker-compose
31
Docker Registry Hub
32
Dockerfile
33
Swagger
34
Apidoc/Swagger

Вас будут обучать

Solution Architect (ex Lead Go Developer)

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

  • Выпускник МГТУ им Н.Э. Баумана

  • В прошлом Python/C++/Golang разработчик и тех. лид. Последние года занимаюсь архитектурой решений, в свободное время разрабатывая на Go в своё удовольствие

  • Известен как один из отцов-основателей, автор и ex-руководитель курса "Golang Developer. Professional" в OTUS

Tech Lead, Senior Go Developer

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

  • Выпускник МГТУ им Н.Э. Баумана

  • Самый страшный пират, но удачно притворяется добрым

  • В прошлом Java/Kotlin Android-разработчик. Будучи в Avito полностью мутировал в backend-инженера, а в дальнейшем вырос до тех. лида. Пишу на Go и PHP

Образовательная организация

Хардкорные курсы по изучению языка программирования Go.

Наша цель – прокачать тебя через углублённое изучение конкретной темы с упором на практику и реальный опыт!

Смотри карту развития на https://golang-ninja.ru/

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

Модуль первый. Вводный

В этом модуле мы должны понять правила игры, научиться проходить уроки, выполнять задачи и сдавать рубежные контроли. Также мы с высоты птичьего полёта посмотрим на архитектуру (bird's eye view) и осознаем, что же нам предстоит сделать за курс.

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

 

Модуль второй. Становится интереснее

В этом модуле начнем с запуска зависимостей с помощью docker-compose. Первое на очереди – хранилище PostgreSQL. Чтобы два раза не вставать, сразу прикрутим Sentry.

Передохнем от докеров и поиграемся с кодогенерацией – нам понадобятся идентификаторы сущностей. Будем генерировать их типы. Чтобы идентификаторы не повисли до лучших времен, сразу их заиспользуем: обратно сгенерируем гошную обвязку над хранилищем, предварительно по косточкам разобрав схему данных.

Добавим ещё одну зависимость, которая решит за нас задачу аутентификации и (частично) авторизации – Keycloak. Заведём новый контейнер в docker-compose, познакомимся с фронтенд частью сервиса (не пугайтесь, она будет готовой), добавим пользователей в Keycloak и напишем HTTP-клиент к нему.

Вишенка на торте этого модуля – обмазаться Swagger. Напишем спецификацию клиентского API, сгенерируем обвязку, навесим миддлварей.

К концу модуля у тебя должна быть СУБД и код по работе с ней, решена задача аутентификации и авторизации, сформирован каркас клиентского API.

 

Модуль третий. Архитектура

Новый модуль – новые вызовы.

Начнем с обзора архитектурных принципов, на которые будем ориентироваться при разработке сервиса. TL;DR: мы будем стараться делать всё хорошо. Слоистая архитектура, правильное выстраивание направления зависимостей – наше всё.

Сменим теорию практикой. Будем от и до делать первый usecase – получение истории сообщений в чате клиента банка. Запилим слой репозитория. Запилим юзкейс, который будет этим репозиторием пользоваться. И всё? Нет, ещё добавим мяса в хендлер, который сгенерировали в прошлом модуле. Готовый юзкейс протестируем – запустим UI и посмотрим, как получаем сообщения.

Закрепим усвоенное в предыдущем уроке – сделаем ещё один хендлер, но теперь по отправке сообщения в чат. Перед тем, как бросаться в бой, всё же почитаем немного теории про идемпотентность. Пощупаем E2E-тесты. И, как водится, глядя в заготовку, реализуем отправку сообщения.

В конце модуля у нас должны быть два работающих API-метода.

 

Модуль четвертый. Сложные приколы

Новый модуль, модуль кодинга.

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

Outbox-у нужен кто-то, кто будет отправлять события в шину данных (спойлер – это будет Kafka). Будем этого кого-то называть продюсером. Задача продюсера инкапсулировать в себе логику по шифрованию сообщения и взаимодействию с Kafka. По традиции – теория, заготовка с тестами. Чтобы тебя не мучать при написании интеграционных тестов, конфигурацию Kafka в docker-compose даём сразу 🙈

Идёт четвертый модуль, а менеджеры, которые помогают клиентам решать проблемы, сидят неохваченными. Охват начнем с написания компонентов "пул менеджеров" и сервиса их загруженности. Первый компонент – выдает незанятых менеджеров, готовых помочь своим клиентам (т.е. заставляет работать). Второй компонент следит за тем, чтобы менеджер не слишком много работал (мы ведь просвещенные капиталисты и заботимся о всех, не так ли?).

В заключительном уроке модуля обратим внимание на API менеджера. Поднимем отдельный сервер, подключим менеджерский UI, заведём пару новых методов API по уже отработанным методикам.

В конце модуля продолжает складываться пазл. Добавится парочка хитрых сервисов, начнется работа над менеджерским API.

 

Модуль пятый. РАБотаем!

Добро пожаловать в новый модуль. Продолжим кодить интересные штуки.

Начнем с WebSocket. Чат-сервис требует красоты, сообщения должны появляться в real-time, без перезагрузки страницы. Первым делом сформулируем идеологию их применения. Затем почитаем теоретические выжимки, чтобы точно понимать происходящее, и, наконец, приступим к делу – реализуем пакет, инкапсулирующий в себе работу с вебсокетами. Он будет апгрейдить соединение до вебсокетного, поддерживать его пингами-понгами, читать события из некоего "потока" (реализуем чуть погодя), писать их в WS-соединение.

Продолжим собирать кусочки пазла – реализуем тот самый "поток" событий. Спойлер: в конце урока мы сможем увидеть, как отправленное событие в одной вкладке, появится в другой вкладке 🥳 Публичный API компонента "потока" мы уже знаем. Будут тесты, осталось сделать так, чтобы они проходили. Заведем события в openapi-схему, покодогенерируем, сделаем адаптер и начнем их писать в "поток".

AFC. На входе будет Docker-образ специально обученного искать "опасные" сообщения контейнера. Его мы и называем AFC-эмулятор. Эмулятор либо блокирует, либо разрешает публикацию сообщения пользователя. Наша задача – обрабатывать "вердикты" эмулятора. Готовьтесь к написанию Kafka-консумера 😎

В конце модуля у нас с тобой будет готовый скелет вебсокетов, который останется только обогатить новыми типами событий. Поток событий также будет реализован. Будет поддержана AFC-обработка сообщений.

 

Модуль шестой. Менеджерский флоу

Новый модуль. Чутка передохнем, нагрузки будет поменьше!

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

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

Вишенка на торте – урок так и называется. Научим менеджера отправлять сообщения. По стандарту заведем: ручку, юзкейс, пару методов в репозитории, outbox-задачу. После реализации можно будет залогиниться клиентом и менеджером, и попробовать попереписываться.

В конце всё должно работать. Здесь мы с тобой дошли до MVP, который уже не стыдно показать миру.

 

Модуль седьмой. Свободное плавание

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

Рейтинг курса

3.1
рейтинг
0
0
0
0
0

Может быть интересно

обновлено 29.11.2024 16:00
GOLANG NINJA. Искусство написания сервиса

GOLANG NINJA. Искусство написания сервиса

Оставить отзыв
Поделиться курсом с друзьями