К основному содержимому
#Software

The Joy of Building Large Scale Systems • Suhail Patel • YOW! 2023

#Software #Architecture #DistributedSystems #SystemEngineering #SystemDesign #Engineering #Devops #SRE

Это очень интересное выступление Suhail Patel, Senior Staff Engineer at Monzo. Оно посвящено тому, как поменялись latency numbers (смотри "Latency Numbers Every Programmer Should Know") и производительность в общем за последние годы. Важно, что эти изменения напрямую влияют на проектирование и эксплуатацию масштабных и нагруженных систем. Автор очень подробно идет по куче тем и

  • Рассказывает про работу b-tree+ в базах данных (интересно, что он не говорит про LSM и SSTables)
  • Показывает как поменялась скорость дисков: HDD (200 mbps), SDD (550 mbps), NVMe (3000 mbps)
  • Упоминает про изменения в CPU (да закон Мура уже не про рост мощности одного ядра, а про увеличение количества ядер) + появление ARM процессоров, что выдают больше мощности на стоимость по сравнению с x86-64
  • Говорит про рост пропускной способности сети (c 1Gbps до десятков Gbps) и появление кастомных чипов типа TPU от Google (tensor processor unit)
  • Вспоминает давнишние предсказания о том, что несмотря на увеличение мощности компьютеров software всегда найдет куда утилизировать эти мощности (обычно в дополнительные уровни абстракций поверх уровня железа)
  • Разбирает подход с работой вида thread per core (сравнение shared everything arch vs shared nothing arch на уровне процессора, его ядер и доступа к памяти), тут же рассказ про выделение одного ядра на работу с сетью и как это помогает с tail latency, про Seastar, что используется в Scylla (конкурент Cassandra, но только на C++, а не Java), про io_uring, который заехал и в libuv
  • Рекламирует Rust как инструмент для системного программирования и показывает как его легко использовать с Python (пример с парсингом дат в промышленном масштабе)
  • Рассказывает про новые трюки с garbace collection, начиная с Java 17, дальше про eBPF (я рассказывал про интересную документалку об этом проекте)
  • Говорит про простое ускорение работы с парсингом JSON, оптимизацию загрузки весов с llama и подобные вещи при помощи понимания низкоуровневых концепций И заканчивает на высокой ноте, призывая лучше разбираться с тем, как работет железо под нашим софтом

Many of the systems (apps, services, databases, caches, queues) that we build/rely on are grounded on quite poor assumptions for the hardware of today

Software can keep pace, but there’s some work needed to yield huge results, power new kinds of systems and reduce compute costs

#Software #Architecture #DistributedSystems #SystemEngineering #SystemDesign #Engineering #Devops #SRE