Получи случайную криптовалюту за регистрацию!

2pegramming

Логотип телеграм канала @pepegramming — 2pegramming 2
Логотип телеграм канала @pepegramming — 2pegramming
Адрес канала: @pepegramming
Категории: Технологии
Язык: Русский
Количество подписчиков: 3.25K
Описание канала:

Грустно об архитектуре и программировании.
https://pepegramming.site

Рейтинги и Отзывы

4.33

3 отзыва

Оценить канал pepegramming и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

2

3 звезд

0

2 звезд

0

1 звезд

0


Последние сообщения 11

2021-02-01 18:02:00 Сегодня два анонса, запустил первый курс и в среду первый стрим в этом году.

-----

Курс

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

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

В итоге, получилось 4 недели, за которые расскажем об асинхронной архитектуре и эволюции этой архитектуры. В курсе будет больше упора на проектирование: как из идей event storming и стратегического слоя DDD найти сервисы, которые реализовать придется. А также, как превратить эту информацию в рабочий проект, помня об эволюции данных и заложив фундамент для будущих изменений.

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

Записаться можно тут, если хотите спасти попугов - save-popugi даст скидку в 10%.

-----

Стрим будет в среду, 3 февраля, 20:00 по москве. Пока пишу заметки, накопилось уже записей столько, что записи сложно обрабатывать, так как не хватает визуализации связей и сложных поисков, которые нужны как для курса, так и для основной работы. Я пробовал obsidian и roam, но, в итоге, остановился на inkdrop. Поэтому, за стрим напишем штуку, которая сливает заметки в neo4j и на реальной проблеме разберемся, как использовать графовые базы.
2.0K views15:02
Открыть/Комментировать
2021-01-29 13:31:00 Пятничное чтиво

Возможно, на следующей неделе, будет внеплановый стрим. Хочу решить собственную боль с заметками, заодно поковыряться с neo4j. Подробнее расскажу в ближайшее время, как разберусь со временем. Старые записи стримов можно найти на ютубе. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Introduction To Distributed Tracing Pattern

Я публиковал ссылку, рассказывающую что такое распределенная трассировка. В сегодняшнем посте автор делает акцент на связывании логирования и трассировки. Для этого необходимо использовать уникальный id в логах (очевидный вариант использую больше 4 лет и реализация кочует из проекта в проект), что позволит смотреть логи для запроса. Магия начинается, когда логи и трейсы объединяются одним уникальным id. В таком случае можно сразу посмотреть поведение и производительность распределенной системы. В конце статьи приводится 4 примера того, как это сделать.

Русский перевод

—————————————

Building production-ready services

Статья с концепциями, которые желательно учитывать для сервисной архитектуры. Бо’льшая часть отдается AuthN и AuthZ. Поверхностно рассказывается о конфигурации. В конце найдете список необходимых вещей для обсервабилити (а также крутую картинку с обсервабилити паттернами). Статья больше тянет на набор терминов, которые можно выписать в readiness checklist или в список на изучение.

Если хотите больше концепций - год назад, в питере,рассказывал о том, сколько концепций необходимо держать в голове для перехода на сервисную архитектуру и как toptal готовился к SOA.

—————————————

Things I Wished More Developers Knew About Databases

Лонгрид солянка из 17 пунктов о том, что стоит знать по базам данных. Жалею, что не прочитал текст 4-5 лет назад. Каждый пункт подробно расписывается (иногда приводятся диаграммы или код). Перечислять 17 пунктов лень, поэтому опишу те, которые понравились:

- Третий пункт о consistency и isolation capabilities, так как каждый раз путаюсь в isolation levels для SQL. Так же понравилась картинка с concurrency models и связями между ними.
- Восьмой и девятые пункты. Там рассказывается о application-level sharding вне application-level и AUTOINCREMENT-ге, который может быть вредным, так как не сталкивался с подобным.

Ну и два пункта, которые рекомендую:
- Седьмой пункт. Это причина, почему в rom-rb не хотели делать #first и #last методы.
- 13 и 14 пункты о вложенных транзакциях и транзакциях + стейте приложения.
2.0K views10:31
Открыть/Комментировать
2021-01-27 13:31:00 Одним подкастом в мире стало больше

С Федей я познакомился пока консультировал ребят из igooods. Федя - техдир с 15-летним стажем, консультирует крупные компании и ведет канал @pmdaily. По работе приходилось часто созваниваться и в какой-то момент решили попробовать выносить обсуждаемые темы в публичное пространство.

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

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

Интересно наблюдать, как из бесформенной массы рождается структура: стали акцентироваться на эмоциях (декомпозиция эмоций, как девиз), находить причины (хоть и местами мнимые) явлений и говорить честно на темы, о которых не видел чтобы говорили подобным образом.

Слушайте на Soundcloud и Apple Podcasts.
1.7K views10:31
Открыть/Комментировать
2021-01-22 13:31:00 Пятничное чтиво

Медленно прихожу в норму, поэтому пока только ссылки. Старые записи стримов как обычно можно найти на ютубе. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Сергей Константинов. API

Вместо ссылки - книга о проектировании API, но хочется остановиться только на 11 главе, которая тянет на отдельную статью. В главе описывается 20 советов для проектирования апи, которые помогут в стандартизации API.

Что лично практикую:
- использование uuid вместо id;
- возвращение полного состояния системы после мутаций;

Что запомнилось:
- люди явно пишут что объектов нет, вместо отдачи пустого списка.
- понравилась идея с порядком ошибок: от критических до некритических. Возник вопрос: можно ли подобную идею использовать в условном dry-v?
- понравилась идея с указанием политики кэширования в документации. почему-то сам так не делал до этого момента.

Что воспринял скептически:
- пункт о локализации. Как показывает практика, локализация бывает избыточной по определению (особенно если рынок только русский или только английский).
- много вопросов возникало вокруг 14 пункта об атомарных операциях, не понятно как батч запросы делать (если это надо).

—————————————

Работа с унаследованным кодом: Риски, анализ проекта и стратегии работы

Подробный лонгридов о легаси что я видел (хоть и написан в 2014 году), который пытается ответить на вопрос: что можно сделать со старой и (или) плохо работающей системой.

Понравилось, что автор разделяет “плохую” и “хорошую” унаследованную систему, дает список признаков, по которым можно определить “плохую” систему, а также размышляет о том, как системы становятся унаследованными. Кроме того, описываются возникающие риски, а так же приводятся (с пояснениями) 10 вопросов, которые помогут в анализе легаси системы.

В конце статьи описывается 4 стратегии изменения легаси систем: "Переписать", "Оставляем как было", "Strangler Application" (создать новое, поверх старого), "Переработка по модулям". Для каждой стратегии приводится описание, плюсы, минусы и рекомендации. Если мало - бонусом идет 11 историй работы с легаси системами от сторонних авторов.

—————————————

Kafka is Not a Database

Кафка не только стримит данные, но и хранит сообщения, а также имеет из коробки projections для сбора состояния по сообщениям (kSQL). Поэтому велик риск использовать message broker как базу данных и хранить там данные (сам с таким сталкивался). Авторы статьи рассуждают, как отсутствие isolation levels в кафке может помешать этой идее. На примере онлайн магазина собирается система которая показывает нарушение concurrency control между чтением данных и записью мутаций с этими данными. Как решение, приводится вариант “change-data-capture”, который использует стриминг через кафку для наполнения “традиционных” баз данных.
2.0K views10:31
Открыть/Комментировать
2021-01-21 16:34:41 Открытие четвертого сезона


2020 год оказался самым психологически и эмоционально сложным годом в моей жизни. Это подтверждается несколькими фактами:

- Проблемы со здоровьем, которые начались на фоне напряженной работы в toptal (6+ часов митингов в день + перманентное “it’s fine” состояние). При этом работа дала опыт, который пригодился в последующей работе и проектах. Да и в целом, я бы повторил, если бы оказался в такой же ситуации еще раз.
- Рекордное количество часов проведенных на психотерапии. 250 в 2020 году против 170 в 2019.
- Полная социальная изоляция. Забил на ссылки, опенсорс, соцсети. Увольнение в никуда. 2-4 часа работы в день максимум, которые могу позволить себе последние полгода.

При этом, в 2020 году попробовал себя в новых ролях: полноценном архитектурном консалтинге, подкастинге, сделал курс по асинхронным системам, провел пару аудитов проектов. К сожалению, мне неизвестно сколько еще придется восстанавливаться, чем хочу заниматься и когда смогу работать так же продуктивно, как работал до этого.

На этой депрессивной ноте открываю четвертый сезон 2pegramming, завтра вернуться еженедельные ссылки и в ближайшее время расскажу о проектах, которыми занимаюсь или занимался в прошлом году. Хочу вернуть стримы и попробовать новые форматы, чье появление зависит только от моего состояния, поэтому ничего конкретного обещать не могу.
1.5K views13:34
Открыть/Комментировать
2020-10-23 17:44:46 Пятничное чтиво

Ребята из 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 проблем связанных с синхронными коммуникациями в сервисной архитектуре. Также, дается пример инструментов, которые, в теории, могут помочь справится с этими проблемами. Статья носит ознакомительный характер и подойдет в случае выбора вида коммуникаций между сервисами.
3.4K views14:44
Открыть/Комментировать
2020-10-16 16:11:57 Пятничное чтиво

Ребята из 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 вызовов.

——— одной строкой ———

- Пример реализации персональной вики;
2.1K views13:11
Открыть/Комментировать
2020-10-09 15:20:40 привет, на этой неделе ссылки сделать не успел, поэтому до встречи в следующую пятницу
1.7K views12:20
Открыть/Комментировать
2020-10-02 14:57:57 Пятничное чтиво

Стримы откладываются на месяц, так как начал работу над воркшопом по 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, которая включает следующие правила: группировка сервисов по доменам, “шлюз” (гейтвей) как единственный публичный доступ к группе, слои для доменов и изоляция доменов. В статье найдете пример реализации и плюсы/минусы.

Русский перевод
2.2K views11:57
Открыть/Комментировать