Синхронный курс

Продвинутый Go-разработчик для сетевых инженеров

Кафедра информатики и вычислительной математики

Купить курс
Старт курса
7 апреля 2025
120 000руб/чел
270 ак. ч.
6 мес. длительность длит.

О чем этот курс

О чем этот курс

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

Для кого этот курс

Кто хочет повысить свою квалификацию

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

Опытным специалистам

Тем, кто хорошо разбирается в другом ЯП и, возможно, уже владеет Go, но хочет структурировать свои знания и выйти на новый уровень.

Как проходит курс

Занятия

Еженедельный code-review

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

Семинары

Индивидуальные консультации

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

Лекции

Быть в тренде

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

Экзамен

Два полноценных проекта

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

Перспективы заработка

Go-разработчик

Инфраструктурные Go-разработчики создают системы мониторинга, управления и автоматизации работы с ИТ-инфраструктурой. Эти специалисты особенно востребованы на рынке, т.к. они обладают междисциплинарной экспертизой – опытны как в написании кода, так и в работе с инфраструктурой.

0₽ Junior
0₽ Middle
0₽ Senior

После курса вы получите

Всем успешно завершившим обучение будет выдан документ установленного образца, который повысит конкурентоспособность на рынке труда:

  • • Диплом о профессиональной переподготовке

Вас будут обучать настоящие профессионалы

Дмитрий Ларин
Дмитрий Ларин

Преподаватель, руководитель R&D в Hadal Project, ex-тимлид в ИСП РАН

Кирилл Чеканов
Кирилл Чеканов

Преподаватель, руководитель разработки в Hadal Project, тимлид в Ozon

Евгений Зобницев
Евгений Зобницев

Преподаватель, CTO Factor Group, ex-руководитель эксплуатации/развития сети магистрального оператора связи

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

Рассчитана на 6 месяцев и составлена на основе требований работодателей — будете изучать только то, что действительно пригодится в работе.

Почему Go?

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

Несколько фактов о Go:

• 225 из 291 проектов Cloud Native Computing Foundation (CNCF) используют Go

• Go лежит в основе популярных инструментов контейнеризации (Docker, Kubernetes), телеметрии и мониторинга (Prometheus, Grafana), автоматизации (Terraform, Vagrant), плагинов CNI (Cilium, Calico), экосистемы OpenConfig (gNMI, goyang) и др.

• Go входит в десятку самых высокооплачиваемых языков программирования согласно исследованию Stack Overflow Developer Survey (2023)

Go VS Python

Python является довольно популярным языком программирования в сетевой разработке, поэтому обозначим несколько преимуществ Go по сравнению с ним:

Производительность. Go превосходит Python по производительности практически во всех тестах (The Computer Language Benchmarks Game)

Простота синтаксиса. Программы на Go проще писать и читать, чем написанные на Python, благодаря простому синтаксису, автоматическому форматированию и четкой структуре проектов

Многопоточность. Одна из самых ярких особенностей Go, которая не реализована в Python – многопоточность основанная на встроенных в язык горутинах

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

Отдельно отметим, что Go не уступает Python в количестве доступных библиотек и инструментов, предназначенных для работы с сетевым оборудованием. Что вкупе с его преимуществами делает Go отличным выбором для решения множества задач по автоматизации сети.

Предварительная подготовка

Бэкенд-разработка
– Что такое НТТР (методы, ограничения и семантика)
– Как работать с данными в формате JSON
– Как писать простые SQL-запросы к базе данных
– Как пользоваться терминалом (навигация, работа с файловой системой, переменные окружения)
– Как пользоваться git-клиентом для базовых задач (склонировать репозиторий, создать ветку, закоммитить, запушить)
– Как проходить код-ревью

Сети и распределенные системы
– Как работают современные сети и протоколы (Ethernet, IP, TCP/UDP, HTTP, BGP, SNMP, Netflow и др.)
– Как работать с эмуляторами сетевого оборудования (опыт работы с GNS3, EVE-NG, Containerlab или аналогами)
– Как записывать и анализировать трафик (опыт работы с Wireshark, tcpdump или аналогами)
– Базовый опыт настройки сетевого оборудования – Cisco IOS или аналоги

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

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

Спринт 1: Основы Go Краткая история ЯП Golang, ниша его применения. Иерархия Golang относительно других ЯП. Введение в базовый синтаксис Golang (Операторы объявления переменных, функций, области видимости, основные типы данных и тп). Разбор практических задач.  
Спринт 2: Настройка окружения, структура проектов Введение в процесс разработки ПО. Краткое знакомство со средствами разработки – IDE и git. Разбор структуры проекта на языке Golang. Введение в линтеры и плагины для среды разработки. Объяснение дальнейшего процесса проверки и сдачи заданий.
Спринт 3: Пакеты стандартной библиотеки Разбор более сложных конструкций Go (структуры, эмбединг структур, рекурсия). Разбор пакетов bufio.
Спринт 4: Обработка ошибок в Go. Тестирование Знакомство с различными подходами к реализации обработки ошибок в разных языках. Рассмотрение подхода Golang и различных примеров реализации обработки ошибок. Введение в теорию тестирования ПО. Более детальное рассмотрение unit тестов в Go.
Спринт 5: HTTP REST в Go, пакеты flag, os Введение в протокол HTTP. Введение в реализацию HTTP сервера и клиента на основе стандартного пакета net/http. Разбор пакетов для работы с флагами командной строки и переменными окружения.
Спринт 6: Логирование, работа с файлами Введение в логирование. Разбор подходов к организации логов, подходов к их передаче и хранению. Стандартные и сторонние пакеты для логирования, логирование через middleware. Чтение и запись в файл.
Спринт 7: Сериализация, контексты, пакет time Работа со временем, датами, интервалами и таймерами в Go, использование контекста на примере отмены операций. Разбор стандартных/сторонних сериализаторов. Использование структурных тегов для сериализации.
Спринт 8: Введение в Базы Данных Быстрое введение в СУБД, рассмотрение основных понятий реляционных баз данных. Виды баз данных. Рассмотрение базовых DDL и DML операций, необходимых для создания простейшей схемы базы данных.
Спринт 9: Работа с базами данных в Go Введение в database/sql и инструменты миграций на примере goose/golang-migrate. Шаблон абстрагирования БД за абстрактным интерфейсом. Понятие SQL-драйвера. Запись и чтение в базу данных из кода на Go.
Спринт 10: Многопоточность в Go Основы многопоточности. Многопоточность в Go. Каналы и другие паттерны многопоточности.

Цель – разобраться с более продвинутыми темами и инструментами разработчиков на Go. В рамках этого блока мы рассмотрим основные паттерны проектирования программ на Go, познакомимся с тулингом (профилирование, бенчмарки, документирование), а также рассмотрим кодогенерацию и дженерики, gRPC и OpenAPI (Swagger), Garbage Collector и другие темы.

Спринт 11: Паттерны проектирования, идеология Go Рассмотрение общих для информационных систем паттернов проектирования. - Порождающие паттерны - Структурные паттерны - Поведенческие паттерны Рассмотрение постулатов Go, паттернов/антипаттернов, применимых в Go.
Спринт 12: Тулинг (pprof, бенчмарки, godoc) Рассмотрение процесса туллинга в Go, а именно: - Бенчмарки кода - Инструмент pprof для анализа работы программы на Go. - Документирование кода (godoc)
Спринт 13: Кодогенерация, Дженерики Рассмотрение инструментов кодогенерации в Go на примере генерации клиентов БД/клиентов к API. Рассмотрение функционала дженериков в Go на примере работы с различными числовыми типами.
Спринт 14: gRPC, OpenAPI, web frameworks Рассмотрение инструментов кодогенерации в Go на примере генерации клиентов БД/клиентов к API. Создание gRPC API и OpenAPI (Swagger) документации API.
Спринт 15: Garbage Collector, пакет runtime Рассмотрение принципа работы сборщика мусора в Go. Пакет runtime golang на примере управления работой сборщика мусора, ограничением использования CPU и т.п.

Цель – познакомиться и научиться применять на практике библиотеки для работы с сетевым оборудованием, написанные на Go. В рамках этой темы вы попробуете инструменты по работе с CLI, SNMP, Syslog, BGP, Flow-протоколами, gNMI/gNOI, а также научитесь разбирать "сырой" трафик.

Спринт 16: Библиотеки для работы c CLI Пакет scrapligo и его применение для подключения к сетевым устройствам и удаленного исполнения команд по CLI. Парсинг полученных ответов при помощи textFSM темплейтов
Спринт 17: Библиотеки для работы c "сырыми" пакетами Пакет gopacket и его применение для разбора "сырого" трафика на примерах чтения данных из pcap-файлов и подключения к сетевым интерфейсам. Способы разбора сетевых пакетов по заголовкам.
Спринт 18: Библиотеки для работы c SNMP и Syslog Пакеты goSNMP и goSyslog и их применение для взаимодействия с сетевым оборудованием.
Спринт 19: Библиотеки для работы c протоколом BGP Пакет goBGP и его применение для взаимодействия с сетевым оборудованием по протоколу BGP. Использование библиотечной версии для парсинга пакетов BGP.
Спринт 20: Библиотеки для работы c потоками трафика Пакет goFlow2 и его применение для получения данных о потоках трафика (NetFlow/IPFIX/sFlow) с сетевого оборудования.
Спринт 21: Библиотеки для работы c gNMI/gNOI Пакет gNMIc для подключения к сетевому оборудованию по gNMI/gNOI интерфейсам для получения конфигураций и телеметрии. Работа с моделями OpenConfig YANG в Go при помощи пакета goyang.

Финальный проект курса в котором вы реализуете скрапер CLI на языке Go для операционной системы Cisco IOS. Вы также можете выбрать свою тему проекта по автоматизации работы с сетями и завершить его под руководством своего ментора.

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

  • Приобретете и закрепите навыки программирования на Go уровня middle разработчика
  • Научитесь разрабатывать современные высоконагруженные микросервисы на Go
  • Научитесь решать задачи автоматизации сети на Go
  • Освоите архитектурные паттерны
  • Сделаете 2 проекта с нуля и добавите их в портфолио
  • Go для обработки PCAP dump'ов
  • Go для работы с сетевыми протоколами (BGP, Netflow и др.)
  • Go для работы с SSH, CLI, YANG
  • Go для работы с телеметрией и статистикой (gNMI, SNMP)
  • REST API
  • HTTP
  • Базы данных
  • Многопоточность
  • Профилирование
  • Стилизация
  • Дженерики
  • Кодогенерация
  • gRPC

Инструменты и навыки

Оплатить курс или получить
бесплатную консультацию

Оставьте ваш запрос и мы свяжемся с вами

Продвинутый Go-разработчик для сетевых инженеров

120 000₽/чел.
  • - Оплата по оферте или после заключения договора
  • - Гарантии качества вашего обучения

Часто задаваемые вопросы

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

Онлайн обучение – синхронные и предзаписанные курсы - проходит на нашей удобной платформе. Офлайн (очное) обучение может проходить на Физтехе или на территории заказчика.

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

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

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

С этим курсом покупают

Основы операционных систем

Основы операционных систем

3 600₽/чел.

Центр дополнительного профессионального образования "Пуск"

72 часа
Онлайн