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

pepegramming logo

Pepegramming

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

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


Входит в категории: Технологии
Pepegramming
23.10.2020 17:10
Пятничное чтиво Ребята из rubyrussia все еще принимают запись на мой воркшоп по асинхронным системам. Стримы все еще на паузе, но старые записи стримов можно найти на ютубе. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Handling Distributed Transactions in the Microservice world Одна из проблем распределенных систем - транзакции, которые затрагивают более одного сервиса одновременно. Такие транзакции принято называть распределенными и работа с ними вызывает боль, особенно у разработчиков без опыта. Автор статьи описывает проблемы, с которыми придется столкнуться в системах, где необходимы распределенные транзакции. Также, описываются два варианта имплементации такой транзакции: двухфазная фиксация и SAGA. При двухфазной фиксации транзакция проходит в два этапа, подготовка и фиксация, а о SAGA на канале уже упоминалось. Для каждого решения автор приводит краткое описание, плюсы и недостатки. Русский перевод ————————————— What is distributed tracing and how does OpenTelemetry work for event-driven integration? Building Netflix’s Distributed Tracing Infrastructure Две статьи об распределенной трассировке. Первая рассказывает об опыте salesforce и OpenTelemetry, вторая - netfix и самочинного решения Edgar. Из статей узнаете что такое распределенная трассировка, зачем нужна, а также посмотреть на примеры использования в компаниях. Так же, стоит отметить, что есть OpenZipkin, который умеет трейсить асинхронные вызовы и, например, кафку. ————————————— Debugging Microservices Networking Issues Статья от dzone, в которой описывается 8 проблем связанных с синхронными коммуникациями в сервисной архитектуре. Также, дается пример инструментов, которые, в теории, могут помочь справится с этими проблемами. Статья носит ознакомительный характер и подойдет в случае выбора вида коммуникаций между сервисами.
Читать

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


Pepegramming
16.10.2020 16:10
Пятничное чтиво Ребята из rubyrussia начали принимать запись на воркшоп по асинхронным системам. Стримы еще на паузе, но старые записи стримов можно найти на ютубе. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— From Monolith to Event-Driven: Finding Seams in Your Future Architecture Еще один лонгрид от infoq о миграции с монолита на событийную архитектуру. На этот раз в статье дается упор на событийную составляющую: типы событий, ES/CQRS, миграционные события и миграцию/синхронизацию данных. В конце дается пример системы, в котором описываются принципы из статьи. Понравился пример из статьи и то, что о видах и типах событий стали говорить чаще. А так же то, что сново поднимают тему миграции/синхронизации данных, потому что в моем опыте о таком забывают. ————————————— Designing for Privacy — An Emerging Software Pattern Пять архитектурных паттернов для работы с sensitive information в системах. Также, можно комбинировать паттерны, о чем автор говорит в заключении. Статья носит больше справочный характер, три года назад, работая в healthcare стартапе пригодилась бы. Также, по собственному опыту, лучше закладывать подобные паттерны сразу в систему, чем потом пытаться переделать данные, но к сожалению это редко представляется возможным (не хватает знаний, времени или бюджета). ————————————— Scalable Microservice Architecture Using RabbitMQ RPC Статья пример того, как используя rabbitMQ RPC построить микросервисную архитектуру. Примеры кода на питоне, в конце получится пример из двух сервисов для расчета чисел Фибоначчи. Один сервис предоставляет http интерфейс для показа чисел, а второй - executor. Оба сервиса общаются между собой посредством RPC вызовов. ——— одной строкой ——— - Пример реализации персональной вики;
Читать

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


Pepegramming
09.10.2020 15:10
привет, на этой неделе ссылки сделать не успел, поэтому до встречи в следующую пятницу
Читать

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


Pepegramming
02.10.2020 15:10
Читать

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


Pepegramming
02.10.2020 14:10
Пятничное чтиво Стримы откладываются на месяц, так как начал работу над воркшопом по event driven системе. Нужно за месяц успеть с нуля написать систему из пяти сервисов и оформить воркшоп. Старые записи стримов можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Thinking Like a Functional Programmer with Category Theory Для меня теория категорий сродни монадам и функторам в социальном значении. Часто слышу термин, но до плейлиста от Bartosz Milewski руки не доходят. Поэтому сегодня короткая заметка с introduction в теорию категорий. В статье найдете определение категории, что такое объект, morphism и как это связано с графами. Также, дается определение magmas (бинарная операция). Ну и в конце разбирается что же такое монада и что означает фраза “моноид в категории эндофункторов”. Русский перевод ————————————— How One Guy Ruined #Hacktoberfest2020 Первая драма на канале. Каждый год Hacktoberfest помогает разработчикам начать контрибьютить в опенсорс, а мейнтейнерам закрывать "скучные" баги, на которые не хватает сил и времени. К сожалению, с ростом популярности мероприятие превратилось в спам мейнтейнеров пул реквестами с добавлением “Awesome project” в readme файл или другими “быстрыми” способами получить футболку. Как выяснилось, началось все с ютубера, который записал короткое видео о том, как быстро получить футболку от DO. А в статье найдете больше примеров спам ПР-ов и реакцию сообщества и DO. Если вы мейнтейнер проекта и вам шлют подобные ПР-ы, добавьте “invalid” или “spam” лейбл и тогда ПР-ы не будут учитываться. ————————————— Introducing Domain-Oriented Microservice Architecture Статья инженеров убера о том, как компания с микросервисов перешла на “доменные” сервисы. Изначально у убера было два монолита, которые накладывали ограничения и создавали проблемы (список в статье), после чего компания перешла на микросервисы. Когда в системе стало 2000+ сервисов разработчики столкнулись с проблемой сложности анализа системы (например для поиска проблем). Поэтому появилась концепция DOMA, которая включает следующие правила: группировка сервисов по доменам, “шлюз” (гейтвей) как единственный публичный доступ к группе, слои для доменов и изоляция доменов. В статье найдете пример реализации и плюсы/минусы. Русский перевод
Читать

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


Pepegramming
28.09.2020 18:09
Привет! Меня попросили сделать воркшоп и в качестве темы я хочу взять сервисную (микросервисную) архитектуру. Так как тема очень большая и в четыре часа ее не уместить - хочу понять самую популярную боль у разработчиков связанную с сервисами и сервисной архитектурой в частности. Я сделал гугл форму на 2 вопроса и буду благодарен, если вы поможете и расскажете о своей боли или проблемах с которыми встречались в работе https://forms.gle/6XVPFWQxH338X32GA
Читать

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


Pepegramming
25.09.2020 17:09
Пятничное чтиво На этой неделе разобрал pocket, поэтому сегодня две старые статьи, которые откладывались много лет. Старые записи стримов можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Redis: under the hood More Redis internals: Tracing a GET & SET Статья которую откладывал больше пяти лет. Автор описывает внутреннее устройство redis, а именно как работает startup сервера и реквест/респонс команд. В статье найдете вставки си кода и диаграммы, которые помогут разобраться в работе базы данных. Так же, дается ссылка на вторую часть, где описывается работа GET и SET команд. ————————————— Git from the inside out A Hacker’s Guide to Git Rebuilding Git in Ruby Три статьи о низкоуровневой работе гита. В первой статье объясняется как работают самые популярные команды, что лежит в .git репозитории и как работают гит хеши. Во второй статье найдете подробное описание каждой из команд с информацией о внутреннем устройстве инструмента. Если и этого не хватит - можно прочитать главу из The Architecture of Open Source Applications (Volume 2). А что бы закрепить - практика. Ребята из thoughtbot, четыре года назад, написали статью о том, как написать аналог гита на руби. Можно пройти шаги из статьи на стриме и посмотреть что получится. Если интересно - пишите в личку. ————————————— Тонкости авторизации: обзор технологии OAuth 2.0 Ребята из додо написали лонгрид о том, как работает OAuth 2.0. Изначально компания написала собственный сервис аутентификации для сервисной архитектуры, но теперь переписывают сервис на OAuth 2.0. Поэтому в статье найдете описание стандарта: что такое роли, как зарегистрировать клиента, как работают права доступа и что такое grant. А также приводятся примеры работы стандарта в sequence diagram. Если планируете писать собственный сервис аутентификации - однозначный мастрид. А так же, было бы интересно почитать опыт додо о собственном OAuth сервисе и как переходили с самописного решения. ——— одной строкой ——— - Kafka переходит на raft алгоритм вместо zookeeper
Читать

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


Pepegramming
18.09.2020 16:09
Пятничное чтиво Старые записи стримов можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— A plain English introduction to CAP theorem Brewer’s CAP Theorem CAP теорема необходима в распределенных системах, так как говорит что в подобных системах можно добиться двух из трех свойств: согласованности данных, доступности и partition tolerance. Понимание теоремы пригодиться при выборе оптимальной базы данных. А что бы разобраться с теоремой - две статьи. В первой - на примере выдуманного сервиса и без каких либо усложнений описывается как теорема работает на примере коммуникаций между людьми. Во второй - технический текст, с описанием каждого из свойств, картинками и вариантами использования теоремы. Советую начать с первой, а потом уже читать вторую статью. Русский перевод первой статьи ————————————— Where Is My Cache? Architectural Patterns for Caching Microservices Кеширование - боль, а в (микро)сервисной архитектуре двойная боль. В статье описывается 4 паттерна (для некоторых из паттернов есть 2 варианта развития), которые помогут спроектировать кеширование в подобных архитектурах. Эти паттерны: Embedded Cache, Client-Server, Sidecar и Reverse Proxy. Для каждого паттерна дается описание, картинка и в самом конце proc&cons. ————————————— Фонтанный код Я люблю космос и все что с ним связанно, поэтому блог Алексея отдушина для меня. В статье описывается алгоритм фонтанного кода. Такой алгоритм позволяет надежно передавать данные по каналу с потерями без обратной связи и с минимальными накладными расходами. Что может помочь в передачи данных между планетами, как пример. В тексте разбирается алгоритм и говорится о следующем шаге - Raptor code.
Читать

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


Pepegramming
11.09.2020 14:09
Пятничное чтиво Старые записи стримов можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Distributed locks with Redis How to do distributed locking Распределенные блокировки сложная тема, в которой нужно учитывать множество нюансов. Я пытался написать redlock на стриме, но реализация оставляет желать лучшего. В статье-официальной документации описывается пример алгоритма redlock, который использует редис как стор для ключей. Во второй статье описывается почему redlock алгоритм “a poor choice” и что вообще делать в таких ситуациях (спойлер: Curator Recipes или zookeeper. Так же, советую 9 главу из Designing Distributed Systems Book в которой описывается Ownership Election и приводится пример распределенной блокировки ресурсов. Русский перевод документации редиса ————————————— What to Make of SRE’s Golden Signals | VictorOps Статья от разработчиков VictorOps (инструмент для incident management) с мыслями о том, что и как стоит собирать SRE команде для мониторинга системы. Сама статья не несет ценности, но описанные 4 «сигнала» для мониторинга, отправная точка для создания первых дашбордов. Эти сигналы: Latency, Traffic, Errors и Saturation. Если у вас мало опыта с обсервабилити и необходимо начать внедрять системные метрики - эти четыре пункта мастхев, а объяснение почему найдете в статье. ————————————— Real time communication using Web-sockets Подробная статья о вебсокетах. В тексте найдёте описание работы протокола, пример клиентской части (для бэкенда автор взял уже готовый echo сервис) и некоторые мысли о безопасности. Статья поверхностна и не описывает мелочи, но для старта может подойти.
Читать

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


Pepegramming
04.09.2020 15:09
Пятничное чтиво Лето закончилось, а это значит что скоро стримы вернуться из каникул. Пока не знаю когда, для начала разберусь со здоровьем. Но надеюсь к октябрю уже начнется новый сезон. Старые записи стримов можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Lessons I learned converting all my database IDs to UUIDs В канале уже упоминались статьи связанные с использованием UUID как primary key в базе данных. В статье, автор описывает 5 ошибок, которые совершил мигрируясь на новые pk. Вот некоторые из описанных: 1. Эстимейт времени необходимый для выполнения миграции в базе данных; 2. special cases и случаи о которых никто не знал и не ожидал; 3. Не учтенные референсы, которые сломались; Так же, понравилось, что в статье описана мотивация такого перехода (спойлер: можно было сделать без миграции на uuid). ————————————— Good Logging Эссе на тему использования логгера в проектах. В самом тексте примеров нет, но описываются идеи и подходы, которые понравились. Вот некоторые из них: - Логирование начала, конца и transitions для задачи (или куска кода), когда задача мелкая - стоит логировать только конец. Я бы еще добавил оборачивать логи в уникальный тег, для агрегации. - Grep-able сообщения: писать логи так, чтобы их было легко найти поиском. В тексте можно найти дополнение о том, что если функция вызывается в 2+ местах - стоит добавлять место вызова для локализации проблемы. От себя еще добавлю, что стараюсь оборачивать логи в теги (для реквестов, консьюмеров, воркеров и так далее). И что вместо логирования пару раз выручало складывать ответы от апи вызовов связанных с деньгами в базу данных. ————————————— Разбираемся с управлением памятью в современных языках программирования Серия переведенных статей (на текущий момент 3 из об управлению памятью в языках (JVM, V8, go, rust, python, c++, c#). По ссылке будет введение, в котором найдете объяснение что такое stack и heap, как работают. Также затрагивается garbage collector. Если хотите разобраться как работают языки программирования на низком уровне - мастхев. Если русский перевод ждать лень - читайте оригинал. Для тех, кто хочет разобраться как в руби работает GC и управление памятью - читайте микроскоп. Оригинальная серия ——— одной строкой ——— - Open Source Status за август от Петра (solnic); - Open Source Status за август от Тима (timriley);
Читать

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


Pepegramming
28.08.2020 11:08
Пятничное чтиво Старые записи стримов можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Benchmarking Kafka vs. Pulsar vs. RabbitMQ: Which is Fastest? Важно: стоит учитывать, что confluent предоставляет kafka as a service, поэтому стоит ожидать заинтересованность в победе кафки. Confluent написали новый пост, в этот раз сравниваются популярные message brokers. Из статьи можно узнать о Apache Pulsar, методах сравнения брокеров, The OpenMessaging Benchmark Framework. Понравилось, что подробно описывается каждый из бенчмарков, но вопросы вызвал выбор брокеров на сравнение (ожидал увидеть еще nats). ————————————— Keyset Pagination Keyset Pagination in Action Pagination Tips Тема пагинации не раскрыта, поэтому три статьи из одного блога, в из которых узнаете "все что можно" о пагинации в постгресе. В первой статье описывается базовая идея использования keyset пагинации и WITH page AS конструкции. Во второй статье приводится больше практических примеров с объяснением как это работает. А в последней статье приводится 5 видов пагинации и даются советы когда какую лучше использовать. ————————————— A simple IoT architecture to Ingestion and Reporting — Part I A simple IoT architecture to Ingestion and Reporting — Part II A simple IoT architecture to Ingestion and Reporting — Part III Серия статей о том, как автор проектирует и делает IoT архитектуру для сбора информации с различных девайсов. Для этого автор хочет использовать MQTT (крутится у меня на малине, чтобы из zigbee получать информацию с датчиков), InfluxDB и сервис для работы с датчиками. Также, в примерах джава, так как автор знает язык лучше. Люблю такие статьи, так как можно посмотреть примеры систем + почитать в чем оказались проблемы. Стоит учитывать, что статьи еще будут появляться и на данный момент описана только 3 атомарные части. Также, планировал на стримах делать подобные системы в учебных целях (пишите если интересно). Если на работе приходиться проектировать IoT системы или тема цепляет - маст хев. ——— одной строкой ——— - Матц принял ractor и готов его мержить;
Читать

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


Pepegramming
25.08.2020 13:08
Федя и Самат написали пост о диаграммах, в котором описали разные инструменты для работы с диаграммами. Я обожаю диаграммы и в качестве примера, найдете реальные примеры моей работы в igooods, где я помогаю ребятам спроектировать и сделать новый билинг для сотрудников. https://vc.ru/services/151374-s-pomoshchyu-diagramm-mozhno-obyasnit-chto-ugodno-tem-bolee-chto-dlya-etogo-est-klassnye-instrumenty
Читать

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


Pepegramming
21.08.2020 14:08
Я опять приболел, поэтому ссылок на этой неделе не будет. До встречи в следующую пятницу!
Читать

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


Pepegramming
14.08.2020 18:08
Пятничное чтиво Старые записи стримов можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Блеск и нищета модели предметной области Расшифровка доклада, с dotnet конференции, где сравнивается подход анемичной и богатой моделей. Об анемичной моделе уже писал в пятничных ссылках. Что понравилось: объясняются причины раскола на богатую и анемичную модели, вывод о том, когда ддд использовать, примеры из двух подходов для одной проблемы. Если хотите разобраться в различии моделей - однозначный мастрид. ————————————— What every developer should know about database consistency Обзорная статья о том, что такое database consistency. Автор идет от ДБ запроса через Strong Consistency и Sequential Consistency к Eventual Consistency. Статья не претендует на подробное объяснение, но базовую концепцию из нее понять можно. Понравилось, что автор нарисовал графики, с помощью которых текст становится нагляднее. А если захотите разбираться в терминах дальше - Designing Data-Intensive Applications расскажет подробнее о консистентности в базах данных. ————————————— Why Write ADRs Новый пост в блоге GitHub о том, для кого на самом деле пишут ADR (Architecture Decision Record). Если коротко, ADR это записи, в которых описываются принятые и не принятые технические решения, а также контекст, в котором принималось каждое решение, дата и кто принимал. Главное, что стоит знать и о чем говорит автор - ADR в первую очередь для коллег, будущих коллег, будущего тебя. И только после - для самого себя. Больше информации можно найти по ссылке Markdown Architectural Decision Records или в моем докладе из Твери, где рассказывалось о “ADR” в топтале. ——— одной строкой ——— - Как оптимизировать расходы на Amazon AWS;
Читать

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


Pepegramming
07.08.2020 17:08
Пятничное чтиво Старые записи стримов можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Microservice, Miniservice, and Macroservice Походу шутка с наносервисами зашла слишком далеко, потому что сегодня статья, в которой описываются отличия между микросервисами, минисервисами () и макросервисами (монолитами по простому). Для каждого определения рисуется картинка, дается определение, плюс описывается при каких условиях сервис становится определенного вида. От себя добавлю: эта движуха с определением, что есть сервис, что есть микросервис, наносервис, минисервис, макросервис и так далее, выглядит как трата времени. Лучше разобраться с коммуникациями и изоляцией, чем тратить на это время. Но подобные статьи помогают понять, что заботит определенную группу лиц. ————————————— How do Ruby & Python profilers work? Статья трехлетней давности о профайлерах в питоне и руби. Автор приводит две таблицы (для каждого из языков) в котором указывает существующие в экосистеме профайлеры, а также принцип их работы. Ну и как бонус, автор объясняет как работают tracing и sampling профайлеры, а также описывает недостатки имплементаций. Если хотите разобраться с профайлингом в динамических языках - статья хороший старт. Русский перевод ————————————— Hidden Gems: Event-Driven Change Notifications in Relational Databases Автор задался вопросом, как автоматически генерировать события на изменение в сиквел базе. Автор рассматривает постгрес, оракл, H2 Database и MySQL/MariaDB и для каждой из БД рассказывает как подписаться на нотификации (в примерах java). В последнее время, приходится часто думать о том, как проще автоматически стримить состояние таблиц/агрегатов и статья может натолкнуть на варианты решения, если столкнулись с похожей задачей. ——— одной строкой ——— - Как оптимизировать расходы на Amazon AWS;
Читать

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