Под каст о технологиях бекендов, фронтендов, архитектуры и администрирования.
Python лучший язык для начинающих? Григорий Петров про Go, Rust и Python
Для записи 8-го выпуска мы пригласили нашего коллегу, DevRel Evrone, Григория Петрова. Мы расспросили Гришу об отношении к Go и Rust, и, конечно же обсудили его любимый Python. От разговоров про код мы плавно перешли к обсуждению принципов работы мозга, запоминанию и способам поддерживать свою личную базу знаний в актуальном состоянии. Доклад Григория про персональную Wiki https://youtu.be/q4Ftg63diDs.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:32Почему Григорий Петров выбрал Python – 00:01:28Go – как второе пришествие Java – 00:04:12Go – только для простых проектов – 00:08:40Сравнение производительности Go, Python и Ruby – 00:11:09Где хорош Rust и в чём его подводные камни – 00:17:12Надежность и стабильность работы Rust – 00:21:05Контроль ошибок – 00:22:33Почему Python – лучший язык для начинающих – 00:27:08Не одним Django едины, фреймворки для Python – 00:31:47В чём киллер фича FastAPI – 00:32:40Ассинхронный Python (в один поток) – 00:34:25Tornado и Flask умерли – 00:39:02Интерпретаторы для Python – 00:40:19Линтеры и форматеры в Python – 00:44:52Использование OpenTelemetry в Python – 00:46:02Примеры использования gradual typing в Python – 00:48:37Написание кода с точки зрения нейрофизиологии – 00:52:25Однозадачность мышления – 00:59:55Немного про внимание – 01:05:32Методология подготовки к выступлениям от Григория Петрова – 01:08:52Personal knowledge management или «Второй мозг» – 01:14:14Собственные методы написания заметок и необходимость в систематизации знаний – 01:19:23
• 1 hour, 23 minutes, 56 seconds
REST или RPC лучше? Service Mesh зачем нужен? Плюсы и минусы gRPC, и немного о Nats
Сегодняшний выпуск посвящен синхронному взаимодействию. Большую часть времени мы обсуждали REST и RPC подходы, сравнивали с gRPC и порассуждали о том, каким бы был Service Mesh для людей.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:24Плюсы и минусы REST – 00:00:58OpenAPI на практике – 00:08:29API-First подход в межсервисном взаимодействии – 00:09:49Уровни использования REST – 00:13:55RPC подход и gRPC – 00:16:35Разбор gRPC плюсы и минусы – 00:22:15Про ProtoBuf – 00:23:43Форматы сериализации – 00:28:35Еще о минусах gRPC – 00:31:39Несовместимость gRPC и Kubernetes по умолчанию – 00:39:07Балансировка запросов с gRPC – 00:40:25Service Mesh для людей – 00:45:16Одиночные запросы и стриминг данных в gRPC – 00:54:22RPC c Nats.io в качестве транспорта – 00:57:23Ещё об RPC – 01:01:08
• 1 hour, 3 minutes, 12 seconds
О тестировании кода в Go и не только. Моки, юнит и интеграционные тесты
Выпуск о тестировании: юнит, интеграционном и end-to-end тестах. Поговорим о плюсах, минусах и внешних инструментах. Расскажем про наш личный опыт на проектах и конечно же затронем тему чистой архитектуры.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:21Наши истории о написании тестов – 00:00:51Почему некоторые крупные компании не пишут тесты – 00:02:22Когда и кому тесты не нужны – 00:04:30Тесты на фронтенде – 00:07:29Про Unit тесты – 00:09:28Пирамида тестирования – 00:10:10Типы тестов – 00:14:10Тестирование Фронтенда – 00:15:36Браузеры для тестирования фронтенда – 00:18:48Немного о тестировании мобильных приложений – 00:20:21Использование Mocks – 00:23:19Unit тесты vs интеграционные тесты – 00:27:40Когда от TDD есть профит – 00:31:18Почему стоит уделять внимание интеграционным тестам – 00:42:14Анатомия тестирования AAA: Arrange, Act, Assert – 00:48:30Внешние инструменты для написания тестов – 00:49:25О моках – 00:51:53О важности Unit тесты – 00:53:11Про покрытие тестами кода – 01:03:49Что делают тестировщики? – 01:05:20Внедрение зависимостей и чистая архитектура – 01:12:05Зачем SonarQube – 01:15:55
• 1 hour, 25 minutes, 21 seconds
Kafka худший брокер? Чем обусловлена популярность этого куска продукта? Кафка и Go
Говорим об асинхронном взаимодействии между сервисами. Обсудим основные боли Kafka или почему разработчику нужно буквально «съесть собаку» и зачем изучать детали реализации. Во второй части подкаста приготовим «кролика» – какие подводные камни есть у RabbitMQ. Затронем Redis и Nats. А в заключении поделимся библиотеками для написания своих очередей.
Nats.io – Лучший брокер сообщений по мнению ведущих. AsyncAPI.com – Open Source инструмент, позволяет описывать асинхронное взаимодействие.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:01Разносим Kafka – критика продукта – 00:00:49Драйверы Go к Kafka: sarama, kafka-go, confluent-kafka-go – 00:01:45Тестирование консьюмеров в Kubernetes – 00:04:30Нерешаемые ошибки драйверов – 00:05:52Главная боль Kafka: учи меня полностью – 00:07:15Kafka partitions – 00:10:08Гарантии доставки Kafka – 00:12:28Слабая абстракция Kafka – 00:16:40Протечка абстракции – почему это плохо – 00:19:00Kafka – конструктор – 00:20:20Конфигурация запуска Kafka – 00:22:03Безопасность в Kafka: SASL mechanism Kafka – 00:24:42Создаем топики в Kafka – 00:28:27Минусы confluent-kafka-go – 00:29:59Риски приложения с включенным CGO – биндинг с C – 00:31:31Слабоконтролируемость приложений на CGO – 00:32:12Проблемы Garbage collector в CGO – 00:34:30Возвращаемся к Sarama – 00:35:48Kafka Connect – 00:36:48Неидиоматичный код Sarama – 00:39:33Для чего не стоит использовать Kafka? – 00:40:49Разбираем RabbitMQ и его плагины – 00:43:47Реализация очереди в RabbitMQ – 00:48:01Механизм оповещения и очереди в RabbitMQ – 00:51:57Проблема погружения в детали реализации – мелочи, которые разработчику знать не нужно – 00:53:05RabbitMQ Mnesia – спойлер! мы не рассказываем что это такое! – 00:54:36RabbitMQ настройки префетчинга – 00:56:20Проблемы универсальных решений – 00:57:50Драйвер Go для RabbitMQ – 01:00:06Аналог брокера сообщений Redis Pub/Sub и его проблемы – 01:01:20Redis Streams – 01:02:35Альтернатива Redis – KeyDB – 01:03:36Драйверы Redis – 01:04:53Серебряная пуля nats.io – 01:07:25Nats Request-Reply – 01:09:37Nats как замена RabbitMQ – 01:13:53Библиотеки, с помощью которых можно построить свои очереди – 01:14:09AsyncAPI – 01:16:48Kafka Streams – 01:18:13Подводим итоги своих впечатлений от Kafka – 01:19:47
• 1 hour, 24 minutes, 49 seconds
Фронтенд для бекэндера
В этом эпизоде мы обсуждаем фронтенд. Иван, в прошлом фронтендер, рассказывает о текущей ситуации во фронтенде с позиции бекенд разработчика. Зачем бекендеру знать фронтенд, зачем фронтендеру знать Чистую архитектуру. Много слов про Angular, React, Vue и немного про Svelte, Ember, Riot, Elm.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:00Как возникла идея этого подкаста – 00:01:09Про зоопарк технологий фронтенда – 00:03:37Почему Иван ушел из фронта в бекенд – 00:04:53Фронтенд разочаровал? – 00:06:27Снова про зоопарк – 00:07:47Сравнение фронтенда с бекэндом – 00:09:36Внезапно про NodeJS и зависимости – 00:13:43Какие есть проблемы во фронтенде – 00:18:25Про стандартизацию подходов к организации кода – 00:21:56Зрелость бекэнда и отставание фронтенда – 00:26:41Про архитектуру – 00:29:06Про Angular, React, Vue – 00:31:59Можно ли использовать архитектурные подходы не зная бекенд – 00:35:05Изменения после знакомства с Чистой архитектурой – 00:36:22Все пишут в разных стилях и нет стандартов – 00:37:50Про JavaScript и TypeScript – 00:39:17Снова про зоопарк – 00:40:07Про Ember – 00:41:42Мертв ли Ember – 00:42:47Не парься, учи React! – 00:43:54Про Svelte – 00:46:30С чего начать учить фронтенд – 00:47:19Прощание, выводы – 00:48:18
• 49 minutes, 7 seconds
TypeScript решит все проблемы? Альтернатива JavaScript. Webpack и стрельба в ногу
В этом эпизоде мы говорим о JavaScript и TypeScript с его проблемами. На каких ещё языках, кроме JS, можно писать фронтенды. Про кроссбраузерность и кроссплатформенность. Про инструменты сборки и транспиляции. А так же про SEO, SSR и любовь к jQuery. Иван Соловьев – Про Snowpack https://youtu.be/McR7Tb2EJOoВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:00Есть ли альтернатива JavaScript – 00:00:23Про ClojureScript – 00:01:17Идеальный язык будущего – 00:04:52SEO и SSR (Server Side Rendering) – 00:06:23Зачем JS если можно рендерить на Go – 00:09:53Bootstrap, готовые шаблоны и SPA (Single Page Application) – 00:11:32В среднем у пользователей слабые устройства, SSR помогает – 00:14:44jQuery люблю и ненавижу – 00:17:13Браузерные движки – 00:19:07Проблемы кроссбраузерности – 00:21:20API браузеров – 00:27:56Единый движок для отрисовки интерфейсов и Canvas – 00:28:44Как поменялся JavaScript за последнее время – 00:30:57Линтеры и стандартизация – 00:36:34Snowpack и Webpack – 00:39:05Webpack и стрельба в ногу – 00:40:40Проблемы TypeScript – 00:44:12Про типизацию в TypeScript – 00:51:08TypeScript живёт и будет жить – 00:56:11
• 57 minutes, 41 seconds
Go – лучший язык программирования? Действительно ли Go простой? Достоинства Golang
В третьем выпуске подкаста мы поговорили о том, насколько хорош язык Go и почему его считают легким для изучения (что ошибочно). Обсудим феномен длинного кода, механизм возврата ошибок (в сравнении с другими языками), отсутствие дженериков и вопросы безопасности. Проведем сравнение с Python и Rust, и другими технологиями-конкурентами.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:00Действительно ли Go простой? – 00:01:45Как упростить читабельность кода – 00:05:05Философия возврата ошибок в Go (result option) – 00:08:03Мнимые проблемы в Go (по мнению пользователей Хабра) – 00:11:43Использование дженериков - когда они нужны? – 00:13:00Производительность – 00:15:40Go на продакшене – 00:19:34Зависимости (go mod vendor) и безопасность – 00:25:00Крупные проекты на Golang – 00:30:16Что нужно, чтобы хорошо писать на Go – 00:31:45Тестирование в Go – 00:33:19Многословность – 00:36:00Еще немного про философию Go и отсутствие «магии» – 00:39:50Про стандартные библиотеки – 00:47:15Антипаттерны или «выстрел в ногу» – 00:48:35Про Enums – 00:52:04Очевидность лучше простоты – 00:57:30Code Style в Go – 00:59:15Ошибки как инстанты – 01:01:25Развитие Go – 01:05:45Технологии-конкуренты – 01:10:35
• 1 hour, 13 minutes, 27 seconds
Go – худший язык программирования? О минусах и недостатках Golang
Сегодня поговорим о минусах Go. О том, на какие грабли наступают разработчики, которые только начали писать на Go. Собственный компилятор, вместо LLVM. Скудная документация, работа со слайсами и мапами, и другие «подводные камни» «легкого» в освоении Go.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:28Компилятор Go – 00:00:40В чем минус того, что Go не на LLVM – 00:02:12Проблемы со слайсами и мапами – 00:07:12Как правильно работать со слайсами – 00:11:36Место, в котором декларация явного дала сбой – 00:12:57Проблемы при инициализации мапы – 00:16:20Что делать разработчику, который только пришел в Go – 00:22:46Дженерики в Go – 00:24:30Концепция каналов в Go – 00:27:07Неуместное использование горутин, каналов, селектов в Go – 00:30:00Мьютексы в каналах – 00:32:50Использование sync/atomic в golang – 00:34:18Работа с WaitGroup – 00:37:15Еще пара слов о Mutex – 00:39:11Аллокация памяти – 00:45:33Если бы Go был на LLVM – 00:50:50Пустые интерфейсы – 00:52:07Внутренние типы – 01:01:10Сравниваем систему типов с Rust'ом – 01:03:24Многословность Go – 01:05:50Подводим итоги и не смотрим на минусы Go – 01:08:30
• 1 hour, 12 minutes, 24 seconds
Опять ругаем Go? Говорим о спорных моментах в языке Go (но мы его любим)
В 6-м выпуске обсудили спорные стороны Go – пакеты стандартной библиотеки, роутеры, работу с JSON и timezone. Разобрали по косточкам константы, garbage collector, структурные теги. Как всегда провели сравнение с Rust и рассуждали о том, что стоило бы сделать, чтобы разработчикам было проще жить.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:23Минусы реализации http сервера в Go – 00:01:04Работа с контекстом – 00:04:12Роутеры в Golang, маршрутизация в Go – 00:05:15Тесты для пакетов net/http – 00:07:55Минусы http сервера в Go – 00:09:54Маршрутизация с Chi in Go – 00:12:50Плюсы и минусы fast http – 00:13:25Советы новичкам по роутерам в Go – 00:15:44Сериализация JSON с Golang – 00:16:40Сокращаем время сериализации с easyjson – 00:18:55Работа с JSON, костыли с zero value и другие минусы – 00:21:24Криптография в Go (Golang Crypto Package) – 00:26:20Еще пара [нелестных] слов про smtp сервер – 00:28:55Пакет time или выстрел себе в ногу – 00:33:53Узкое место методы After, Before у time – 00:39:20Работа с query параметрами и url – 00:42:00ООП в Go – 00:43:00Константы в Go – 00:46:46Сборщик мусора (GC) в Go – 00:49:10Спорный момент в объявлении переменных – 00:55:08Структурные теги в Go, дополнительное поведение структуры – 00:56:20Контекст как альтернативный API в Go – 01:00:25Спорные стороны и непредсказуемость SSA – 01:04:50Итоги выпуска – 01:10:55
• 1 hour, 11 minutes, 59 seconds
Горутины – главная киллер фича Go? О вытесняющей и кооперативной многозадачности
В новом выпуске мы обсудили технологические плюсы Go: главную киллерфичу – многопоточность, конкурентное/ассинхронное выполнение, и вытесняющую многозадачность. Поговорили о Goroutine, каналах, о кодогенерации и использовании профилировщиков.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:24Многопоточное программирование как киллер фича в Go – 00:00:40Концепция GMP модели – 00:01:49Сравнение с многопоточностью на C# – 00:04:00Как вытесняющая многозадачность выполняется в Go – 00:04:40Как это выглядит на Python и С# – 00:07:18Быстродействие горутин – 00:09:22Расшифровываем GMP – 00:11:57Переход от одной горутины к другой – 00:14:16Механизмы синхронизации между горутинами – 00:16:45Самые частые вопросы на собеседовании по Go (про каналы) – 00:17:31Про Nats – 00:20:09Еще пара слов о каналах (как в Go работает select) – 00:20:36Понимание defer в Go – 00:22:14Кейсы использования кодогенерации в Go – 00:26:22Go-swagger – 00:32:30Когда First API подход не приживается – 00:33:53Опыт использования pprof golang – 00:36:21Когда нужен debugger – 00:39:27Режимы профилировщика – 00:42:06Сравнение работы со строками в Rust – 00:43:46Механизм создания исключения и его отлова (panic и recover) и когда её стоит использовать – 00:44:40Еще немного о горутинах – 00:48:40
• 50 minutes, 22 seconds
Elastic стек всё? Grafana для хранения логов, метрик и трейсов. APM и OpenTelemetry
В 9 выпуске подкаста говорим о наблюдаемости, о логах, трейсах, SRE-метриках, делимся кейсами из нашей практики, где использовали те или иные инструменты. Рассмотрим observability с точки зрения полезности: когда доступность сервисов привязываются к бизнес метрикам. Подробнее остановимся на Grafana, а в заключении по рассуждаем, что имеет смысл использовать на пэт проектах, а что оставить кровавому Энтерпрайзу.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:20Рассказ про погружение в мир трейсов – 00:00:50Полезность наблюдаемости в современной архитектуре – 00:01:45Стандарт open telimetary – 00:03:07Кейс по OpenTelemetry: Service Level Indicator (SLI) и Service-Level Objective (SLO) – 00:05:46Как появился стандарт open telimetary – 00:07:42Что такое логи, трейсы, метрики и спаны – 00:12:00О трейсах и защите данных, Trace ID – 00:17:00Что было до трейсов (текстовые логи) – 00:19:45Подробнее о логах – 00:23:17О метриках – 00:28:08Grafana stack и бесплатные APM – 00:35:00Кейс об использовании трейсов – 00:38:09Трейсы и APM – 00:40:23Opensource (бесплатные) APM – 00:48:07В каких случаях лучше выбрать Grafana stack – 00:50:50Время, уровень и сообщения в логе – 00:53:44UI в Grafana – 00:55:06Grafana Mimir OSS для метрик – 00:55:58Grafana Tempo OSS для трейсов – 00:57:38Continuous Profiling – 01:03:36Инструменты для настройки нового проекта – 01:06:22Нужны ли эти инструменты для pet проектов? – 01:08:26Готовые решения – 01:10:50Какие провайдеры облачных инфраструктур использовать для пет проектов – 01:12:52Сбор исключений, инструменты: Sentry, Crashlytics – 01:19:02Заключение – 01:20:50
• 1 hour, 22 minutes, 7 seconds
О тестировании кода в Go и не только. Моки, юнит и интеграционные тесты
Выпуск о тестировании: юнит, интеграционном и end-to-end тестах. Поговорим о плюсах, минусах и внешних инструментах. Расскажем про наш личный опыт на проектах и конечно же затронем тему чистой архитектуры.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:21Наши истории о написании тестов – 00:00:51Почему некоторые крупные компании не пишут тесты – 00:02:22Когда и кому тесты не нужны – 00:04:30Тесты на фронтенде – 00:07:29Про Unit тесты – 00:09:28Пирамида тестирования – 00:10:10Типы тестов – 00:14:10Тестирование Фронтенда – 00:15:36Браузеры для тестирования фронтенда – 00:18:48Немного о тестировании мобильных приложений – 00:20:21Использование Mocks – 00:23:19Unit тесты vs интеграционные тесты – 00:27:40Когда от TDD есть профит – 00:31:18Почему стоит уделять внимание интеграционным тестам – 00:42:14Анатомия тестирования AAA: Arrange, Act, Assert – 00:48:30Внешние инструменты для написания тестов – 00:49:25О моках – 00:51:53О важности Unit тесты – 00:53:11Про покрытие тестами кода – 01:03:49Что делают тестировщики? – 01:05:20Внедрение зависимостей и чистая архитектура – 01:12:05Зачем SonarQube – 01:15:55
• 1 hour, 25 minutes, 21 seconds
Python лучший язык для начинающих? Григорий Петров про Go, Rust и Python
Для записи 8-го выпуска мы пригласили нашего коллегу, DevRel Evrone, Григория Петрова. Мы расспросили Гришу об отношении к Go и Rust, и, конечно же обсудили его любимый Python. От разговоров про код мы плавно перешли к обсуждению принципов работы мозга, запоминанию и способам поддерживать свою личную базу знаний в актуальном состоянии. Доклад Григория про персональную Wiki https://youtu.be/q4Ftg63diDs.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:32Почему Григорий Петров выбрал Python – 00:01:28Go – как второе пришествие Java – 00:04:12Go – только для простых проектов – 00:08:40Сравнение производительности Go, Python и Ruby – 00:11:09Где хорош Rust и в чём его подводные камни – 00:17:12Надежность и стабильность работы Rust – 00:21:05Контроль ошибок – 00:22:33Почему Python – лучший язык для начинающих – 00:27:08Не одним Django едины, фреймворки для Python – 00:31:47В чём киллер фича FastAPI – 00:32:40Ассинхронный Python (в один поток) – 00:34:25Tornado и Flask умерли – 00:39:02Интерпретаторы для Python – 00:40:19Линтеры и форматеры в Python – 00:44:52Использование OpenTelemetry в Python – 00:46:02Примеры использования gradual typing в Python – 00:48:37Написание кода с точки зрения нейрофизиологии – 00:52:25Однозадачность мышления – 00:59:55Немного про внимание – 01:05:32Методология подготовки к выступлениям от Григория Петрова – 01:08:52Personal knowledge management или «Второй мозг» – 01:14:14Собственные методы написания заметок и необходимость в систематизации знаний – 01:19:23
• 1 hour, 23 minutes, 56 seconds
Фронтенд для бекэндера
В этом эпизоде мы обсуждаем фронтенд. Иван, в прошлом фронтендер, рассказывает о текущей ситуации во фронтенде с позиции бекенд разработчика. Зачем бекендеру знать фронтенд, зачем фронтендеру знать Чистую архитектуру. Много слов про Angular, React, Vue и немного про Svelte, Ember, Riot, Elm.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:00Как возникла идея этого подкаста – 00:01:09Про зоопарк технологий фронтенда – 00:03:37Почему Иван ушел из фронта в бекенд – 00:04:53Фронтенд разочаровал? – 00:06:27Снова про зоопарк – 00:07:47Сравнение фронтенда с бекэндом – 00:09:36Внезапно про NodeJS и зависимости – 00:13:43Какие есть проблемы во фронтенде – 00:18:25Про стандартизацию подходов к организации кода – 00:21:56Зрелость бекэнда и отставание фронтенда – 00:26:41Про архитектуру – 00:29:06Про Angular, React, Vue – 00:31:59Можно ли использовать архитектурные подходы не зная бекенд – 00:35:05Изменения после знакомства с Чистой архитектурой – 00:36:22Все пишут в разных стилях и нет стандартов – 00:37:50Про JavaScript и TypeScript – 00:39:17Снова про зоопарк – 00:40:07Про Ember – 00:41:42Мертв ли Ember – 00:42:47Не парься, учи React! – 00:43:54Про Svelte – 00:46:30С чего начать учить фронтенд – 00:47:19Прощание, выводы – 00:48:18
• 49 minutes, 7 seconds
TypeScript решит все проблемы? Альтернатива JavaScript. Webpack и стрельба в ногу
В этом эпизоде мы говорим о JavaScript и TypeScript с его проблемами. На каких ещё языках, кроме JS, можно писать фронтенды. Про кроссбраузерность и кроссплатформенность. Про инструменты сборки и транспиляции. А так же про SEO, SSR и любовь к jQuery. Иван Соловьев – Про Snowpack https://youtu.be/McR7Tb2EJOoВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:00Есть ли альтернатива JavaScript – 00:00:23Про ClojureScript – 00:01:17Идеальный язык будущего – 00:04:52SEO и SSR (Server Side Rendering) – 00:06:23Зачем JS если можно рендерить на Go – 00:09:53Bootstrap, готовые шаблоны и SPA (Single Page Application) – 00:11:32В среднем у пользователей слабые устройства, SSR помогает – 00:14:44jQuery люблю и ненавижу – 00:17:13Браузерные движки – 00:19:07Проблемы кроссбраузерности – 00:21:20API браузеров – 00:27:56Единый движок для отрисовки интерфейсов и Canvas – 00:28:44Как поменялся JavaScript за последнее время – 00:30:57Линтеры и стандартизация – 00:36:34Snowpack и Webpack – 00:39:05Webpack и стрельба в ногу – 00:40:40Проблемы TypeScript – 00:44:12Про типизацию в TypeScript – 00:51:08TypeScript живёт и будет жить – 00:56:11
• 57 minutes, 41 seconds
Опять ругаем Go? Говорим о спорных моментах в языке Go (но мы его любим)
В 6-м выпуске обсудили спорные стороны Go – пакеты стандартной библиотеки, роутеры, работу с JSON и timezone. Разобрали по косточкам константы, garbage collector, структурные теги. Как всегда провели сравнение с Rust и рассуждали о том, что стоило бы сделать, чтобы разработчикам было проще жить.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:23Минусы реализации http сервера в Go – 00:01:04Работа с контекстом – 00:04:12Роутеры в Golang, маршрутизация в Go – 00:05:15Тесты для пакетов net/http – 00:07:55Минусы http сервера в Go – 00:09:54Маршрутизация с Chi in Go – 00:12:50Плюсы и минусы fast http – 00:13:25Советы новичкам по роутерам в Go – 00:15:44Сериализация JSON с Golang – 00:16:40Сокращаем время сериализации с easyjson – 00:18:55Работа с JSON, костыли с zero value и другие минусы – 00:21:24Криптография в Go (Golang Crypto Package) – 00:26:20Еще пара [нелестных] слов про smtp сервер – 00:28:55Пакет time или выстрел себе в ногу – 00:33:53Узкое место методы After, Before у time – 00:39:20Работа с query параметрами и url – 00:42:00ООП в Go – 00:43:00Константы в Go – 00:46:46Сборщик мусора (GC) в Go – 00:49:10Спорный момент в объявлении переменных – 00:55:08Структурные теги в Go, дополнительное поведение структуры – 00:56:20Контекст как альтернативный API в Go – 01:00:25Спорные стороны и непредсказуемость SSA – 01:04:50Итоги выпуска – 01:10:55
• 1 hour, 11 minutes, 59 seconds
REST или RPC лучше? Service Mesh зачем нужен? Плюсы и минусы gRPC, и немного о Nats
Сегодняшний выпуск посвящен синхронному взаимодействию. Большую часть времени мы обсуждали REST и RPC подходы, сравнивали с gRPC и порассуждали о том, каким бы был Service Mesh для людей.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:24Плюсы и минусы REST – 00:00:58OpenAPI на практике – 00:08:29API-First подход в межсервисном взаимодействии – 00:09:49Уровни использования REST – 00:13:55RPC подход и gRPC – 00:16:35Разбор gRPC плюсы и минусы – 00:22:15Про ProtoBuf – 00:23:43Форматы сериализации – 00:28:35Еще о минусах gRPC – 00:31:39Несовместимость gRPC и Kubernetes по умолчанию – 00:39:07Балансировка запросов с gRPC – 00:40:25Service Mesh для людей – 00:45:16Одиночные запросы и стриминг данных в gRPC – 00:54:22RPC c Nats.io в качестве транспорта – 00:57:23Ещё об RPC – 01:01:08
• 1 hour, 3 minutes, 12 seconds
Горутины – главная киллер фича Go? О вытесняющей и кооперативной многозадачности
В новом выпуске мы обсудили технологические плюсы Go: главную киллерфичу – многопоточность, конкурентное/ассинхронное выполнение, и вытесняющую многозадачность. Поговорили о Goroutine, каналах, о кодогенерации и использовании профилировщиков.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:24Многопоточное программирование как киллер фича в Go – 00:00:40Концепция GMP модели – 00:01:49Сравнение с многопоточностью на C# – 00:04:00Как вытесняющая многозадачность выполняется в Go – 00:04:40Как это выглядит на Python и С# – 00:07:18Быстродействие горутин – 00:09:22Расшифровываем GMP – 00:11:57Переход от одной горутины к другой – 00:14:16Механизмы синхронизации между горутинами – 00:16:45Самые частые вопросы на собеседовании по Go (про каналы) – 00:17:31Про Nats – 00:20:09Еще пара слов о каналах (как в Go работает select) – 00:20:36Понимание defer в Go – 00:22:14Кейсы использования кодогенерации в Go – 00:26:22Go-swagger – 00:32:30Когда First API подход не приживается – 00:33:53Опыт использования pprof golang – 00:36:21Когда нужен debugger – 00:39:27Режимы профилировщика – 00:42:06Сравнение работы со строками в Rust – 00:43:46Механизм создания исключения и его отлова (panic и recover) и когда её стоит использовать – 00:44:40Еще немного о горутинах – 00:48:40
• 50 minutes, 22 seconds
Kafka худший брокер? Чем обусловлена популярность этого куска продукта? Кафка и Go
Говорим об асинхронном взаимодействии между сервисами. Обсудим основные боли Kafka или почему разработчику нужно буквально «съесть собаку» и зачем изучать детали реализации. Во второй части подкаста приготовим «кролика» – какие подводные камни есть у RabbitMQ. Затронем Redis и Nats. А в заключении поделимся библиотеками для написания своих очередей.
Nats.io – Лучший брокер сообщений по мнению ведущих. AsyncAPI.com – Open Source инструмент, позволяет описывать асинхронное взаимодействие.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:01Разносим Kafka – критика продукта – 00:00:49Драйверы Go к Kafka: sarama, kafka-go, confluent-kafka-go – 00:01:45Тестирование консьюмеров в Kubernetes – 00:04:30Нерешаемые ошибки драйверов – 00:05:52Главная боль Kafka: учи меня полностью – 00:07:15Kafka partitions – 00:10:08Гарантии доставки Kafka – 00:12:28Слабая абстракция Kafka – 00:16:40Протечка абстракции – почему это плохо – 00:19:00Kafka – конструктор – 00:20:20Конфигурация запуска Kafka – 00:22:03Безопасность в Kafka: SASL mechanism Kafka – 00:24:42Создаем топики в Kafka – 00:28:27Минусы confluent-kafka-go – 00:29:59Риски приложения с включенным CGO – биндинг с C – 00:31:31Слабоконтролируемость приложений на CGO – 00:32:12Проблемы Garbage collector в CGO – 00:34:30Возвращаемся к Sarama – 00:35:48Kafka Connect – 00:36:48Неидиоматичный код Sarama – 00:39:33Для чего не стоит использовать Kafka? – 00:40:49Разбираем RabbitMQ и его плагины – 00:43:47Реализация очереди в RabbitMQ – 00:48:01Механизм оповещения и очереди в RabbitMQ – 00:51:57Проблема погружения в детали реализации – мелочи, которые разработчику знать не нужно – 00:53:05RabbitMQ Mnesia – спойлер! мы не рассказываем что это такое! – 00:54:36RabbitMQ настройки префетчинга – 00:56:20Проблемы универсальных решений – 00:57:50Драйвер Go для RabbitMQ – 01:00:06Аналог брокера сообщений Redis Pub/Sub и его проблемы – 01:01:20Redis Streams – 01:02:35Альтернатива Redis – KeyDB – 01:03:36Драйверы Redis – 01:04:53Серебряная пуля nats.io – 01:07:25Nats Request-Reply – 01:09:37Nats как замена RabbitMQ – 01:13:53Библиотеки, с помощью которых можно построить свои очереди – 01:14:09AsyncAPI – 01:16:48Kafka Streams – 01:18:13Подводим итоги своих впечатлений от Kafka – 01:19:47
• 1 hour, 24 minutes, 49 seconds
Go – худший язык программирования? О минусах и недостатках Golang
Сегодня поговорим о минусах Go. О том, на какие грабли наступают разработчики, которые только начали писать на Go. Собственный компилятор, вместо LLVM. Скудная документация, работа со слайсами и мапами, и другие «подводные камни» «легкого» в освоении Go.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:28Компилятор Go – 00:00:40В чем минус того, что Go не на LLVM – 00:02:12Проблемы со слайсами и мапами – 00:07:12Как правильно работать со слайсами – 00:11:36Место, в котором декларация явного дала сбой – 00:12:57Проблемы при инициализации мапы – 00:16:20Что делать разработчику, который только пришел в Go – 00:22:46Дженерики в Go – 00:24:30Концепция каналов в Go – 00:27:07Неуместное использование горутин, каналов, селектов в Go – 00:30:00Мьютексы в каналах – 00:32:50Использование sync/atomic в golang – 00:34:18Работа с WaitGroup – 00:37:15Еще пара слов о Mutex – 00:39:11Аллокация памяти – 00:45:33Если бы Go был на LLVM – 00:50:50Пустые интерфейсы – 00:52:07Внутренние типы – 01:01:10Сравниваем систему типов с Rust'ом – 01:03:24Многословность Go – 01:05:50Подводим итоги и не смотрим на минусы Go – 01:08:30
• 1 hour, 12 minutes, 24 seconds
Go – лучший язык программирования? Действительно ли Go простой? Достоинства Golang
В третьем выпуске подкаста мы поговорили о том, насколько хорош язык Go и почему его считают легким для изучения (что ошибочно). Обсудим феномен длинного кода, механизм возврата ошибок (в сравнении с другими языками), отсутствие дженериков и вопросы безопасности. Проведем сравнение с Python и Rust, и другими технологиями-конкурентами.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:00Действительно ли Go простой? – 00:01:45Как упростить читабельность кода – 00:05:05Философия возврата ошибок в Go (result option) – 00:08:03Мнимые проблемы в Go (по мнению пользователей Хабра) – 00:11:43Использование дженериков - когда они нужны? – 00:13:00Производительность – 00:15:40Go на продакшене – 00:19:34Зависимости (go mod vendor) и безопасность – 00:25:00Крупные проекты на Golang – 00:30:16Что нужно, чтобы хорошо писать на Go – 00:31:45Тестирование в Go – 00:33:19Многословность – 00:36:00Еще немного про философию Go и отсутствие «магии» – 00:39:50Про стандартные библиотеки – 00:47:15Антипаттерны или «выстрел в ногу» – 00:48:35Про Enums – 00:52:04Очевидность лучше простоты – 00:57:30Code Style в Go – 00:59:15Ошибки как инстанты – 01:01:25Развитие Go – 01:05:45Технологии-конкуренты – 01:10:35
• 1 hour, 13 minutes, 27 seconds
Elastic стек всё? Grafana для хранения логов, метрик и трейсов. APM и OpenTelemetry
В 9 выпуске подкаста говорим о наблюдаемости, о логах, трейсах, SRE-метриках, делимся кейсами из нашей практики, где использовали те или иные инструменты. Рассмотрим observability с точки зрения полезности: когда доступность сервисов привязываются к бизнес метрикам. Подробнее остановимся на Grafana, а в заключении по рассуждаем, что имеет смысл использовать на пэт проектах, а что оставить кровавому Энтерпрайзу.ВедущиеИван СоловьёвМихаил НепряхинТемыПриветствие – 00:00:20Рассказ про погружение в мир трейсов – 00:00:50Полезность наблюдаемости в современной архитектуре – 00:01:45Стандарт open telimetary – 00:03:07Кейс по OpenTelemetry: Service Level Indicator (SLI) и Service-Level Objective (SLO) – 00:05:46Как появился стандарт open telimetary – 00:07:42Что такое логи, трейсы, метрики и спаны – 00:12:00О трейсах и защите данных, Trace ID – 00:17:00Что было до трейсов (текстовые логи) – 00:19:45Подробнее о логах – 00:23:17О метриках – 00:28:08Grafana stack и бесплатные APM – 00:35:00Кейс об использовании трейсов – 00:38:09Трейсы и APM – 00:40:23Opensource (бесплатные) APM – 00:48:07В каких случаях лучше выбрать Grafana stack – 00:50:50Время, уровень и сообщения в логе – 00:53:44UI в Grafana – 00:55:06Grafana Mimir OSS для метрик – 00:55:58Grafana Tempo OSS для трейсов – 00:57:38Continuous Profiling – 01:03:36Инструменты для настройки нового проекта – 01:06:22Нужны ли эти инструменты для pet проектов? – 01:08:26Готовые решения – 01:10:50Какие провайдеры облачных инфраструктур использовать для пет проектов – 01:12:52Сбор исключений, инструменты: Sentry, Crashlytics – 01:19:02Заключение – 01:20:50