Курс по Golang, обучение программированию на Golang, уроки программирования на Golang
Новогодняя распродажа!
Все курсы со скидкой 30%. Торопитесь!
Подробнее

Курсы

Курсы в разработке Подготовительные курсы
+7 499 110-61-65
Специальная цена

Разработчик Golang

Разработка сетевых приложений и микросервисов на Go
Подойдет ли мне этот курс?

Длительность

5 месяцев

Начало

27 февраля 2020 года

Общая стоимость

70 000 ₽ 49 000 ₽

В месяц

17 000 ₽

В кредит:

17000 ₽ в месяц

Хочу дешевле
Общая стоимость
70 000 ₽ 49 000 ₽
В месяц: 17 000 ₽
В кредит: 49000 ₽
в месяц
Продолжительность
5 месяцев, 4 академ. часа в неделю
Начало занятий
В феврале 2020 года
Что даст вам этот курс

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

Этот курс подойдет для:

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

Особенности курса:


Изучение внутренних механизмов Golang, а не только синтаксиса языка

Практика — реальные проблемы и их решения, с которыми столкнулись авторы при работе с Go

Теория — реальные кейсы перевода на стек языка Golang с других технологических стеков (PHP, C#) крупных высоконагруженных проектов

Выпускной проект (кейс для портфолио) — самостоятельная разработка микросервиса


Выпускники смогут:

- писать production-ready код, многопоточные и конкурентные программы;
- понимать синтаксис и внутреннее устройство языка Go;
- понимать особенности сетевого программирования;
- уметь создавать микросервисы с помощью Go;
- способен разворачивать микросервисы с помощью docker.
Старайтесь решить проблему как можно проще, сложное решение получится само по себе.
Дмитрий Смаль
Преподаватель курса
Старайтесь решить проблему как можно проще, сложное решение получится само по себе.
Дмитрий Смаль
Преподаватель курса
Преподаватели
Александр Давыдов
Lazada Tech Hub Russia
Иван Ремень
Дмитрий Смаль
Старший разработчик в Yandex
Артем Желтак
Rambler&Co
Елена Граховац
Юрий Юрочко
Владимир Дроздецкий
Разработчик инфраструктуры exposcan.ru, crispmessenger.com
Алексей Бакин
Яндекс.Такси
Антон Телышев
В отрасли с 2009 года. Пилил монолит в Lazada, готовил ETL/data pipelines в IPONWEB, разрабатывал инфраструктурные проекты для антиспама в Яндексе. Также был СТО в programmatic-стартапе «Трамплин Медиа».

Опытный разработчик, знает несколько языков программирования (Golang, Python, Perl). Окончил факультет прикладной математики в Московском институте электроники и математики.

В настоящее время проектирует микросервисную архитектуру (Golang/Kubernetes Openshift) в стартапе про умную адресуемую рекламу.

В свободное от работы время интересуется покером, кофе и… Golang — куда же без него?

Учился в технопарке Mail.Ru. В 2013 году начал работать стажером в проекте "Почта" компании Mail.Ru. С 2015 года преподавал различные (в том числе и авторские) курсы в образовательных проектах Mail.Ru. С 2016 года занимал должность руководителя группы в Почте. В том же году получил диплом магистра по специальности "Программная инженерия" в МГТУ им. Н.Э. Баумана.

С 2018 года начал работать в Ситимобил на должности руководителя группы. С апреля 2019 года был назначен руководителем направления серверной разработки. Занимается развитием технических навыков людей, поддержкой их мотивации, развитием отказоустойчивых архитектур, внедрением новых технологий в процесс разработки (golang, tarantool).

Основные технические навыки:
Golang
C
MySQL
Tarantool
Highload architecture
Linux API

Занимается разработкой инфраструктуры Яндекс.Облако и поддержкой реляционных баз данных. За 10 лет прошёл путь от рядового разработчика до старшего программиста в NetCracker, Agava, Mail.Ru Group (проектов «Игры», «Здоровье» и «Дети») и Яндексе.

Может спроектировать архитектуру, реализовать проект с помощью небольшой команды, развернуть необходимую инфраструктуру, организовать процесс разработки и деплоя. Разрабатывал сервера, поддерживающие 500k+ подключений, собирал модный фронтенд на React, отправлял тонны писем по SMTP, проектировал API и базы данных. Владеет Python, JavaScript, Go, Perl и другими языками и технологиями.

Окончил Московский физико-технический институт, где получил степень магистра. Около 6 лет был лектором в Технопарке и Технотреке Mail.Ru. Читал лекции, проводил практические занятия и экзамены. Записал видео-курс «Web-технологии» на Stepik. Проекты на гитхабе - https://github.com/mialinx

Преподаватель
Teamlead/Techlead проекта “Поток” в Rambler&Co
Закончил МГТУ им. Н.Э.Баумана по специальности “Инженер конструктор подьемно-транспортных систем”.
Первую работу нашел случайно, сделав сайт для знакомого.
В web-разработке с третьего курса института. Основные проекты базировались в сфере парсинга данных и рекламных платформ.
Длительное время писал на PHP, впоследствии перешел на Go.
В профессии уже более 8 лет.

Преподаватель
Руководит командой автоматизации TechOps-процессов в немецком финтех-стартапе N26 (Берлин). Пишет на Go с 2015-го, профессиональный опыт в ИТ — 12 лет.

В свободное время выступает с докладами и мастер-классами на российских и международных ИТ-конференциях как DevOps-энтузиаст.

Руководит программным комитетом конференции GolangConf и является соведущей подкаста GolangShow.

Область интересов:
DevOps-культура и автоматизация, построение нативных облачных сервисов, язык программирования Go.

Преподаватель
В 2016 окончил МГТУ имени Н.Э.Баумана (ИУ-7).

Профессиональную карьеру начал в 2014, с 2016 работаю в фин. техе, писал бэкенд в hft-фонде, писал с нуля бэкенд биржи Onederx. С 2019 пишу бэкенд часть брокера другой биржи и руковожу небольшой командой разработчиков.

Люблю новые технологии, постоянно стараюсь знакомиться с чем-то новым и применять это на практике. Основные языки - C++/Go.

Преподаватель
Занимается поддержкой и траблшутингом серверов MySQL, приложений, написанных на PHP, etc. Активно внедряет и использует докер со всей его инфраструктурой. Придерживается мнения, что всё должно быть декларативно описано, поэтому использует Ansible.

Разрабатывает и настраивает инфраструктуру для таких стартапов, как exposcan.ru, crispmessenger.com. Занимается мониторингом при помощи Zabbix и Prometheus, создаёт графики в Grafana.

Чтобы легко подстраиваться под требования бизнеса, деплоит и описывает процессы в Gitlab, собирает и обрабатывает логи в ELK и Graylog2. Любит и умеет пользоваться активным сетевым оборудованием вендора MikroTik.

Преподаватель
Программирую со школы. Работаю с 2006 года. Почти все время писал на С/С++. Начинал с прошивок для мобильных телефонов и ПО для встроенных систем, а в итоге пришел в бэкэнд разработку.

В качестве эксперимента в 2016 году начал писать на Go. За три года проекты выросли от мелких вспомогательных микросервисов до серьезного высоконагруженного бэкэнда для работы с биржевыми данными.

Компании, в которых я приложил руку к созданию и развитию бэкэнда:
Yota, Arrival, TradingView и Яндекс.Такси.

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

Преподаватель
Ведущий Golang-разработчик в “Центр недвижимости от Сбербанка” (ДомКлик). В компании занимаюсь разработкой внутренних сервисов (платежный шлюз, кошелёк компании, система единой авторизации и пр.).

До этого разрабатывал системы мониторинга и внутренние сервисы в Mail.Ru Group, а также участвовал в разработке и поддержке облака, обеспечивающего защиту банков от кибер-мошенничества - Kaspersky Fraud Prevention Cloud.

Окончил бакалавриат и магистратуру в МГТУ им Н.Э. Баумана (кафедра “Компьютерные системы и сети (ИУ6)”). Учился в Технопарке Mail.Ru, где впоследствии преподавал Подготовительную программу по С++.

В свободное время занимаюсь кроссфитом и веду Telegram-канал о Golang (@gouniverse).

Основные технические навыки:
Python
C++
Golang

Преподаватель
Александр
Давыдов
Иван
Ремень
Дмитрий
Смаль
Артем
Желтак
Елена
Граховац
Юрий
Юрочко
Владимир
Дроздецкий
Алексей
Бакин
Антон
Телышев
Преподаватели
Александр Давыдов
Lazada Tech Hub Russia
В отрасли с 2009 года. Пилил монолит в Lazada, готовил ETL/data pipelines в IPONWEB, разрабатывал инфраструктурные проекты для антиспама в Яндексе. Также был СТО в programmatic-стартапе «Трамплин Медиа».

Опытный разработчик, знает несколько языков программирования (Golang, Python, Perl). Окончил факультет прикладной математики в Московском институте электроники и математики.

В настоящее время проектирует микросервисную архитектуру (Golang/Kubernetes Openshift) в стартапе про умную адресуемую рекламу.

В свободное от работы время интересуется покером, кофе и… Golang — куда же без него?

Иван Ремень
Учился в технопарке Mail.Ru. В 2013 году начал работать стажером в проекте "Почта" компании Mail.Ru. С 2015 года преподавал различные (в том числе и авторские) курсы в образовательных проектах Mail.Ru. С 2016 года занимал должность руководителя группы в Почте. В том же году получил диплом магистра по специальности "Программная инженерия" в МГТУ им. Н.Э. Баумана.

С 2018 года начал работать в Ситимобил на должности руководителя группы. С апреля 2019 года был назначен руководителем направления серверной разработки. Занимается развитием технических навыков людей, поддержкой их мотивации, развитием отказоустойчивых архитектур, внедрением новых технологий в процесс разработки (golang, tarantool).

Основные технические навыки:
Golang
C
MySQL
Tarantool
Highload architecture
Linux API

Дмитрий Смаль
Старший разработчик в Yandex
Занимается разработкой инфраструктуры Яндекс.Облако и поддержкой реляционных баз данных. За 10 лет прошёл путь от рядового разработчика до старшего программиста в NetCracker, Agava, Mail.Ru Group (проектов «Игры», «Здоровье» и «Дети») и Яндексе.

Может спроектировать архитектуру, реализовать проект с помощью небольшой команды, развернуть необходимую инфраструктуру, организовать процесс разработки и деплоя. Разрабатывал сервера, поддерживающие 500k+ подключений, собирал модный фронтенд на React, отправлял тонны писем по SMTP, проектировал API и базы данных. Владеет Python, JavaScript, Go, Perl и другими языками и технологиями.

Окончил Московский физико-технический институт, где получил степень магистра. Около 6 лет был лектором в Технопарке и Технотреке Mail.Ru. Читал лекции, проводил практические занятия и экзамены. Записал видео-курс «Web-технологии» на Stepik. Проекты на гитхабе - https://github.com/mialinx

Преподаватель
Артем Желтак
Rambler&Co
Teamlead/Techlead проекта “Поток” в Rambler&Co
Закончил МГТУ им. Н.Э.Баумана по специальности “Инженер конструктор подьемно-транспортных систем”.
Первую работу нашел случайно, сделав сайт для знакомого.
В web-разработке с третьего курса института. Основные проекты базировались в сфере парсинга данных и рекламных платформ.
Длительное время писал на PHP, впоследствии перешел на Go.
В профессии уже более 8 лет.

Преподаватель
Елена Граховац
Руководит командой автоматизации TechOps-процессов в немецком финтех-стартапе N26 (Берлин). Пишет на Go с 2015-го, профессиональный опыт в ИТ — 12 лет.

В свободное время выступает с докладами и мастер-классами на российских и международных ИТ-конференциях как DevOps-энтузиаст.

Руководит программным комитетом конференции GolangConf и является соведущей подкаста GolangShow.

Область интересов:
DevOps-культура и автоматизация, построение нативных облачных сервисов, язык программирования Go.

Преподаватель
Юрий Юрочко
В 2016 окончил МГТУ имени Н.Э.Баумана (ИУ-7).

Профессиональную карьеру начал в 2014, с 2016 работаю в фин. техе, писал бэкенд в hft-фонде, писал с нуля бэкенд биржи Onederx. С 2019 пишу бэкенд часть брокера другой биржи и руковожу небольшой командой разработчиков.

Люблю новые технологии, постоянно стараюсь знакомиться с чем-то новым и применять это на практике. Основные языки - C++/Go.

Преподаватель
Владимир Дроздецкий
Разработчик инфраструктуры exposcan.ru, crispmessenger.com
Занимается поддержкой и траблшутингом серверов MySQL, приложений, написанных на PHP, etc. Активно внедряет и использует докер со всей его инфраструктурой. Придерживается мнения, что всё должно быть декларативно описано, поэтому использует Ansible.

Разрабатывает и настраивает инфраструктуру для таких стартапов, как exposcan.ru, crispmessenger.com. Занимается мониторингом при помощи Zabbix и Prometheus, создаёт графики в Grafana.

Чтобы легко подстраиваться под требования бизнеса, деплоит и описывает процессы в Gitlab, собирает и обрабатывает логи в ELK и Graylog2. Любит и умеет пользоваться активным сетевым оборудованием вендора MikroTik.

Преподаватель
Алексей Бакин
Яндекс.Такси
Программирую со школы. Работаю с 2006 года. Почти все время писал на С/С++. Начинал с прошивок для мобильных телефонов и ПО для встроенных систем, а в итоге пришел в бэкэнд разработку.

В качестве эксперимента в 2016 году начал писать на Go. За три года проекты выросли от мелких вспомогательных микросервисов до серьезного высоконагруженного бэкэнда для работы с биржевыми данными.

Компании, в которых я приложил руку к созданию и развитию бэкэнда:
Yota, Arrival, TradingView и Яндекс.Такси.

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

Преподаватель
Антон Телышев
Ведущий Golang-разработчик в “Центр недвижимости от Сбербанка” (ДомКлик). В компании занимаюсь разработкой внутренних сервисов (платежный шлюз, кошелёк компании, система единой авторизации и пр.).

До этого разрабатывал системы мониторинга и внутренние сервисы в Mail.Ru Group, а также участвовал в разработке и поддержке облака, обеспечивающего защиту банков от кибер-мошенничества - Kaspersky Fraud Prevention Cloud.

Окончил бакалавриат и магистратуру в МГТУ им Н.Э. Баумана (кафедра “Компьютерные системы и сети (ИУ6)”). Учился в Технопарке Mail.Ru, где впоследствии преподавал Подготовительную программу по С++.

В свободное время занимаюсь кроссфитом и веду Telegram-канал о Golang (@gouniverse).

Основные технические навыки:
Python
C++
Golang

Преподаватель
Отзывы
4
Равиль
Галактионов
В целом я доволен курсом. В процессе изучения я уже начал на работе применять всё то чему научился, и уже большую часть времени пишу на Go и планирую полностью перейти на данный язык. Курс дал мотивацию в изучении языка и все необходимые материалы для старта. Спасибо команде Отуса за проделанную работу.
Читать целиком
Дамир
Асылхан
Добрый день!

Спасибо большое за курс! Это было отличное приключение, рекомендую!
Читать целиком
Денис
Кузьмин
Почему выбрал курс "разработчик Golang":
За полгода до начала обучения начал изучать этот язык. Он мне показался очень интересным, т.к. универсален и очень актуален.
И хотя по текущей своей деятельности я не могу назвать себя профессиональным программистом, я могу успешно применять этот язык в своей работе, и не только.

Что мне понравилось в обучении:
Компетентность и большой опыт преподавателей в своей сфере, в программировании.
Формат, интенсивность и обьем курса.

Что бы хотелось добавить:
Здесь нужно уточнить, что я попал на самый первый поток "Golang" в Otus. Насколько помню, нас сразу предупредили, что могут быть "шероховатости", и что наша(студентов) обратная связь будет учитываться.
И все же, я укажу то, что мне не понравилось. Хотя, вероятнее всего, на последующих потоках этого курса все это уже будет учтено.
1) По моему мнению, не все преподаватели обладали в должной мере именно навыками преподавания.
2) Начиная со второй половины курса, домашние задания стали неинтересными, скучными и рутинными.
3) Особым пунктом хочу указать слабое административное взаимодействие со студентами. Особенно в момент, когда начались пропуски, переносы и замены занятий, а также внезапные замены преподавателей.

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

Тем не менее, выражаю благодарность коллективу Otus и преподавателям за создание данного курса.
Читать целиком
Егор
Зуев
Остался очень доволен курсом: хороший материал, большое погружение не только в специфику языка, но и в экосистему и прикладной инструментарий в целом. Отдельно приятно удивила часть с домашними задачами - как сами задачки, так и их проверка и общение с наставником. Большое спасибо преподавателям, наставникам и команде ОТУС!
Читать целиком
Равиль
Галактионов
В целом я доволен курсом. В процессе изучения я уже начал на работе применять всё то чему научился, и уже большую часть времени пишу на Go и планирую полностью перейти на данный язык. Курс дал мотивацию в изучении языка и все необходимые материалы для старта. Спасибо команде Отуса за проделанную работу.
Читать целиком
Дамир
Асылхан
Добрый день!

Спасибо большое за курс! Это было отличное приключение, рекомендую!
Читать целиком
Денис
Кузьмин
Почему выбрал курс "разработчик Golang":
За полгода до начала обучения начал изучать этот язык. Он мне показался очень интересным, т.к. универсален и очень актуален.
И хотя по текущей своей деятельности я не могу назвать себя профессиональным программистом, я могу успешно применять этот язык в своей работе, и не только.

Что мне понравилось в обучении:
Компетентность и большой опыт преподавателей в своей сфере, в программировании.
Формат, интенсивность и обьем курса.

Что бы хотелось добавить:
Здесь нужно уточнить, что я попал на самый первый поток "Golang" в Otus. Насколько помню, нас сразу предупредили, что могут быть "шероховатости", и что наша(студентов) обратная связь будет учитываться.
И все же, я укажу то, что мне не понравилось. Хотя, вероятнее всего, на последующих потоках этого курса все это уже будет учтено.
1) По моему мнению, не все преподаватели обладали в должной мере именно навыками преподавания.
2) Начиная со второй половины курса, домашние задания стали неинтересными, скучными и рутинными.
3) Особым пунктом хочу указать слабое административное взаимодействие со студентами. Особенно в момент, когда начались пропуски, переносы и замены занятий, а также внезапные замены преподавателей.

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

Тем не менее, выражаю благодарность коллективу Otus и преподавателям за создание данного курса.
Читать целиком
Егор
Зуев
Остался очень доволен курсом: хороший материал, большое погружение не только в специфику языка, но и в экосистему и прикладной инструментарий в целом. Отдельно приятно удивила часть с домашними задачами - как сами задачки, так и их проверка и общение с наставником. Большое спасибо преподавателям, наставникам и команде ОТУС!
Читать целиком
Необходимые знания

- Опыт разработки от 1 года
- Опыт разработки web-приложений
- Знания по основным конструкциям и синтаксису Golang

Будет плюсом:
- знание одного из ЯП, в особенности С/C++;
- опыт администрирования Linux.
Процесс обучения
Всё обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в слаке курса, сдача домашних работ и получение обратной связи от преподавателя.

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

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

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

Курс длится 5 месяцев, из которых финальный отводится для выполнения проектной работы.

Выполнение проектной работы помогает усвоению практических навыков, а тема проекта отдельно выносится в сертификат. Во время работы над проектом студенты получают консультации и обратную связь от преподавателей в слаке группы и на проектных занятиях.
Программа обучения
Модуль 1
Начало работы с Go
Модуль 2
Стандартные библиотеки и практики
Модуль 3
Cетевое взаимодействие
Модуль 4
Микросервисы
Модуль 5
Проект
Начало работы с Go
В первом модуле мы изучим Go как язык. Рассмотрим основные синтаксические конструкции и их выполнение в рантайме. Основное внимание уделим конструкция уникальным для языка Go, которых нет в другом языке.
Тема 1: Инструментарий Go, тестирование
* Подробнее про GOROOT и GOPATH
* Сборка модулей и установка программ: go get, go build, go install
* Кросс-компиляция
* Модули и зависимости: go mod
* Форматирование кода: go fmt, imports
* Линтеры: go vet, golint, металинтеры
* Тестирование Go программ
* Пакет testing
* Паттерны и анти-паттерны unit-тестирования
Домашние задания: 1
1 Hello now()
Завести Go репозиторий на GitHub, написать программу печатающую текущее время / точное время с использованием библиотеки NTP.
Программа должна корректно обрабатывать ошибки библиотеки: распечатывать их в STDERR и возвращать ненулевой код выхода.
Тема 2: Сильные и слабые стороны языка
- Рассмотрим, почему появился новый язык
- Поговорим о плюсах и минусах Go
- Разберем код небольшого Go-приложения
Тема 3: Элементарные типы данных в Go
* Элементарные типы
* Zero value
* Константы
* Указатели
* Строки и руны и массивы байтов
* Стандартный функции для работы со строками и Unicode
* Преобразование и присвоение типов
* Передача по ссылке и значению
Домашние задания: 1
1 Распаковка строки
Цель: Создать Go функцию, осуществляющую примитивную распаковку строки, содержащую повторяющиеся символы / руны, например: * "a4bc2d5e" => "aaaabccddddde" * "abcd" => "abcd" * "45" => "" (некорректная строка) * "" => "" Дополнительное задание: поддержка escape - последовательностей * `qwe\4\5` => `qwe45` (*) * `qwe\45` => `qwe44444` (*) * `qwe\\5` => `qwe\\\\\` (*) В случае если была передана некорректная строка функция должна возвращать ошибку.
Тема 4: Слайсы и словари
* Отличия массивов и слайсов
* Внутренняя структура слайсов и словарей
* Создание и работа со слайсами и словарями
* Отличие длинны и емкости (length vs capacity)
* Различные способы итерации
* Сортировка
* Распространные ошибки и затруднения
Домашние задания: 1
1 Частотный анализ
Цель: Напиcать функцию, принимающую на вход строку с текстом и возвращающую слайс с 10 самыми частовстречающимеся в тексте словами. Если есть более 10 самых частотых слов (например 15 разных слов встречаются ровно 133 раза, остальные < 100), можно вернуть любые 10 из самых частотных. Словоформы не учитываем. "нога", "ногу", "ноги" - это разные слова. Слово с большой и маленькой буквы можно считать за разные слова. "Нога" и "нога" - это разные слова. Знаки препиания можно считать "буквами" слова или отдельными словами. "-" (тире) - это отдельное слово. "нога," и "нога" - это разные слова. Пример: "cat and dog one dog two cats and one man". "dog", "one", "and" - встречаются два раза, это топ-3. Задание со звездочкой (*): учитывать большие/маленьгие буквы и знаки препинания. "Нога" и "нога" - это одинаковые слова, "нога," и "нога" - это одинаковые слова, "-" (тире) - это не слово.
Тема 5: Функции и обработка ошибок
* Функции и области видимости
* Замыкания
* Функции с переменным числом аргументов
* Типы ошибок
* panic, recover и defer
* Стек-трейсы
* Best practiсe обработки ошибок
17 декабря, 20:00 — 21:30
Лектор: Юрий Юрочко
Тема 6: Структуры
* Определение структур
* Вложенные и анонимные структуры
* Тэги элементов структуры
* Использование тэгов для JSON и работы с СУБД
* Публичные структуры и публичные элементы структур
* Методы типов
19 декабря, 20:00 — 21:30
Лектор: Антон Телышев
Домашние задания: 1
1 Двусвязный список
Цель: https://en.wikipedia.org/wiki/Doubly_linked_list ​ Ожидаемые типы (псевдокод): ​ ``` List // тип контейнер Len() // длинна списка First() // первый Item Last() // последний Item PushFront(v interface{}) // добавить значение в начало PushBack(v interface{}) // добавить значение в конец Remove(i Item) // удалить элемент ​ Item // элемент списка Value() interface{} // возвращает значение Nex() *Item // следующий Item Prev() *Item // предыдущий ```
Тема 7: Интерфейсы
* Определение и реализация интерфейсов
* Внутренняя структура интерфейсов
* Интерфейсы как "универсальный" тип
* Определение типа значения интерфейса
* Опасный и безопасный type cast
* Конструкций switch
* Слайсы и словари с интерфейсами
* Где мои generic-и?
24 декабря, 20:00 — 21:30
Лектор: Артем Желтак
Тема 8: Горутины и каналы
* Запуск горутин
* Каналы, внутреняя структура канала
* Буферизованные и небуферизованные каналы
* Операции работы с каналами
* Использование каналов для передачи данных и синхронизации
* Конструкция select
* Таймеры в Go
26 декабря, 20:00 — 21:30
Лектор: Елена Граховац
Домашние задания: 1
1 Параллельное исполнение
Цель: Написать функцию для параллельного выполнения N заданий (т.е. в N параллельных горутинах). Функция должна останавливать свою работу если произошло M ошибок Сигнатура функции: Run(task []func()error, N int, M int) error Учесть что задания могут выполняться разное время Длинна списка задач L = len(tasks) может быть больше или меньше N.
Тема 9: Примитивы синхронизации
* Мьютексы
* Условные переменные
* Гарантировано одноразовое выполнение
* Pool и WaitGroup
* Модель памяти в Go
* Race-детектор
9 января, 20:00 — 21:30
Лектор: Юрий Юрочко
Стандартные библиотеки и практики
Во втором модуле мы познакомимся с основными функциями стандартной библиотеки Go, а так же наиболее популярными open-source библиотеками. Научимся пользоваться инструментами для управления зависимостями, тестирования и профилирования Go кода.
Тема 1: Работа с вводом/выводом
* Тип Buffer
* Стандартные интерфейсы: Reader, Scanner, Writer, Closer
* Блочные устройства, Seeker
* Форматированный ввод и вывод: fmt
14 января, 20:00 — 21:30
Домашние задания: 1
1 Копирование файлов
Цель: Реализовать утилиту копирования файлов Утилита должна принимать следующие аргументы * файл источник (From) * файл копия (To) * Отступ в источнике (Offset), по умолчанию - 0 * Количество копируемых байт (Limit), по умолчанию - весь файл из From Выводить в консоль прогресс копирования в %, например с помощью github.com/cheggaaa/pb Программа может НЕ обрабатывать файлы, у которых не известна длинна (например /dev/urandom).
Тема 2: Форматирование данных
* base64 и другие форматы строк, кодировки
* Текстовые форматы: JSON, XML, YAML
* Использование стуктур и интерфейсов для парсинга
* Бинарные форматы: MsgPack и ProtocolBuffers
16 января, 20:00 — 21:30
Тема 3: Взаимодействие с OS
* Обработка аргументов командной строки: flags, cobra
* Работа с переменными окружения
* Запуск внешних программ
* Работа с файловой системой
* Временные файлы
* Обработка сигналов
21 января, 20:00 — 21:30
Домашние задания: 1
1 Утилита envdir
Цель: Реализовать утилиту envdir на Go. Эта утилита позволяет запускать программы получая переменные окружения из определенной директории. См man envdir Пример go-envdir /path/to/evndir command arg1 arg2
Тема 4: Файлы конфигурации и логирование
* Различные варианты конфигурации
* Использование простых форматов: ini, yaml и т.п.
* Библиотеки для работы с конфигурацией: viper и confita
* Стандартная библиотека для логирования
* Расширенное логирование с помощью Zap
23 января, 20:00 — 21:30
Домашние задания: 1
1 Каркас микросервиса
Цель: Реализовать "каркас" микросервиса, считывающий конфиг из файла, создающий логгер/логгеры с указанными уровнями детализации.
Тема 5: Рефлексия
* Использование пакета reflect
* Type и Value
* Использование рефлексии совместно с type switch
* Пакет unsafe и тип unsafe.Pointer
* Пример использования рефлексии
28 января, 20:00 — 21:30
Тема 6: Кодогенерация в Go
* Примеры применения кодогенерации
* Команда go generate
* Генерация кода по Protobuf спецификациям
30 января, 20:00 — 21:30
Домашние задания: 1
1 “Заготовка” для микросервиса “Календарь”
Цель: В результате выполнения ДЗ должен получиться базовый скелет микросервиса, который будет развиваться в дальнейших ДЗ. Структура кода должна соответствовать подходу Clean Architecture. В данном задании тренируются навыки: - декомпозиции предметной области; - построения элементарной архитектуры проекта.
Тема 7: Go Internals - Память
* Структура памяти в Linux процессе
* Особенности памяти в Go приложении
* Выделение памяти на стеке
* Выделение и освобождение памяти в куче
* Механизм сборки мусора в Go
4 февраля, 20:00 — 21:30
Тема 8: Профилирование и оптимизация Go программ
* Общая информация о профилировании
* Виды профайлеров
* Профилирование использования CPU
* Профилирование выделения памяти
* Flame диаграммы
* Общие оптмизации в Go
* Оптимизации выделения памяти
6 февраля, 20:00 — 21:30
Домашние задания: 1
1 Оптимизация производительности
Провести анализ производительности программы из дз 2.6.
Построить Flame диаграммы и выявить наиболее медленные фрагменты.
Попытаться улучшить производительность.
Тема 9: Go Internals - Планировщик
* Основные структуры планировщика: P, M, G
* Механизм переключения горутин
* Системные вызовы в Go
* Сетевые вызовы в Go
11 февраля, 20:00 — 21:30
Cетевое взаимодействие
Go чаще все используется для написания сетевых сервисов. В третьем модуле мы изучим как работать с сетью в языке Go. Рассмотрим стандартные протоколы и формат, а так же напишем простой сервер. Отдельное внимание будет уделено обработке ошибок возникающих при работе с сетью.
Тема 1: Низкоуровневые протоколы TCP, UDP, DNS
* Стандартные интерфейсы - Dialer, Conn
* Возможные сетевые проблемы: потеря пакетов, подвисшие соединения, недоступность
* Таймауты и контекст
* Отладка сетевых проблем
13 февраля, 20:00 — 21:30
Домашние задания: 1
1 Telnet
Цель: Реализовать примитивный telnet клиент:
Тема 2: HTTP библиотека
* Использование HTTP клиента
* Создание простого HTTP сервера
* Декораторы и middleware
* HTTP/1.1 и HTTP/2.0
* REST
* Протокол S3
18 февраля, 20:00 — 21:30
Тема 3: GRPC
* Описание API с помощью Protobuf
* Генерация кода для GRPC клиента и сервера
* Реализация API
* Прямая и обратная совместимость API
* Представление о Clean Architecture
20 февраля, 20:00 — 21:30
Домашние задания: 1
1 GRPC сервис
Цель: Создать GRPC API для сервиса календаря Тех. задание: https://github.com/OtusTeam/Go/blob/master/project-calendar.md Цель данного занятия: отработка навыков работы с GRPC, построение современного API.
Тема 4: Работа с SQL
* Стандартные интерфейсы sql.DB, sql.Rows, sql.Tx
* Подключение к СУБД и настройка пула подключений
* Выполнение запросов и получение результатов
* Простейшие SQL запросы
25 февраля, 20:00 — 21:30
Домашние задания: 1
1 Работа с базами данных
Цель: Обеспечить сохранение событий календаря в СУБД Тех. задание: https://github.com/OtusTeam/Go/blob/master/project-calendar.md Цель данного занятия: отработка навыков работы СУБД, SQL, пакетами database/sql и github.com/jmoiron/sqlx
Тема 5: NoSQL базы данных
* Встроенные базы данных, BoltDB
* Использование Redis для кеширования данных
* Выбор базы данных для проекта
27 февраля, 20:00 — 21:30
Тема 6: Clean Architecture
* Проектирование Application сервера
* MVC архитектура и ее ограничения
* Clean Architecture
* Dependency Injection
* Тестирование бизнес-логики
3 марта, 20:00 — 21:30
Тема 7: Очереди сообщений
* Использование RabbitMQ, Kafka
* Возможные проблемы с очередями: перегрузка, падение обработчиков, сбойные сообщения
* Запуск пула обработчиков с помощью systemd или supervisor
12 марта, 20:00 — 21:30
Домашние задания: 1
1 Работа с очередями
Цель: Реализовать "напоминания" о событиях с помощью RabbitMQ. Тех. задание: https://github.com/OtusTeam/Go/blob/master/project-calendar.md Цель данного занятия: отработка навыков работы с RabbitMQ и очередями вообще.
Тема 8: Web-Sockets
* Технологии Real-Time сообщений
* Commet
* Web-Sockets
* Архитектура сервера для Real-Time сообщений
17 марта, 20:00 — 21:30
Микросервисы
В четвертом модуле мы рассмотрим вопросы архитектуры web сервисов, в частности популярную сейчас микросервисную архитектуру. Рассмотрим вопросы тестирования, развертывания и эксплуатации приложении.
Тема 1: Монолит и микросервисы
* Отличия микросервисов от монолитной архитектуры
* Преимущества микросервисов
* 12 factor applications
* Serverless подход
19 марта, 20:00 — 21:30
Домашние задания: 1
1 Доработка сервиса
Цель: Данное ДЗ посвящено доработки кода. Новые навыки не отрабатываются. Важно довести проект до рабочего состояния, разделив его на отдельные сервисы.
Тема 2: Docker
* Основные команды docker
* Представление о контейнер и образе
* Сборка собственных Docker контейнеров
* Запуск и управление контейнерами
* Передача конфигурации и получение логов
* Использование Docker Registry
24 марта, 20:00 — 21:30
Домашние задания: 1
1 Докеризация сервиса
Цель: Цель домашнего задания: запустить все компоненты проекта в Docker Отрабатываются навыки работы с Docker и docker-compose
Тема 3: Тестирование микросервисов
* Использование docker-compose
* Интеграционные тесты
* Behaviour Driven Development
* Описание тестов на языке Gherkin
* Использование godog для запуска тестов
26 марта, 20:00 — 21:30
Домашние задания: 1
1 Интеграционное тестирование
Цель: Цель данного домашнего задания: научиться писать интеграционные тесты к web-сервисам В данном ДЗ изучается BDD, язык Gherkin, отрабатываются навыки работы с BDD библиотекой github.com/DATA-DOG/godog И еще раз с docker-compose =)
Тема 4: Мониторинг
* Проверка работоспособности сервисов
* Health Check в Docker
* Системные метрики: LA, CPU, MEM, IO
* Количественный мониторинг, prometheus
31 марта, 20:00 — 21:30
Домашние задания: 1
1 Мониторинг сервиса
Обеспечить простейший мониторинг проекта с помощью prometheus

Prometheus запустить в docker контейнере рядом с остальными сервисами.

Для API сервиса необходимо измерять:
* Requests per second
* Latency
* Коды ошибок
* Все это в разделении по методам (использовать отдельный тэг prometheus для каждого метода API)

Для баз данных:
* Количество записей в таблице events (данные брать из pg_stat_user_tables)
* Стандартные метрики базы: Transactions per second, количество подключений (использовать готовый exporter)

Для расслыльщика:
* RPS (кол-во отправленных сообщений в сек)
Тема 5: Использование CI
* GitLab pipelines
2 апреля, 20:00 — 21:30
Домашние задания: 1
1 Continuous integration
Автоматизировать тестирование и выкатку новых версий с помощью CI
Тема 6: Kubernetes
* Docker Swarm
* Puppet
* Ansible
* Как мы решаем проблему запуска сервсисов на более 1 машины
7 апреля, 20:00 — 21:30
Домашние задания: 1
1 Разворачивание в kubernetes
Развернуть проект в Kubernetes. Создать описания pod-ов и service-ов.
Избавиться от hard-code IP в конфигах проектов.
Проект
Проект, разрабатываемый студентами, будет представлять собой реализацию микросервиса с полным набором компонентов, таких как: логгирование, liveness пробы, make файлы, тесты, статические анализаторы кода, файлы для деплоя, образ в docker, репозиторий и т.п.)
Тема 1: Проектная работа
9 апреля, 20:00 — 21:30
Домашние задания: 1
1 Проект
Тема 2: Консультация по проектам
14 апреля, 20:00 — 21:30
Тема 3: Презентация проектов
16 апреля, 20:00 — 21:30
Выпускной проект
В завершении курса студентам будет предложено выполнить один из трех проектов на выбор:
1. Микросервис для борьбы с брут-форсом.
2. Сервис для подготовки превью изображений.
3. Простейшая система сбора данных.
Прошедшие открытые вебинары по курсу
Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.
Профилирование и оптимизация в Go
Антон Телышев
День открытых дверей
26 ноября в 20:00
Для доступа к прошедшим мероприятиям необходимо пройти входное тестирование
Возможность пройти вступительное тестирование повторно появится только через 2 недели
Результаты тестирования будут отправлены вам на e-mail, указанный при регистрации.
Тест рассчитан на 30 минут, после начала тестирования отложить тестирование не получится!
Пройти вступительное тестирование
После обучения вы

  • заберете с собой полный комплект обучающих материалов: видеозаписи всех вебинаров и презентации к занятиям;

  • сохраните в GitHub пример работоспособного сервиса на Go, которым не стыдно будет похвастаться;

  • получите сертификат о прохождении курса;

  • получите приглашение пройти собеседование в компаниях-партнерах (эту возможность получают самые успешные студенты).

Дата выдачи сертификата: 31 августа 2020 года
Ваш сертификат

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «Разработчик Golang»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018г.

онлайн-образование

Сертификат №0001

Константин Константинопольский

Успешно закончил курс «Разработчик Golang»
Выполнено практических заданий: 16 из 16

Общество с ограниченной ответственностью “Отус Онлайн-Образование”

Город:
Москва

Генеральный директор ООО “Отус Онлайн-Образование”
Виталий Чибриков

Лицензия на осуществление образовательной деятельности
№ 039825 от 28 декабря 2018г.
Общая стоимость
70 000 ₽ 49 000 ₽
В месяц: 17 000 ₽
В кредит: ₽ в месяц
Продолжительность
5 месяцев
Начало занятий
27 февраля 2020 года