BufWriter<Master<'_>> – Telegram
BufWriter<Master<'_>>
105 subscribers
451 photos
28 videos
34 files
1.7K links
https://www.patreon.com/alxe_master

Видео/статьи. Конспект и мои вольные комментарии по инженерии. тут только то, что считаю полезным для себя или других =)

#os, #cloud, #rust, #golang, #python, #javaScript, #cpp, etc
Download Telegram
== Scale Kubernetes to support 50000 services
https://www.slideshare.net/LCChina/scale-kubernetes-to-support-50000-services

Where is the latency generated (IPTables)?
- not incremental
- copy all rules
- make changes
- save all rules back
- IPTables locked during rule update

Time spent to add once rule when there are 5k services (40k rules) = 11min

20k services (160k rules) = 5 hours
Forwarded from Технотренды
[Перевод] Embedded Linux. Отладка ядра

Придя в embedded linux из мира микроконтроллеров, такого привычного инструмента отладки кода, как пошаговая отладка кода на целевой железке с помощью аппаратного программатора, - очень не хватало. В предыдущих статьях описано, как мы учились дебажить загрузчик u-boot: 1, 2. С ядром все оказалось сложнее. Например, выяснилось, что ядро Linux в принципе невозможно скомпилировать с отключенной оптимизацией (-O0). В статье описывается как нам все таки удалось запустить ядро на микропроцессоре ARM в режиме пошаговой отладки.

#linux #guide
кто бы мог подумать что матан мне станет настолько интересным как сейчас
Forwarded from Cross Join - канал о разработке (Anton Okolelov)
На Хабре появилась очередная статья о том, как php пытаются натянуть на хайлоад, используя для этого костыли swoole.

Статья потрясающая, ведь в ней перечислены все минусы этого подхода по сравнению с Go, Node и т.д., а выводы сделаны противоположные здравому смыслу.

В статье api, которое пишет в базу, нагрузка всего 300rps.

1) Приложение жрет 2 гига памяти и 8 ядер cpu. Ну хз, Go сожрало бы в несколько раз меньше. У меня микросервисы обычно потребляют в разы меньше при гораздо большей нагрузке. Хотя, конечно, зависит от конкретики приложения.

2) раздел "простота инфраструктуры", цитирую:

"...внутри контейнера будет всего 11 процессов: 1 tini (supervisor)+entrypoint, 1 master процесс, 1 manager процесс и 8 worker процессов."

Вы чо, ребят? Какая тут простота? Особенно учитывая, что они зачем-то перезапускают процессы воркеров раз в час.

Image весит всего 120 мегабайт. Ну неплохо, но если это так важно, то в Go можно оставить вообще один бинарник (FROM scratch), и он будет весить по сути вообще около нуля.

3) чтобы добиться постоянного соединения к бд и редису, пришлось написать несколько оберток к библиотекам и драйвер к doctrine.

4) 4ms уходит на обработку запроса без логики (пустой запрос или даже 404). Сорян, но это очень много.

5) в течение месяца после выкатки они вылавливали странные ситуации. Что-то там текло при коннекте к посгресу и тд.

Итог) Вывод делают такой: php закапывать рано, все норм.

Блин. Если бы в статье был упор на удобство написания кода, то я бы это купил и пошарил бы везде. Синтаксис php во многом удобнее. Но статья про хайлоад и производительность, блин.

Отдельно хочу заметить, что описанное в статье могла намутить только команда прокачанных php-синьоров, которые готовы ловить и фиксить необычные проблемы. А на Go с задачей "highload api, которое лезет в базу" справился бы начинающий по стандартному мануалу. И у него не возникло бы ни одной серьёзной проблемы.
Forwarded from SecurityLab.ru
Google Analytics объявлен незаконным в ЕС

Австрийское управление по защите данных заявило, что использование системы сбора статистики Google Analytics нарушает «Общего регламента по защите данных» (General Data Protection Regulation, GDPR) и представляет угрозу конфиденциальности.

Согласно решению суда, сервис Google Analytics признан незаконным для использования на европейских web-сайтах.

Теперь многие компании в Европе должны удалить Google Analytics со своих сайтов или рискуют быть оштрафованными за нарушение GDPR.

https://www.securitylab.ru/news/528944.php
Forwarded from Lil Functor
C4 Model

Меня сильно заинтересовали способы грамотной визуализации архитектуры программных систем, потому что диаграмы уровня [kafka] → [scala] → [postgresql] порядком поднадоели. Хочется выработать максимально информативный, но в тоже время удобный способ рисовать то, что мы проектируем.

Из того, что нашёл, больше всего понравился фреймворк C4model. Но зачем вообще нужен целый фреймворк для визуализации? Без него каждый раз приходится импровизировать, что нарисовать на диаграмме. А нарисовать хочется многое: юзер-стори, технологии, карту микросервисов и хранилищ, технические ограничения... В итоге получается либо картинка с хаотичным набором стрелочек и квадратиков с перемешанными абстракциями «всё в одном», либо фрустрация и рисование примитивной схемы а-ля «ну тут сервис, тут база, всё понятно вроде».

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

Мне нравится подход C4, но с парой ремарок:

→ Я бы сократил C4 до C3. Визуализация связей внутри кода приложения кажется избыточной: если все сервисы пишутся по единым паттернам в неком подобии гексагональной архитектуры, то и связи между модулями будут типовыми. Лучше инвестировать в выработку организационных стандартов кодирования, чем в рисование/генерацию UML.
→ В микросервисных реалиях одно приложение содержит в себе совсем немного компонент, поэтому на третьем уровне вместо статической диаграммы внутренностей отдельного приложения лучше нарисовать основные процессы, которые оно выполняет. Для этого хорошо подходит диаграмма последовательности из PlantUML.
→ Описание слоёв не является догмой и должно адаптироваться под нужды организации или команды.

Напишите в комментарии, что вы у себя используете для визуализации/документирования разработок?
Forwarded from Experimental chill
Метастабильные падения

Я просто обожаю эксплуатацию.

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

Метастабильные падения это падения, которые вызваны непредвиденными обстоятельствами и даже если их убрать, то система не восстанавливается и продолжает не работать. Скажем, DDOS атака сама по себе не является метастабильным падением. Вы можете её убрать, и система продолжит хорошо работать.

Ретраи

Рассмотрим пример. Скажем, вы пишете сервис Google Maps API для поиска маршрута. Новый релиз разломал бэкенд карт. Надо откатывать, но вот незадача, ваше API используется очень тупыми железками вроде GPS навигаторов. Они перезапрашивают в цикле. В итоге бэкенд карт разломался, вы пытаетесь откатить изменения, а из-за количества запросов бэкенд снова валится. Вы снова пытаетесь поднять инстансы, а они не держат эту нагрузку. В итоге система сломана, надо очень сильно понижать нагрузку уровнями выше.

Кэш

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

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

Сверхоптимизации

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

Что произошло на самом деле:
1. Мы научились оптимизировать пайплайн очень хорошо, без модельки он завершался
2. Пайплайн вырос в сотню раз, но мы все ещё хорошо его оптимизировали
3. Мы поменяли модельку оптимизации
4. Теперь не хватит ресурсов компании его завершить

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

Ближайший простой пример: алгоритмам сжатия не стоит иметь формат, который умеет сжимать в экспоненту раз, а то и в квадрат. Из-за этого есть zip-бомбы.

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

Решения, которые стоит рассматривать при проектировке

* Приоритеты. Делать приоритеты хорошим запросам.
* Лимиты. Если что-то оптимизируете, не оптимизируете это в сотню раз, если можете эту сотню в итоге потерять и не справиться.
* Всегда планировать нагрузку без оптимизаций, которые когда-то могут не работать, в том числе кэши. Пусть оно замедлит на 100ms ответ, но оно хотя бы не упадёт. Учения, стресс тестирование пригодится.
* Деградация. Попытайтесь задизайнить бэкенд, чтобы он эластично деградировал, скажем, не искать лучший маршрут в Google Maps, а рассматривать только X%.
* Следите за системой, одно падение может обнаружить баг, который был годами. Обычно происходит так: система ломается чуть-чуть, что-то подозрительное происходит, на след день что-то ещё хуже, через 2 дня всё падает крахом.

[1] Metastable Failures in Distributed Systems
Forwarded from CyberYozh
Подборка популярных и малоизвестных сервисов проверки email адресов на утечки пароля по слитым базам данных.

https://haveibeenpwned.com
https://leakedsource.ru
https://leakcheck.io
https://monitor.firefox.com
https://dehashed.com
https://breachalarm.com
https://sitecheck.sucuri.net
https://intelx.io/

Обсудить в чате 👉 https://news.1rj.ru/str/+jrxm2KHbIl9kMDQy
Основы_Big_Data_Концепции,_алгоритмы_и_технологии.PDF
28.8 MB
посоветовали книгу для начинающих

Big Data - концепции, алгоритмы и технологии

Оригинал - https://www.amazon.com/exec/obidos/ASIN/0134291077/managementc09-20/

Глава 1 - Понимание больших данных. = Концепты и терминология. Хараткеристики. Типы данных

Глава 2 - Бизнес-мотивация и стимулы для перехода к обработке больших данных. Динамика рынка. бизнес-архитектура

Глава 3 - переходд к большим данным и вопросы планирования

Глава 4 - корпоративные технологии и BI для Big Data = OLTP, OLAP, ETL, Storages, Data Mart, BI

Глава 5 - Концепции хранения Big Data = Кластеры, NoSQL, Шардинг, Репликация, Теория CAP, ACID, BASE

Глава 6 - Концепции обработки больших данных = Паралелизация, распледеление, Hadoop, Кластер, Пакетная обработка, Транзакционная обработка, Обработка в реалтайме

Глава 7 - Технологии хранения Big Data. Дисковые устройства, Системы хранения в RAM

Глава 8 - Основные методы анализа больших данных = Количественный, Качественный, data-mining, Статистический, МЛ, Семантический, Визуальный анализ
🔥1
нашел шикарный плейлист по
Бизнес и Системный анализ в жизненном цикле разработки ПО

скоро досмотрю

https://youtube.com/playlist?list=PLS2k5aJRMxzRBRPtNBreyxZWHeJ-kZAv7

1) БиСА вводная
2) БиСА Концепции архитектуры ПО
3) БиСА в продуктовой и сервисной разработке
4) Заинтересованные Лица
5) БиСА. Бизнес модеь. ценность продукта
6) БиСа. Анализ и определние проблемы
7) БиСа. Документирование требований
8) БиСА. Моделирование использования
9) БиСА. Атрибуты качества
10) БиСА. Концептуальная модель
11) БиСА. Построение архитектуры


1. БиСА в продуктовой и сервисной разработке
https://youtu.be/1bBNVWr_pEw

Модели
- Сервисная
- Ценностная


ВНЕ ЗАВИСИМОСТИ ОТ ВИДА ТРУДА. Эффективность для бизнеса будет во многом зависит от того за что именно нам платят деньги

Сервисная модель
(покупатиль платит за время работы)
- самая бедная модель (выгода составляет разница между зарплатой и тем что платит клиент)
- повышение эффективности труда не влечет повышение заработка (а наоборот)
- повышение эффективности продукта не влечет повышение заработка
+ выгода только в низкооплачиваемых сотрудниках. ЧЕМ МЕНЬШЕ РАБОТОДАТЕЛЬ ПЛАТИТ ЗА РАБОТУ ТЕМ ВЫШЕ ЕГО ПРИБЫЛЬ

Ценностная модель (покупатель платит за то сколько стоит для него результат труда)
+ эффективная работа становится выгодной
+ высокоценные сотрудники ТЕ которые БОЛЬШЕ ЗНАЕТ
+ платят столько сколько ценности приносит человек в компанию
- чем выше прибыль тем выше необходимые затраты. и тем меньше спрос!

Архитектору платят за то что он знает как сделать эффективно

Два варианта роста по ЗП
- вертикальный (чем большим количеством людей вы управляете тем больше вам платят)
- горизонтальный (чем больше вы знаете, тем больше вам платят)

Если результат не увеличивает ценности - то не важно сколько часов вы отработали !!!! Трудоголизм оправдывается только в обучение (для ценностной модели)

Чем выше вы поднимаетесь в стоимости ваших услуг, тем меньше компаний готовы за вас заплатить

Продуктовая модель
= Компания зарабатывает на тиражируемости продукта
ДОХОД = ТИРАЖ * (ЦЕНА_продукта - ЗАТРАТЫ_вложенные) - ЗАТРАТЫ_пост
+ чем больше людей купило КАЧЕТСВЕННЫЙ продукт тем больше прибыли
+ Для повышения ценности решения одновременно со снижением индивидуальной стоимости необходимо РАЗДЕЛИТЬ ТРУДОЗАТРАТЫ на создание продукта
- чем больше пользователей тем сложнее создавать продукт соответствующий потребностям
- потенциальный рынок продукта имеет свой предел
+ В ОТЛИЧИЕ ОТ УСЛУГИ ПРОДУКТ ПРИОБРЕТАЕТСЯ ОДИН РАЗ

Продуктовая (услуга) модель
ДОХОД_в_мес = К-ВО_подписчиков * ЦЕНА_подписчики - ЗАТРАТЫ_поддержка - ЗАТРАТЫ_создание_платформы / Амортизация

Овертаймы окупаются лишь в первый раз ! среднее количество ошибок при работе в овертайм постоянно ростет с каждым часом
The Power Spectrum
==Part1
https://mark-kramer.github.io/Case-Studies-Python/03.html
- Visual inspection
- Mean, variance, and standard deviation
- The autocovariance
- Power spectral density
- The spectrum
- The discrete Fourier transform in Python
- The Nyquist frequency
- The frequency resolution
- Decibel scaling
- The spectrogram


== Part2
https://mark-kramer.github.io/Case-Studies-Python/04.html
- Visual inspection
- Spectral Analysis: The Rectangular Taper and Zero Padding
- Beyond the Rectangular Taper—the Hanning Taper
- Beyond the Hanning Taper—the Multitaper Method
- Confidence Intervals of the Spectrum
Пришел дешевенький генератор сигналов. Стоит понты. Работает вполне. Квадрат немного не оч на высоких частотах но вцелом мне норм пока
Forwarded from Scala программирование (MainBot)
В чем разница между машинным обучением и AI?
— Если это написано на python, то это машинное обучение.
— Если это написано на PowerPoint, то это AI.