We may earn an affiliate commission when you visit our partners.
Maksim Zhashkevych

Язык Go - относительно молодой и достаточно мощный язык, который широко используется для Backend разработки, а также создания сетевых и инфраструктурных приложений.

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

Read more

Язык Go - относительно молодой и достаточно мощный язык, который широко используется для Backend разработки, а также создания сетевых и инфраструктурных приложений.

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

В курсе разбираются основы языка, после чего мы плавно перейдем к решению практических задач и разработки Backend приложений. По прохождению вы научитесь работать с основными конструкциями языка, разрабатывать HTTP клиенты и серверы, взаимодействовать с базами данных (Postgres & MongoDB), структурировать свои приложения, реализовывать регистрацию и аутентификацию, работать с gRPC, шиной сообщений RabbitMQ, Docker & Docker Compose и многое другое.

Кому подойдет данный курс?

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

Если вы пишете на JS/Python/Ruby/PHP и тд. и хотите освоить Golang для смены места работы и профессионального роста - тогда этот курс для вас.

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

По прохождению курса вы получите опыт выполнения реальных задач.

Курс нацелен в первую очередь на большое количество практики, поэтому в результате прохождения у вас в портфолио на Github будет 3 больших проекта.

Помимо этого, в конце каждого из 8-ми модулей вас ждет домашнее задание с разбором решения.

Enroll now

What's inside

Learning objectives

  • Освоили основные конструкции языка
  • Научились работать с горутинами и конкурентным программированием
  • Поняли как структурировать проект, следуя принципам чистой архитектуры
  • Научились разрабатывать rest api, работать с http & sql
  • Освоили работу с grpc & rabbitmq
  • Получили практический опыт решения распространненых задач и разработки приложений с нуля
  • Поняли что такое docker и как его используют в приложениях на go

Syllabus

После прохождения первого модуля вы освоите все базовые концепции, распространенные конструкции и пакеты из стандартной библиотеки
Базовая программа. Переменные. Константы.
Read more
Функции. Условный оператор if. Обработка ошибок.
Неограниченные аргументы. Анонимная функция. Замыкание. Конструкция switch case.
Указатели. Массивы и указатели. Цикл for
panic(), defer() & recover()
Мапы
Структуры. Кастомные типы
Интерфейсы
Пакеты. Модули. Пакет "time"
[АПДЕЙТ] Дженерики
Дополнительные материалы
Домашние задания
ДЗ
Общепринятая структура проекта
В этом модуле мы с вами разберем на первый взгляд запутанную тему конкурентности и параллелизма, а также научимся работать с горутинами и примитивами синхронизации.
Что такое конкурентность и параллелизм?
Разбираемся с горутинами
WaitGroups
Каналы, оператор select
Race condition
Context
Worker Pool
В этом модуле вы освоите принципы работы сетевых приложений, работу с протоколом HTTP и базами данных SQL
Пакет net/http
API клиент для coincap.io. Работа с JSON
Ping робот с использованием Worker Pool. Graceful Shutdown
HTTP сервер
SQL
Урок по SQL

На этом мы заканчиваем с материалами третьего модуля ?

Предлагаю ознакомится с дополнительными материалами, а затем приступить к выполнению ДЗ

Регистрация
Настало время закрепить все полученные знания на практике.
Практическое задание №1. РЕАЛЬНОЕ Тестовое задание на Junior Golang Developer
В этом модуле мы разберем подходы к структурированию проекта, файлов, пакетов.
Чистая архитектура
Разбор CRUD приложения
Swagger
Настройка Swagger для проекта на Golang
Конфигурация приложения
Логирование
Зачем нужны gRPC и Message Queue?
В этом модуле мы разберем как реализовать регистрацию и аутентификацию пользователей в нашем приложении.
Авторизация и Аутентификация
Видеоурок по аутентификации
Генерируем JWT
Парсинг JWT. Middleware аутентификации
Refresh токены
В этом модуле вы научитесь работать с протоколом gRPC, поймете зачем нужна шина сообщений на примере RabbitMQ, а также узнаете подходы к интеграции с MongoDB
Что такое RPC (Remote Procedure Call) ?
Что такое очередь сообщений (или брокер сообщений)?
Что такое Микросервисы | Основные принципы и паттерны
gRPC
Разбор сервиса логирования событий
MongoDB
NoSQL для начинающих
Брокер Сообщений
Практическое задание №2. Тестовое задание на Middle / Team Lead Golang Developer
В этом модуле мы с вами разберем принципы написания Unit- и Интеграционных тестов, а также отладки приложений.
Что такое тестирование и зачем оно нужно?
Unit тестирование. Введение
Unit тестирование на примере Creatly
Интеграционное тестирование на примере Creatly
Дебагинг с помощью dlv

Задание этого модуля - покрыть один из предыдущих проектов тестами.

В заключительно модуле вы научитесь работать с Docker, поймете принципы развертывания приложений и настройки CI/CD пайплайнов, а также работы с S3
Что такое деплоймент и зачем нужен Docker?
CI/CD & Культура DevOps
Docker на практике. Makefile. Linter
DigitalOcean. Работа с VPS
GitHub Actions
Работа с S3
[LIVE] Деплоймент

На этот раз необходимо задеплоить один из предыдущих проектов.
Пример решения этой задачи в одной из лекций выше, под названием "[LIVE] Деплоймент".

Это финальный практический проект, в котором вы закрепите все полученные знания
Дипломная работа

Save this course

Save GOLANG NINJA - Разработка Веб-Приложений на Go to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in GOLANG NINJA - Разработка Веб-Приложений на Go with these activities:
Прочтите книгу «The Go Programming Language»
Прочтите книгу, чтобы получить более полное и глубокое понимание языка Go.
Show steps
  • Разделите книгу на главы и читайте по одной главе в день.
  • Выполняйте упражнения из книги.
  • Обсуждайте сложные темы с другими разработчиками.
Прочтите книгу «Go in Action»
Прочтите книгу, чтобы получить более глубокое понимание языка Go и его применения в веб-разработке.
Show steps
  • Разделите книгу на разделы и читайте по одному разделу в день.
  • Выполняйте примеры кода из книги.
  • Делайте заметки о ключевых концепциях.
Создайте простое веб-приложение на Go
Начните разрабатывать простое веб-приложение, чтобы применить полученные знания на практике и закрепить навыки.
Show steps
  • Выберите простую задачу для веб-приложения (например, список задач).
  • Настройте базовый HTTP-сервер на Go.
  • Реализуйте основные функции приложения (создание, чтение, обновление, удаление).
  • Используйте базу данных для хранения данных.
Three other activities
Expand to see all activities and additional details
Show all six activities
Напишите статью о конкурентном программировании на Go
Напишите статью, чтобы углубить свои знания о конкурентном программировании и поделиться ими с другими.
Show steps
  • Изучите различные подходы к конкурентному программированию на Go.
  • Выберите тему для статьи (например, горутины, каналы, мьютексы).
  • Напишите статью, объясняющую концепции и приводящую примеры кода.
  • Опубликуйте статью в блоге или на платформе для разработчиков.
Создайте Dockerfile для веб-приложения
Создайте Dockerfile, чтобы научиться контейнеризировать веб-приложения на Go и упростить их развертывание.
Show steps
  • Изучите основы Docker и Dockerfile.
  • Создайте Dockerfile для своего веб-приложения.
  • Соберите Docker-образ и запустите контейнер.
  • Проверьте, что приложение работает в контейнере.
Внесите вклад в open-source проект на Go
Внесите вклад в open-source проект, чтобы получить опыт работы с реальным кодом и улучшить свои навыки разработки на Go.
Show steps
  • Найдите open-source проект на Go, который вам интересен.
  • Изучите код проекта и найдите ошибки или улучшения.
  • Отправьте pull request с исправлениями или улучшениями.
  • Участвуйте в обсуждении кода с другими разработчиками.

Career center

Learners who complete GOLANG NINJA - Разработка Веб-Приложений на Go will develop knowledge and skills that may be useful to these careers:
Разработчик Backend
Разработчик Backend создаёт и поддерживает серверную логику для веб-приложений. Этот курс может помочь в освоении языка Go, который широко используется в Backend разработке. В частности, курс содержит информацию о разработке HTTP серверов, взаимодействии с базами данных (Postgres и MongoDB), реализации регистрации и аутентификации. Курс особенно ценен благодаря своей ориентации на практику, созданию реальных проектов и разбору домашних заданий. Это поможет разработчику Backend получить необходимые практические навыки для работы с современными Backend технологиями. Если вы желаете овладеть современными технологиями серверной разработки и расширить спектр ваших профессиональных возможностей, то этот курс – отличный выбор.
Разработчик Go
Разработчик Go специализируется на создании приложений с использованием языка Go. Курс предоставляет углублённое понимание основ языка Go и его применения для разработки веб-приложений. Особое внимание уделено созданию REST API, работе с gRPC и RabbitMQ, а также Docker и Docker Compose. Разработчик Go получает практический опыт решения распространённых задач и разработки приложений с нуля. Курс помогает разработчику Go освоить современные инструменты и подходы к разработке высоконагруженных приложений. Если вы хотите стать востребованным специалистом на рынке труда, этот курс поможет вам получить необходимые знания и опыт.
Инженер DevOps
Инженер DevOps автоматизирует процессы разработки и развёртывания приложений. Курс может быть полезен, так как он охватывает работу с Docker и CI/CD пайплайнами, что является ключевым для DevOps. В частности, курс знакомит с принципами деплоймента приложений, настройкой CI/CD и работой с S3. Инженер DevOps получает навыки работы с инструментами, необходимыми для автоматизации сборки, тестирования и развёртывания приложений на Go. Если ваша цель – стать высококвалифицированным инженером DevOps, данный курс станет важным шагом на этом пути.
Архитектор программного обеспечения
Архитектор Программного Обеспечения отвечает за проектирование и создание архитектуры сложных программных систем. Этот курс может оказаться полезным, поскольку он касается структурирования проектов, следуя принципам Чистой Архитектуры. Кроме того, курс охватывает работу с gRPC и Message Queue, что важно при проектировании микросервисных архитектур. Архитектор Программного Обеспечения получит возможность углубить свои знания в области современных подходов к проектированию и разработке приложений. Если вы планируете строить карьеру в области архитектуры программного обеспечения, этот курс может помочь вам расширить свой кругозор и получить новые навыки.
Специалист по Инфраструктуре
Специалист по Инфраструктуре занимается настройкой и поддержкой IT инфраструктуры, на которой работают приложения. Так как курс охватывает темы, связанные с Docker и CI/CD, он будет очень полезен для этой роли. Специалист по Инфраструктуре получит представление о том, как приложения на Go разворачиваются и поддерживаются в production. Специалист по Инфраструктуре может использовать полученные знания для оптимизации процессов деплоя и мониторинга приложений. Тем, кто стремится к углублению знаний в области инфраструктурных решений, этот курс может послужить отличным стартом.
Тестировщик программного обеспечения
Тестировщик Программного Обеспечения отвечает за обеспечение качества программного продукта. Этот курс может быть полезен, так как он знакомит с принципами написания Unit- и Интеграционных тестов. Тестировщик Программного Обеспечения узнает, как тестировать приложения на Go и как использовать инструменты для отладки. Тестировщик сможет лучше понимать код и разрабатывать более эффективные тесты. Если вы хотите улучшить свои навыки в области тестирования, этот курс может послужить хорошим дополнением к вашему багажу знаний.
Инженер по Автоматизации Тестирования
Инженер по Автоматизации Тестирования разрабатывает автоматизированные тесты для программного обеспечения. Курс может быть полезен, поскольку он охватывает принципы написания Unit- и Интеграционных тестов на Go. Инженер по Автоматизации Тестирования сможет применять полученные знания для создания автоматизированных тестов для приложений, разработанных на Go. Инженеру будет проще понимать архитектуру и код тестируемых приложений. Если вы стремитесь к автоматизации процесса тестирования, этот курс может расширить ваши возможности.
Менеджер проектов
Менеджер Проектов управляет процессом разработки программного обеспечения. Курс может быть полезен для понимания принципов разработки веб-приложений на Go и технологий, используемых в проекте. Менеджер Проектов сможет лучше понимать задачи команды разработчиков и эффективнее планировать сроки и бюджет проекта. Менеджер будет в курсе современных трендов в разработке Backend и сможет принимать более обоснованные решения. Тем, кто ищет возможности улучшить свои навыки управления проектами в сфере IT, этот курс будет полезным.
Технический писатель
Технический Писатель создаёт документацию для программных продуктов. Курс может быть полезен, так как он даёт общее представление о процессе разработки веб-приложений на Go. Технический Писатель сможет лучше понимать терминологию и концепции, используемые разработчиками, и создавать более качественную документацию. Писатель сможет более эффективно взаимодействовать с разработчиками и задавать правильные вопросы. Если вы хотите создавать качественную и понятную документацию для IT продуктов, этот курс будет полезен.
Системный администратор
Системный Администратор поддерживает работоспособность IT-систем. Курс может быть полезен, так как он затрагивает темы, связанные с Docker и деплоем приложений. Системный Администратор получит общее представление о том, как разворачиваются приложения на Go и с какими инструментами это делается. Системный Администратор сможет лучше понимать процессы деплоя и мониторинга приложений. Если вы хотите расширить свои знания в области эксплуатации IT-систем, то этот курс может быть полезен.
Сетевой Инженер
Сетевой Инженер проектирует и поддерживает компьютерные сети. Курс может быть полезен, так как он включает разработку сетевых приложений. Сетевой Инженер получит представление о том, как приложения взаимодействуют по сети и как обеспечивается их безопасность и производительность. Сетевой Инженер может использовать полученные знания для оптимизации сетевой инфраструктуры и обеспечения надежной работы приложений. Сетевой Инженер будет полезно знать современные походы к разработке сетевых приложений.
Специалист по Безопасности
Специалист по Безопасности обеспечивает защиту IT-систем от угроз. Курс может быть полезен, так как он затрагивает темы, связанные с аутентификацией и авторизацией. Специалист по Безопасности получит представление о том, как реализуются механизмы защиты в веб-приложениях. Специалист сможет лучше понимать потенциальные уязвимости и способы их устранения. Если вы хотите улучшить свои навыки в области безопасности, этот курс может дать вам полезный старт.
Аналитик данных
Аналитик Данных занимается анализом данных и подготовкой отчётов. Курс может быть полезен, так как он затрагивает работу с базами данных (Postgres и MongoDB). Аналитик Данных получит представление о том, как данные хранятся и обрабатываются в веб-приложениях. Аналитик сможет лучше понимать источники данных и логику их обработки. Если вы хотите углубить свои знания в области анализа данных, этот курс может дать вам полезный контекст.
Продуктовый Менеджер
Продуктовый Менеджер отвечает за развитие продукта и его соответствие потребностям рынка. Курс может быть полезен, так как он дает общее представление о процессе разработки веб-приложений на Go. Продуктовый Менеджер сможет лучше понимать возможности и ограничения технологий, используемых в продукте. Продуктовому Менеджеру будет проще общаться с командой разработчиков и принимать обоснованные решения. Для тех, кто хочет развить свои навыки управления продуктом, этот курс может предоставить новые знания.
Дизайнер Пользовательского Интерфейса
Дизайнер Пользовательского Интерфейса создает визуальные решения для веб-приложений. Хотя курс не фокусируется непосредственно на дизайне, понимание архитектуры Backend может помочь дизайнеру создавать более эффективные и удобные интерфейсы. Этот курс may быть полезен для тех, кто хочет лучше понимать, как работают веб-приложения изнутри. Это, конечно же, не является основной областью знаний для дизайнера пользовательского интерфейса, но понимание основ backend разработки может помочь в более тесном сотрудничестве с разработчиками.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in GOLANG NINJA - Разработка Веб-Приложений на Go.
Эта книга предоставляет глубокое понимание языка Go и его применения в реальных проектах. Она охватывает темы, такие как конкурентное программирование, сетевое программирование и работа с базами данных. Книга полезна как для начинающих, так и для опытных разработчиков Go. Она поможет вам лучше понять концепции, представленные в курсе, и применить их на практике.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser