Страница телеграм канала Pepegramming

pepegramming logo

Pepegramming

587 подписчиков

Грустно о программировании. Все проблемы сюда: @davydovanton Ссылки на конкретные посты: http://telegra.ph/Pepegramming-Contents-03-11 Обратная связь: https://goo.gl/forms/iUd1Gufq6WnTsaO62


Входит в категории: Технологии
Pepegramming
10.01.2020 14:01
Пятничное чтиво Пару дней назад в твиттере поднялась тема того, что на медиуме нет хороших статей. Разбиваем этот миф тремя ссылками с медиума. Вспомнить что было на стримах можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— CQRS: What? Why? How? CQRS  паттерн, который может использоваться не зная о существовании паттерна. Тут используется 2 модели: для чтения и для записи. Пример: постгрес в котором создаются записи - модель для записи, эластик, использующийся для поиска информации и синхранизующийся с постгресом - модель для чтения. Автор статьи подробнее объясняет что такое CQRS, почему в компании начали использовать этот паттерн (спойлер: что бы сделать мир и коммуникации лучше). Так же, приводятся tips/trics для моделей и критерии, когда стоит использовать CQRS и рассказывает об eventual consistency. А так же, ближе к середине, текст уходит в ДДД, показывается как сделать события на основе domain story telling и почему эвенты =/= event sourcing. Однозначный мастрид недели. ————————————— Zero Downtime Schema Migrations Распределенная миграция частая и сложная проблема если выполняется сталкиваться в первый раз. В статье описываются решения проблемы и как справляться с этим в руби мире. Будет полезно тем, кто еще не сталкивался или не знает, что можно сделать в ситуации когда нужна распределенная миграция. Знаю, что в роме планируется решение для подобных проблем, но не уверен в этом на 100%. А один раз сам столкнулся с проблемой не приятно, подробнее рассказывал в докладе в Минске в прошлом году. ————————————— Making systems more resilient (1) — Circuit Breaker Описание патрона Circuit Breaker. Если в системе больше два сервиса и один делает запрос в другой и второй сервис не отвечает - первый сервис упадет с ошибкой тайм-аута. Тут может помочь Circuit Breaker. Паттерн определит упавший сервис и сразу возвращать ошибку без тайм-аутов. Подробности работы и применения - в статье. ——— одной строкой ——— - Uncle Bob: “Imagine a system written in Eiffel with perfect use of ‘design by contract’” - How to Hold the Most Effective Meetings
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
03.01.2020 13:01
Пятничное чтиво В 2020 году пятничное чтиво выходит из отпуска. Так как я разобрался с нагрузкой, то стримы вернуться в январе (примерно 22 января). Вспомнить что было на стримах можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Аварии помогают учиться Ошибки случаются, поэтому важно уметь чинить систему и обучаться, основываясь на опыте полученном во время сбоя. В расшифровке доклада, инженер Контура, даётся определение инцидента и объясняет как получить пользу от факапа в продакшене. Так же показывается как писать постмортемы и как с ними работать. В самом докладе понравилось обилие ссылок на дальнейшее чтение, описание опыта и мысли, например, глоссарий терминов. Так же понравился живой опыт обработки ошибок и разбор аналитики основанной на постмортемах. Если хочется научиться получать выгоду от инцидентов или интересна эта тема - однозначный мастхев. ————————————— Python at Scale: Strict Modules - Instagram Engineering В канале редко упоминается питон, но статья больше об опыте, чем о языке. Инженеры из инстаграмма описывают практики использования питона. Интерес вызвали разделы об импортах и сайд эффектах в проекте. Раздел о долгой загрузки проекта пересекается с топталом и несколькими минутами ожидания, когда запуститься rails c. В статье нет откровений - проблемы как и в других экосистемах: мутабельность стейта, медленная загрузка монолита, сайд эффекты. Явных решений в статье не найдете, но стоит воспринимать данный пост как пищу для ума. ————————————— Service Discovery in a Microservices Architecture Четвертая статья в цикле о микросервисах написанная инженерами ngnix. в статье рассказывается что такое Service Discovery и почему в cloudbased микросервисных без подхода никуда. Статья однозначный мастрид для тех, кто не знает или слышал, но не использовал service discovery. Рассматриваются два discovery паттерна: client-side discovery и server-side discovery. В обоих случаях используется Service Registry сервис, в котором регистрируются сервисы в системе. Для client-side discovery сервис напрямую идет в Service Registry и после этого делает запрос к нужному сервису. В server-side discovery появляется еще одна прослойка в виде Load Balancer, который достает данные о сервисах из Service Registry и через который проходит каждый запрос в системе. Так же, в статье рассказывается о самом Service Registry, приводятся опенсорсные примеры (consul, zookeeper и eureka разработанная в Netflix). И показываются 2 паттерна регистрации сервиса (SelfRegistration Pattern и ThirdParty Registration Pattern). ——— одной строкой ——— - Twitter: “what are we using for user authentication in rails these days” - ksqlDB: The event streaming database purpose-built for stream processing applications. - Announcing Eventide v2
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
25.10.2019 17:10
Привет! Последний месяц рассылка даётся все сложнее и сложнее, поэтому решил снизить напряг и взять перерыв. Хочу верить, что в ближайшее время отдохну и все вернётся на свои места.
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
18.10.2019 14:10
Привет! Завтра буду выступать в Орле (http://developers-day.ru), поэтому ссылки подготовить не успел. Если будете на мероприятии - у меня куча наклеек, которые я буду рад раздать.
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
11.10.2019 18:10
Пятничное чтиво Стримы на паузе, а вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Documenting Software Architecture Статья этого года в личном списке. В тексте указываются виды документации в архитектуре. Описывается 6 видов документации и диаграмм. Особенно полезным стала информация о 4+1 Architectural view model и Architecture Decision Records. А так же, автоматическую генерацию dependency diagrams делаю в dry-system-dependency_graph. Если задумались о стандартизации и описанию системы - однозначный мастрид этой пятницы. ————————————— The expanding sidecar pattern for microservices with ballerina sidecar Sidecar pattern - основной партерном в распределенных системах. Описание паттерн советую читать на сайте Microsoft. А в статье описывается три этапа развития паттерна. А так же рассказывается о языке ballerina, который поможет реализовать подобный паттерн и упростить интеграцию между сервисами. ————————————— 10 lessons learned from the Ruby Refactoring Kata Рефакторинг нужен не только для увеличения maintainability в проекте, но и так же как обучающее упражнение. Andrzej сделал рефакторинг программы для отображения результатов игры в теннис и рассказал об уроках, которые узнал для себя. В результате, после рефакторинга, программа похожа на стейт машину, а из уроков стоит выделить два: - нет доверия тестам; - желательно знать о домене, в котором работаешь;
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
04.10.2019 15:10
Пятничное чтиво Конференция прошла, наступило время отдыха. В планах перенести статьи на сайт (в разработке) и начать второй сезон стримов. Вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Как сервера договариваются друг с другом: алгоритм распределенного консенсуса Raft В прошлом выпуске рассматривалась проблема консернуса в распределенных системах. В конце упоминал об алгоритме raft, который используется в nats. Сегодня, ребята из додо, описывают принцип работы данного алгоритма. В сегодняшней статье описываются понятия и сам алгоритм согласования. А на одном стримов попробуем написать этот алгоритм на руби. ————————————— Understanding Zeitwerk in Rails 6 В этом году, на конференции, Xavier Noria рассказывал о собственном проекте, который называется zeitwerk. Инструмент решает проблему загрузки в руби коде, rails 6 использует гем по дефолту. В статье рассматривается, как zeitwerk работает, какую конкретно проблему решает и как работает автолоадинг теперь. Также показывается, что делать если хотите использовать библиотеку вне рельс (гем уже встроен в karafka). ————————————— Day Two Problems When Using CQRS and Event Sourcing На последок - любимый тип статей с проблемами использования технологий. Сегодня рассматривается где и как эвент сорсинг и CQRS. Список проблем, затронутых в тексте: люди слишком рано начинают использовать подобные паттерны, консервативная обработка событий и нерациональное использование снепшотов для состояния. От себя добавлю проблему стандартизации событий между командами и отсутствие опыта инженеров, которые имплементируют подобные системы. ——— одной строкой ——— - Релиз dry-effects;
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
30.09.2019 17:09
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
30.09.2019 17:09
спасибо ребятами из питера (@saintprug), в интернете появилась моя запись доклада про DI в руби. Если не знаете что это или хотите послушать историй из UK - маст хев на сегодня
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
27.09.2019 13:09
Пятничное чтиво Буду рад встретиться завтра на rubyrussia. Найти меня можно будет либо рядом со стойкой toptal, либо на докладе (2 зал, сразу после обеда), либо в холле во время докладов. На докладе покажу библиотеку, надо которой работал последние пол года. Если любите графическую визуализацию проектов - доклад понравится. Так же отмечу доклад Никиты о эффектах. Благодаря прогону доклада понял что такое эффекты, зачем и что с этим знанием делать. Кроме того, сделал стикеры с ханами. До встречи на конференции! ————————————— Differences between gRPC and RSocket На работе нужно было выбрать подходящий способ сообщения между сервисами (синхронный и асинхронный). И для синхронной коммуникации написано десятки вариантов. Сегодня статья о RSocket. Библиотека придумали и сделали в нетфликсе. Сам код представляет собой имплементацию бинарного протокола для стриминг транспортов. Идея похожа на web sockets, в котором сообщения сериализуются в бинарный формат. В статье автор сравнивает Rsocket и gRPC, описывает особенности, плюсы и минусы каждой библиотеки. Так же, у rsocket понятная спецификация, а в руби имплементации отсутствуют зависимости. ————————————— How do you visualise dependencies in your Kubernetes YAML files? visualixir На своём докладе покажу как визуализировать бизнес зависимости (модели, сервисы, все вот это) в руби проекте, вне зависимости от фреймворка. И покажу библиотеку, которая делает подобную визуализацию автоматически. А в качестве затравки, два проекта, которые вдохновили. Первый проект - визуализация кластера k8s. Необходимая метаинформация уже лежит в k8s, главное написать UI для отображения системы. О том как это сделать - первая статья. Второй проект - визуализация процессов в erlang vm. С динамическим отображением спавнов новых процессов и трассировкой сообщений. ————————————— Git for Computer Scientists Люблю тексты или видео, которые объясняют и показывают как работают привычные вещи. Сегодня статья о том, как устроен гит под капотом. Показывается, как устроены коммиты, теги и деревья. А в качестве практической стороны, советую статью от thoughtbot, в которой автор переписывает гит на руби. ——— одной строкой ——— - Первый питерский RailsGirls стартует 1го ноября
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
20.09.2019 16:09
привет! в виду большой загружености на работе и из-за http://rubyrussia.club конференции, ссылок не будет на этой неделе
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
13.09.2019 19:09
Всем спасибо, кто смотрел стрим. Спасибо за два билета http://rubyrussia.club конференции и один отдало лучшее питерскомое руби сообщество @saintprug. Победители @aemelyanov86 @monacus @b0nn1e Запись стрима уже на ютубе

До встречи на конфернеции
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
13.09.2019 19:09
Начинаем стрим https://www.twitch.tv/davydovanton
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
13.09.2019 17:09
в 19:00 проведу 10 минутный стрим, где разыграю 3 билета на конференцию и отвечу на вопросы по конференции, если такие будут Так же потом залью все на ютуб для тех, кто пропустит
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
13.09.2019 15:09
3 билета, моя невнимательность погубит меня
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
13.09.2019 15:09
Пятничное чтиво Сегодня вечером разыгрываем 3 билета на rubyrussia конференцию. Если хотите успеть поучаствовать: - Заполняем форму; - Рассказываем друзьям и коллегам о розыгрыше; - Сегодня вечером разыгрываю 2 билета; ————————————— Аварии помогают учиться Ошибки случаются, поэтому важно уметь учиться на них. В расшифровке доклада дается определение инцидента, а также показывается как писать постмортемы и как с ними работать. В самом докладе понравилось обилие ссылок на дальнейшее чтение, описание опыта и мыслей, например глоссарий терминов. Если хочется научиться получать выгоду из инцидентов или интересна эта тема - однозначный мастхев. ————————————— Кот Шрёдингера без коробки: проблема консенсуса в распределенных системах Популярная проблема распределенных систем - согласованность (consensus) записи данных. В статье даются основные определения и проблемы согласованности, рассказывается в чем отличие синхронной и асинхронной модели коммуникации в таких системах, почему в синхронной модели отказ одного узла ломает систему целиком. Так же рассказывается об семействе алгоритмов paxos, которые решают проблему консернуса. Этот алгоритм используется в cassandra, Amazon Elastic Container Services и как замена zookeeper в Neo4j Если интересна эта тема, советую посмотреть на raft алгоритм, который решает похожую проблему и используется в NATS. Думаю, в будущем можно будет реализовать подобные паттерны на стримах, чтобы лучше понимать как это работает под капотом. ————————————— http://amp.gs/N3wI Distributed Tracing визуализирует путь запроса (или событий) в сервисной архитектуре. В монолитном приложении хватает обычного request_id, но когда дело касается сервисов, нужна группировка сложнее. В статье рассказывается что такое распределенная трассировка, зачем нужна и как работает. А так же сравниваются проекты, которые помогают интегрировать трассировку. А для тех, кто хочет добавить в трассировку события, статья от confluent о том, как работает zipkin + kafka: The Importance of Distributed Tracing for Apache-Kafka-Based Applications Понравился пример визуализации сообщений между сервисами, который показан в конце статьи. Так как последнее время трачу много времени на подобные визуализации
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме