Size: a a a

2021 November 26
2pegramming
Пятничное чтиво

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

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

В защиту функциональных рассмотрений целевой системы

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

Текст абстрактный и, как кажется, главная задача текста - помочь задуматься о разнице между “что сделать” (и последующими вопросами “а зачем это делать”) и “как сделать”. Я уже год думаю о гипотезе: неожиданная сторона курса - помочь инженерам посмотреть на систему не с точки зрения реализации, а с точки зрения набора компонентов, которые выполняют какие-то действия. А один из отзывов подтверждает гипотезу:

> В процессе проектирования обычная “каша” из требований превратилась в логичные и довольно компактные цепочки событий и команд)

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

20 Best Practices for Working With Apache Kafka at Scale

Статья от ребят из NewRelic, в которой описывается что можно сделать для увеличения перфоманса с кафкой:
- 2 совета связанных с партишенами: как считать retention space (и почему важно его считать), почему рандомное разбиение по партициям лучше ручного (кроме случаев, когда это необходимость);
- 4 совета связанных с консюмерами: апдейт кафки, работа с consumer socket buffers, консьюмить только то, что читается (вместо консьюма всего подряд), работа с GC в джаве;
- 4 совета связанных с продюсерами: использование ack и retries, работа с buffer sizes и почему без метрик никуда;
- 10 советов связанных с брокером: что мониторить, какие ресурсы выделять для разных топиков, как конфигурировать брокер и почему локальное тестирование перформанса может навредить;

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

Choosing a cache

Без кеша сложно жить, но о кешировании легко забыть. В статье описываются правила выбора кеша + стратегий работы. Текст начинается с выбора оптимального size limit, eviction strategy (как удаляется старое значение) и TTL. После этого, авторы описывают как кэширование может интегрироваться в jvm экосистему (автор пишет на джаве), паттерны (пять штук), разницу между распределенным кешом и локальным, а так же non-blocking API.
источник
2021 December 03
2pegramming
Пятничное чтиво

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

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

Как создать шаблон описания системы и начать его использовать

Статья от ребят из ламоды, в которой рассказывается как создать “шаблон” для описания каждой из частей системы и какие проблемы решает подобный шаблон. Важно отметить, что в статье, под шаблоном, подразумевается структура документации для каждой из частей системы.

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

Понравилось, что в статье описан пример использования шаблона и опыт распространения/сбора обратной связи по шаблону. Если страдаете из-за разрозненной документации по системе - советую посмотреть статью.

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

The Entity Service Antipattern

“The Entity Service Antipattern” описывается в “Microsoft’s .NET microservices architecture ebook” и туториалах к Spring. Главная идея - проектируем сервис для онлайн шоппинга, который обращается к 4 сервисам, предоставляющим CRUD интерфейс для данных: order, cart, product, accounts (пример из статьи). В этом случае можно написать еще один сервис, который будет обращаться к двум из них: product, accounts. При этом повторение кода в product и accounts не будет дублироваться, а основная работа с данными будет в этих entity services.

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

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

Event Modeling: What is it?

Без понимания работы системы - сложно спроектировать решение или изменить существующую систему. Можно разбираться как работает система на уровне имплементации (кода), можно взять модный event storming (писал о подходе в марте), можно использовать workflow/user stroy approach. Сегодня, предлагаю посмотреть на event modelling, который описывает систему на примере изменения информации в течении времени. Данный подход похож компонентами на event storming (тоже состоит из команд, вью и событий), но при этом, показывается, как команда переходит во вью и на определенную страницу приложения. При этом, в данном виде моделирования, учитываются еще внешние события.

В статье, кроме описания компонентов состоящих в моделе, найдете еще процесс воркшопа, как моделирование мапится на ПМ-а, секьюрити и легаси системы.
источник