8 812 320 13 03
  • Новости
  • Расписание
  • Курсы
  • Организациям
  • Контакты
  • Перезвоните мне

    Курс Go-разработчик (джун -> мидл)

    Курс Go-разработчик (джун -> мидл)

    Курс Go-разработчик (джун -> мидл)
    Начало курса
    25.06.2024
    Продолжительность
    2,5 месяца (70+ ак. часов)
    Расписание
    Вт 19:00 - 21:30
    Пт 19:00 - 21:20
    Онлайн
    (12 мест)
    Единовременно 50000 записаться
    В расроку / мес16700 записаться

    Описание курса

    Курс "Go-разработчик (джун -> мидл)" - это продвинутый курс, предназначенный для разработчиков всех уровней, от Junior до Senior, желающих глубоко изучить язык Go и его внутреннее устройство. Курс представляет из себя погружение в глубины языка программирования Go, раскрывая все его возможности и предназначен для разработчиков, готовых преодолеть границы начального или среднего уровня владения и взглянуть за горизонт Go, исследуя внутреннее строение и механизмы языка, а также узнавая, как максимально использовать его потенциал для создания высокопроизводительного и надежного программного обеспечения.

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


    На курсе мы подробно разберем:

    • Архитектуру компьютеров и процессоров, чтобы вы могли понять, как ваш код взаимодействует на самом низком уровне.
    • Внутреннее устройство Go, включая детали работы компилятора, горутин и планировщика, чтобы вы могли писать не только эффективный, но и оптимизированный под систему код.
    • Продвинутые аспекты многопоточного программирования и синхронизации, давая вам инструменты для создания высокопроизводительных приложений.
    • Профилирование и оптимизацию производительности, чтобы вы могли выявлять и исправлять узкие места в своих программах.
    К завершению курс "Go-разработчик (джун -> мидл)" вы станете экспертом, способным анализировать и оптимизировать системы на всех уровнях, от низкоуровневого взаимодействия с железом до высокоуровневого проектирования распределенных приложений.


    Кому подойдет курс:

    • Junior Golang-разработчики. Вы не только закрепите основы, но и расширите свои знания до уровня, позволяющего решать сложные и интересные задачи. Здесь вы получите все необходимые инструменты и знания для глубокого погружения в мир профессиональной разработки на Go.
    • Middle и Senior разработчики. Данный курс обеспечит вас продвинутыми знаниями и навыками, которые требуются для решения задач высокого уровня сложности. Он расширит ваш профессиональный арсенал методами и техниками, необходимыми для создания масштабируемых и эффективных приложений.
    • Специалисты, заинтересованные в оптимизации производительности. Этот курс даст вам возможность стать настоящим экспертом в области высокопроизводительного кода.

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

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

    Стек технологий:

    • Golang
    • GoLand, Visual Studio Code
    • Git, GitHub (контроль версий)
    • gRPC, производительность на транспортном уровне.
    • Go-Kit, для создания микросервисов в Go.
    • pprof, для анализа производительности
    • Библиотеки мониторинга, логгирования, сбора метрик
    • PostgreSQL
    • RESTful API Development, создание RESTful сервисов с помощью веб фреймворков
    • Docker
    • Kubernetes
    • Передовые CI/CD инструменты

    Проекты курса:

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

    Входные требования к участникам курса:

    • Уверенные знания языка Go и опыт программирования на нем.
    • Понимание основ многопоточного программирования.
    • Понимание принципов объектно-ориентированного программирования.
    • Понимание основ работы с веб-технологиями и базами данных.
    • Готовность к интенсивной работе и глубокому погружению в сложные темы.

    Программа

    Модуль 1. Основы системного программирования

    развернуть

    Основы архитектуры компьютеров и процессоров

    • Обзор архитектуры процессора и его компонентов.
    • Понимание цикла исполнения кода на аппаратном уровне.
    • Принципы векторизации и её роль в оптимизации исполнения кода.
    • Кэширование и управление памятью.
    • Влияние архитектуры памяти на производительность приложений.
    развернуть

    Управление памятью и многозадачность

    • Роль MMU и TLB в управлении виртуальной памятью, механизмы swapping и paging.
    • Погружение в алгоритмы планирования задач.
    • Основы многозадачности.
    • Процессы, потоки и сопрограммы: использование и оптимизации.

    Модуль 2. Конкурентное программирование в Go

    развернуть

    Глубокое погружение в горутины

    развернуть

    Изучение внутреннего устройства и принципов работы горутин. Анализ механизмов работы планировщика и стратегий оптимизации. Управление ресурсами и утечки памяти.

    развернуть

    Примитивы синхронизации

    • Основные примитивы синхронизации.
    • Работа с состоянием в многопоточных приложениях.
    • Deadlock, livelock и race conditions, методы их обнаружения и устранения.
    развернуть

    Продвинутые примитивы синхронизации

    • Детальное изучение библиотеки sync и примитивов синхронизации.
    • Изучение atomic операций.
    • Дополнительные примитивы синхронизации.
    развернуть

    Каналы и паттерны обработки данных

    • Внутреннее устройство и типы каналов.
    • Паттерны использования каналов.
    • Применение каналов в реальных проектах.
    развернуть

    Продвинутые концепции и паттерны конкурентного программирования в Go

    • Детальный анализ различных методов синхронизации.
    • Введение в lock-free программирование.
    • Классические проблемы синхронизации.
    • Современные паттерны и модели.
    • Паттерны управления транзакциями.
    развернуть

    Тестирование и отладка конкурентного кода

    • Методы и инструменты тестирования конкурентного кода.
    • Профилирование приложений, лучшие практики отладки.

    Модуль 3. Разработка и архитектура высоконагруженных систем

    развернуть

    Проектирование микросервисов и интеграция

    развернуть

    Микросервисы vs монолит. Изучение стратегий и подходов к разделению монолитных приложений. Сравнение протоколов REST, gRPC, GraphQL и выбор подходящего протокола для микросервисов.

    развернуть

    Веб фреймворки на Go

    развернуть

    Основы работы с Gin. Основы работы с Echo. Сравнение с другими фреймворками.

    развернуть

    Архитектурные паттерны для высоконагруженных систем

    • Цели и принципы проектирования
    • Выбор архитектурного паттерна.
    • Чистая архитектура.
    • Предметно-ориентированное проектирование.
    • Гексагональная архитектура
    развернуть

    Оптимизация производительности и ресурсоемкости

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

    Модуль 4. Безопасность и устойчивость систем

    развернуть

    Безопасность приложений на Go

    развернуть

    Методы и практики безопасного управления доступом, включая JWT и OAuth. Обзор основных уязвимостей веб-приложений и методов их предотвращения. Методы шифрования данных.

    развернуть

    Надежность и устойчивость систем

    • Стратегии обработки ошибок в микросервисной архитектуре.
    • Техники и стратегии для разработки отказоустойчивых систем, включая репликацию и балансировку нагрузки.
    • Настройка систем мониторинга и логирования

    Модуль 5. Современные практики разработки

    развернуть

    Продвинутое тестирование в Go

    развернуть

    Разработка надежных тестовых сценариев. Mocking и Stubbing. Нагрузочное тестирование

    развернуть

    Подготовка запуска сервиса в Production

    • Проведение комплексного тестирования.
    • Оптимизация производительности.
    • Планирование аварийных ситуаций
    развернуть

    Подведение итогов курса

    • Ревью финальных проектов студентов
    • Подведение итогов курса
    Сертификат после обучения
    По окончании обучения вы получите сертификат. Нас знают и ценят работодатели, поэтому сертификат станет вашим дополнительным преимуществом при трудоустройстве в IT-компанию. 


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

    Преподаватели

    Андрей

    Тимлид Go

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

    Начиная с .NET разработки, через работу фуллстек-разработчиком, Андрей постоянно расширял свой технический арсенал, что в конечном итоге привело его к миру Go и участию в разработке масштабных high-load проектов. 

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

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

    Фото с очных занятий в СПб

    Курсы программирования, тестирования, мобильных и веб-технологий от Level UP!
    Учитесь с профессионалами в сфере IT-образования!