Онлайн-курс «Искусство написания сервиса на Go»

Видео, Текст, Схемы / Самостоятельно с наставником / Обучение в ЛК на сайте автора

  • 7 модулей
  • Сертификат
  • Участие в потоке

Хотите улучшить навыки разработки на Go? Пройдите курс и узнайте, как проектировать и разрабатывать современные веб-сервисы с нуля.

Авторы: Онлайн-школа GOLANG NINJA, Антон Телышев, Дмитрий Назарков

Обновлено: 23.08.2024

57 560  92 096
Скидка 38%
  • Оплата на сайте автора. Цена может отличаться.
Этот онлайн-курс включает:
  • 7 модулей
  • Обучение: в ЛК на сайте автора
  • Когда будете учиться: в любой день в любое время
  • Уровень сложности: для опытных
  • Домашние задания: есть
  • Сопровождение: куратором
  • Сертификат
  • Техническая поддержка: в рабочее время, чат в мессенджере, электронная почта
  • Доступ: сразу после оплаты
Искусство написания сервиса на Go

Дмитрий Назарков

Перейти на сайт

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

  • Написанию веб-сервисов на Go.
  • Тестированию сервисов.
  • Обеспечению безопасности и мониторингу сервисов.
  • Оптимизации производительности сервисов.

Об онлайн-курсе

Go (или Golang)— это мощный и быстрый язык программирования, который благодаря своей простоте и высокой производительности подходит для создания высоконагруженных сервисов. На курсе вы узнаете, как использовать мощные инструменты и функции Go для создания современных веб-сервисов. Конечная задача курса – написать с нуля бэкенд для чата поддержки банка. Проводит курс Дмитрий Назарков — эксперт онлайн-школы GOLANG NINJA.

На занятиях освоите этапы создания сервиса на Go, начиная от проектирования и заканчивая развертыванием. Вы научитесь проектировать архитектуру сервиса, писать сервис и тестировать его, подключать аутентификацию, хранилище и очереди и многому другому. Программа рассчитана на начинающих и опытных IT-специалистов, разработчиков, архитекторов ПО и всех, кто хочет улучшить свои навыки в написании высококачественных веб-сервисов и ищет проверенные курсы ИТ-специалистов.

Краткая программа курса «Искусство написания сервиса на Go»:

  1. Настройка Git-репозитория. Создание СУБД.
  2. Архитектурные принципы. Изучение работающих API-методов.
  3. Поднятие сервера и работа над менеджерским API.
  4. Подготовка скелета web-сокетов.
  5. Презентация MVP и проверка сервиса на работоспособность.
  6. Внедрение новых элементов с использованием любых технологий и инструментов.

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

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

  • В этом модуле мы должны понять правила игры, научиться проходить уроки, выполнять задачи и сдавать рубежные контроли. Также мы с высоты птичьего полёта посмотрим на архитектуру (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, который уже не стыдно показать миру.

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

  • В последнем седьмом модуле тебе будет предоставлена возможность самостоятельно реализовать новые фичи с использованием любых технологий и инструментов, которых требует ваша душа.
  • Формат
    Самостоятельно с наставником
    Видео / Текст / Схемы
    Обучение в ЛК на сайте автора
  • Уровень сложности
    Для опытных
  • Когда вы будете учиться
    В любой день в любое время
  • Домашние задания
    Есть
  • Документ об обучении
    Сертификат Освоение программы курса
  • Сопровождение
    Куратором
  • Общение с группой
    Форум или чат внутри ЛК
  • Техническая поддержка
    В рабочее времяЧат в мессенджереЭлектронная почта
  1. Нажмите на кнопку
    Узнать подробнее
  2. Вы перейдете на детальную страницу онлайн-курса Дмитрия Назаркова. Внимательно прочитайте представленную на ней информацию.
  3. Следуя указаниям, оформите заказ на онлайн-курс.
  4. Обязательно укажите актуальный e-mail. На него придет вся информация, в частности, по доступу к онлайн-курсу.

Если инструкция вам не помогла, пожалуйста напишите нам на почту info@info-hit.ru, мы оперативно поможем вам получить необходимую информацию.

Отзывы об онлайн-курсе

8.13

10 отзывов

10 0 0
Д Дмитрий К.
Проходя курс я опять увидел насколько он качественный и продуманный, сколько в него вложено энергии, знаний и сил. В очередной раз авторы оправдали моё доверие и создали качественный продукт.
05.08.2024
А Анонимный Воин
Прекрасный курс! Это реально единственный мною пройденный курс: где ты много теории превращаешь в практику, при том твой код, проверяют на реально хорошем уровне и не просто проходишь какие то задания, а делаешь по настоящему интересное приложение. Я как раз хотел что-то такое написать и тут появляется курс, где тебя ведут за руку и говорят как писать с минимальным необходимым набором. Да пришлось попотеть с изучением дополнительных инструментов, но оно того стоило. Я пришел в ГО с другого языка, где было много архитектурных подходов и мне как раз было интересно, как можно писать на GO проекты в примерно таком же подходе, скажем мягко так, в стиле "enterprise" уровня и как по мне - авторы с этим, отлично справились. Курс не легкий, над ним надо будет работать по настоящему и это отличает очень сильно от многих других курсов. И под конец поучается ваше собственное приложение, где вы испробуете много полезного из подходов, что реально можно использовать на работе при необходимости. Что для меня было новым в этом курсе: до этого я почти не работал со свагером и поэтому на него убил просто уйму времени для понимания как он работает с нюансами, которые хотели авторы. И также я не имел опыта, напрямую настраивать веб-сокеты на ГО (и я кстати как раз хотел напрямую поработать с сокетами), что также повлияло на скорость исполнения мною некоторых заданий. Были и вебинары, и обратная связь и помощь в чате - все получилось на высшем уровне. Авторам реально не безразлично как вы проходите курс. Это бывает реально редко. Отдельная тема Code Review - там не проходят мимо как на многих курсах, а-ля работает и ладно. Если вы написали плохо пахнущий код, вас обязательно попросят это переписать) и объяснят как. Это как по мне, очень важно при обучении! Единственное во что, как по мне, не попали авторы, это время по нагрузке исполнения заданий. Если наверное будет набита рука писать много и в таком стиле код, наверное и вправду можно было бы попасть где-то в запланированное время, но местами это просто не реально и будете тратить где-то в раза 3 больше времени смело. Авторы это слышат и скорее всего подкорректируют этот момент :) И пусть я был одним из первопроходцев этого курса, авторы с первого раза создали сразу достойный курс, не без косяков конечно, но это мелочи! Мои ожидания от курса в целом оправдались! Я рад что его прошел и рад что есть люди, которые дают отличный опыт и транслируют его в курсах! Я бы порекомендовал этот курс всем, кто особенно пришел с других языков и имеет базу знания языка GO, она тут будет нужна. Хочет быстро понять и увидеть, как можно писать проекты. Также будет полезно и тем кто уже давно работает на GO, чтобы увидеть что-то новое или проверить свои навыки. Благодарю за отличный курс!
04.08.2024
Е Евгений Кривенко
Больше всего наверно запомнился outbox pattern, так как до этого я с таким не сталкивался, и на первый взгляд может показаться, что он не нужен, но в реальности повышает надежность, хоть и размазывает какую-то логику по приложению Больше всего понравился подход авторов к курсу. Подход очень обстоятельный. Возиться с инфраструктурой на второй неделе, особенно с sentry. В авито его используют, но я так понимаю, в модно-молодежных проектах уже используют другие системы (возможно я ошибаюсь), в любом случае он гемморойный Я очень много нового для себя вынес, как и в целом по Go, так и по разным прикольным инструментам (как засетапить логгер и прочее) Доволен сервисом и хочется его дорабатывать (после отдыха) Самые интересные 4-я и 5-я недели, так как там было много нового (outbox, взаимодействие с afc и т.д.), хотя они и самые сложные Самая жесткая неделя — 5-я, опять же кафка, websocket пришлось пописать интересный код Самая скучная неделя — 2-я, озвучивал выше — много возни с инфрой (я не очень люблю) Больше всего времени убил как раз на конкурентный код в outbox (не знал как правильно блокировки сделать) и на работу с кафкой и сокетами Оценку по нагрузке на среднестатистического человека я бы умножал минимум на 2, а в реальности наверно на 3-4. Часто 4 часа превращались в 12-16 часов Правила прохождения очень помогли, в первую очередь не писать много лишних вопросов в чате из-за невнимательности Code Review - супер. Тут сказать нечего, все по делу и быстро Скорость реагирования на вопросы меня устроила. Конечно, когда ты погружен в задачу, хочется, чтобы тебе ответили как можно скорее, но все мы люди и должны отдыхать. Авторы тоже :) Вебинары — классный способ узнать много нового из первых уст, да и просто потрещать на общие темы разработки. Я пришел с весьма странным грейдом :) Я пришел на проект 08.2022 с грейдом примерно junior+ как fullstack node.js, сейчас уже пару месяцев лид :). В реальности до уверенного мидла не хватает аглосиков. И большую часть кода я пишу не на Go, поэтому пришлось попотеть Порекомендовал бы курс тем, у кого есть время и большая мотивация стать хорошим разработчиком. Уровень middle и выше. Менее опытным тоже можно, но готовьтесь страдать :) Вы попали в мои ожидания на 99.99% Насчет других курсов сложно сказать. В 2021 проходил курс по Django. В сравнении ваш курс гораздо сложнее в плане технологий, требуемых знаний и результата, но и лучше организован и продуман (не смотря на заниженную временную оценку). Да и результат тут совершенно другой — в разы круче Насчет ваших других курсов — с удовольствием. Хоть они и не очень дешевые в абсолютных значениях, но они точно стоят своих денег
04.08.2024
А Антон
Очень интересный курс, интересные проблемы и решения(транзакции) и авторская подача с заготовками очень импонирует. Кодогенерация ID просто супер. Жду курс по тестам или придется самому разбираться. Очень хочется унести интеграционные тесты к себе в проект. (Кстати хочется чтобы это еще никак не нарушало ничьих авторских прав). Лайв прохождение сложнее чем оффлайн, но в целом и свои плюсы так же есть. Низкий поклон всем кто смог пройти этот курс до конца, мне повезло что загрузка на работе была небольшой. совмещение этого курса с работой кажется нереальным испытанием. Спасибо :)
03.08.2024
А Алексей
Курс мощнецкий. Есть некоторые решения, которые у меня, например, вызвали сомнения, но учитывая то, насколько он большой, сколько в нём всего, это малая доля. Моё мнение, курс категорически стоит своих денег, но. Во-первых, он рассчитан на уровень мидл и выше. Конечно, может попробовать и джун, но надо понимать, что на пару месяцев у него появится вторая работа (ещё и более сложная, чем основная). И на всякий случай уточню. Джун - это не тот, кто только что закончил курс на Отусе, а тот, кто работает джуном, имеет реальный коммерческий опыт. Во-вторых, авторы слегонца промазали с оценкой по времени. Не знаю, будут ли они пересматривать сроки, но если нет, на 7 недель придётся попрощаться с личной жизнью, вечерами, выходными. На всякий случай уточню - я закончил все 7 недель, но последнюю пока не сдавал. Это я к тому, что представление у меня есть о всей первой части курса. Если что, это восторженный комментарий, просто в моей манере. Я почерпнул оттуда очень много. А я на го работаю уже три года. Не жалею ни разу о том, что прошёл курс. Хотя как у меня плавилось кресло, когда очередная суббота с воскресеньем уходили на него полностью, не передать.
01.08.2024

Другие курсы автора