Давно слышал про книжные клубы и вот наконец-то появилась возможность попробовать. Недавно начал читать «От монолита к микросервисам» Сэма Ньюмена и случайно наткнулся на ютубе на обсуждения каждой главы этой книги в рамках книжного клуба «между скобок». Ребята из клуба недалеко продвинулись по книге, поэтому решил попробовать засинкаться с ними и после прочтения каждой главы смотреть выпуск с обсуждением главы.
Интересное дополнение ко книге получается, потому что обсуждение выстраивается в виде дебата, где участники приводят аргументы за и против тех или иных практик, описанных в главе. При этом к каждой главе немного меняется состав спикеров, поэтому всегда можно услышать свежее мнение.
Мне очень понравился такой формат чтения, потому что есть возможность увидеть проблемы, поднятые в главе, под новыми углами, повторно осмыслить некоторые моменты.
Интересное дополнение ко книге получается, потому что обсуждение выстраивается в виде дебата, где участники приводят аргументы за и против тех или иных практик, описанных в главе. При этом к каждой главе немного меняется состав спикеров, поэтому всегда можно услышать свежее мнение.
Мне очень понравился такой формат чтения, потому что есть возможность увидеть проблемы, поднятые в главе, под новыми углами, повторно осмыслить некоторые моменты.
YouTube
От монолита к микросервисам. Глава 1 Основные сведения о микросервисах / Филипп Дельгядо
В рамках обсуждения первой главы мы рассмотрим понятия микросервисов и их отличия от монолитов, а также обсудим преимущества и недостатки каждого подхода. Также мы поговорим о таких ключевых понятиях, как "Cohesion" и "Coupling".
Канал с анонсами https:…
Канал с анонсами https:…
👍2
Forwarded from Книжный куб (Alexander Polomodov)
An Introduction to Residuality Theory - Barry O'Reilly - NDC Oslo 2023 (Рубрика #Architecture)
Интересное выступление про residuality theory от Barry O'Reilly, автора теории. Автор делает подход к созданию теории, что поможет инженерам прокачиваться в архитектуру не просто набивая опыт, а используя достижения complexity theory, но без погружения во всю ее сложность. Для этого автор начинает с определения упорядоченных и неупорядоченных систем, а дальше он показывает как стрессоры (неизвестные факторы) могут негативно влиять на архитектуру. С учетом вариативности окружающего мира проанализировать все состояния системы и влияние стрессоров на систему в этом состоянии не представляется возможным. Поэтому автор предлагает рассматривать систему не целиком, а изучать то, что остается от системы, если случается пи... (стрессор X). Эти остатки определяют будущее системы и могут быть использованы для управления архитектурой программного обеспечения. Для моделирования стрессоров нам поможет метод Монте-Карло с его рандомизацией, которую мы можем применить к возможным стрессорам.
Дальше автор вводит рассказывает про аттракторы как устойчивые состояния, в которые скатывается система. Он приходит к ним через NK модель Кауффмана. У нас есть система с N элементами, принимающими значение 0 или 1, параметром K характеризующим связность (например, максимум связей одного элемента). Суть в том, чтобы показать, что при росте N и K у нас в системе увеличивается количество аттракторов. Заодно там появляется вероятностная характеристика P, которая характеризует bias связей между элементами. Финалом размышлений становится вывод некоторой выпуклой кривой критичности, которая вырисовывается в пространстве N и K, где мы играем с количеством элементов и связей между ними (еще один способ определить количество сервисов и связей между ними).
В общем, для каждого стрессора, который ломает нашу начальную наивную архитектуру, мы придумывает доработку, которая позволяет архитектуре системы пережить наступление этого стрессора. Пробежавшись по всем стрессорам, мы получаем крутую residual architecture для нашей системы.
Дальше автор приводит крутые примеры из дизайна системы для управления зарядными станциями для электромобилей. Ребята учли corner cases, которые бывают с зарядкой электромобилей и это помогло потом упростить решение проблем с людьми, что оставляют заряжать машины на целый день, а также с ребятами, что занимались саботажем. А вообще история прикольная и рекомендую посмотреть ее в оригинале.
Ну и в финале автор рассказывает про составление матриц для описания связей между компонентами системы и факторами стресса. Эти матрицы помогают выявить нефункциональные требования и уязвимости в системе. В этой матрице у нас в строках приведены стрессоры, а в колонках - компоненты системы. В итоге, мы анализируем для каждого стрессора влияет ли он на компонент. Если несколько компонентов подвержены одному стрессору, то вероятно у них есть неявная связь (implicit coupling), с которой хорошо бы разобраться.
В конце автор приводит способ померить крутость нашей residual architecture по сравнению с ее наивной версией. Схема выглядит так, что нам надо подсчитать для каждого стрессора
- Переживает ли наша наивная архитектура его наступление
- Переживает ли его наступление residual architecture
- Из значения успехов для residual architecture вычесть количество успехов для наивной архитектуры, а потом отнормировать на общее количество стрессоров
- Полученное число показывает насколько мы хорошо как архитекторы прокачали нашу начальную архитектуру:)
В общем, все звучит достаточно логично и напоминает мне подход генеративно-состязательных сетей, но только к архитектуре. Дальше я планирую прочитать whitepaper "Residuality Theory, random simulation, and attractor networks" от автора доклада и рассказать про него:)
#DistributedSystems #SystemDesign #Math #Engineering #Architecture #SoftwareArchitecture #ComplexityTheory #Software #Processes
Интересное выступление про residuality theory от Barry O'Reilly, автора теории. Автор делает подход к созданию теории, что поможет инженерам прокачиваться в архитектуру не просто набивая опыт, а используя достижения complexity theory, но без погружения во всю ее сложность. Для этого автор начинает с определения упорядоченных и неупорядоченных систем, а дальше он показывает как стрессоры (неизвестные факторы) могут негативно влиять на архитектуру. С учетом вариативности окружающего мира проанализировать все состояния системы и влияние стрессоров на систему в этом состоянии не представляется возможным. Поэтому автор предлагает рассматривать систему не целиком, а изучать то, что остается от системы, если случается пи... (стрессор X). Эти остатки определяют будущее системы и могут быть использованы для управления архитектурой программного обеспечения. Для моделирования стрессоров нам поможет метод Монте-Карло с его рандомизацией, которую мы можем применить к возможным стрессорам.
Дальше автор вводит рассказывает про аттракторы как устойчивые состояния, в которые скатывается система. Он приходит к ним через NK модель Кауффмана. У нас есть система с N элементами, принимающими значение 0 или 1, параметром K характеризующим связность (например, максимум связей одного элемента). Суть в том, чтобы показать, что при росте N и K у нас в системе увеличивается количество аттракторов. Заодно там появляется вероятностная характеристика P, которая характеризует bias связей между элементами. Финалом размышлений становится вывод некоторой выпуклой кривой критичности, которая вырисовывается в пространстве N и K, где мы играем с количеством элементов и связей между ними (еще один способ определить количество сервисов и связей между ними).
В общем, для каждого стрессора, который ломает нашу начальную наивную архитектуру, мы придумывает доработку, которая позволяет архитектуре системы пережить наступление этого стрессора. Пробежавшись по всем стрессорам, мы получаем крутую residual architecture для нашей системы.
Дальше автор приводит крутые примеры из дизайна системы для управления зарядными станциями для электромобилей. Ребята учли corner cases, которые бывают с зарядкой электромобилей и это помогло потом упростить решение проблем с людьми, что оставляют заряжать машины на целый день, а также с ребятами, что занимались саботажем. А вообще история прикольная и рекомендую посмотреть ее в оригинале.
Ну и в финале автор рассказывает про составление матриц для описания связей между компонентами системы и факторами стресса. Эти матрицы помогают выявить нефункциональные требования и уязвимости в системе. В этой матрице у нас в строках приведены стрессоры, а в колонках - компоненты системы. В итоге, мы анализируем для каждого стрессора влияет ли он на компонент. Если несколько компонентов подвержены одному стрессору, то вероятно у них есть неявная связь (implicit coupling), с которой хорошо бы разобраться.
В конце автор приводит способ померить крутость нашей residual architecture по сравнению с ее наивной версией. Схема выглядит так, что нам надо подсчитать для каждого стрессора
- Переживает ли наша наивная архитектура его наступление
- Переживает ли его наступление residual architecture
- Из значения успехов для residual architecture вычесть количество успехов для наивной архитектуры, а потом отнормировать на общее количество стрессоров
- Полученное число показывает насколько мы хорошо как архитекторы прокачали нашу начальную архитектуру:)
В общем, все звучит достаточно логично и напоминает мне подход генеративно-состязательных сетей, но только к архитектуре. Дальше я планирую прочитать whitepaper "Residuality Theory, random simulation, and attractor networks" от автора доклада и рассказать про него:)
#DistributedSystems #SystemDesign #Math #Engineering #Architecture #SoftwareArchitecture #ComplexityTheory #Software #Processes
YouTube
An Introduction to Residuality Theory - Barry O'Reilly - NDC Oslo 2023
Residuality theory is a revolutionary new theory of software design that aims to make it easier to design software systems for complex business environments. Residuality theory models software systems as interconnected residues - an alternative to component…
👍3
Мен одного бесит, когда чистую архитектуру приравнивают к DDD и наоборот?
Anonymous Poll
45%
Дааааа 👿👺😈
18%
Нет
36%
🤡
Написал свой первый пост в телетайп, потому что превысил ограничение на количество символов
https://teletype.in/@vdprud/book-building-event-driven-microservices
https://teletype.in/@vdprud/book-building-event-driven-microservices
Teletype
«Создание событийно-управляемых микросервисов» Адама Беллемара
tldr: введение в событийно-ориентированную архитектуру (EDA) на основе микросервисов
❤3
И доклад хороший, и пример хороший организации, привлечения для научной группы
👍1
Forwarded from Alexander C
Khoruzhii_Kirill_Short_paths_on_Cayley_graphs.pdf
1.7 MB
📖 Presentation:
👨🔬 Кирилл Хоружий "Введение в методы поиска короткого пути на больших графах"
📹 Video: https://youtu.be/2J3eGGH-uiM?si=9xgHtcCpBj0wKXC0
✔️ Abstract: https://t.iss.one/sberlogabig/451
👨🔬 Кирилл Хоружий "Введение в методы поиска короткого пути на больших графах"
📹 Video: https://youtu.be/2J3eGGH-uiM?si=9xgHtcCpBj0wKXC0
✔️ Abstract: https://t.iss.one/sberlogabig/451
🔥1
Forwarded from Dan Okhlopkov - канал
🏎️ FastHTML = FastAPI + HTMX 💨
Фронт на питоне.
Я ждал, я надеялся.
🔗 Лендос: fastht.ml
🔗 Github: github.com/AnswerDotAI/fasthtml
🔗 Комменты на HN: news.ycombinator.com/item?id=41104305
Мнения?
Фронт на питоне.
Я ждал, я надеялся.
🔗 Лендос: fastht.ml
🔗 Github: github.com/AnswerDotAI/fasthtml
🔗 Комменты на HN: news.ycombinator.com/item?id=41104305
Мнения?
GitHub
GitHub - AnswerDotAI/fasthtml: The fastest way to create an HTML app
The fastest way to create an HTML app. Contribute to AnswerDotAI/fasthtml development by creating an account on GitHub.
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Отличный доклад с PiterPy 2020 про системы типов. Очень понятное введение в теорию с примерами.
Стоит смотреть хотя бы ради этого момента на видео
Стоит смотреть хотя бы ради этого момента на видео
❤2😁1🤯1
Наткнулся на очень хорошую обзорную статью Rust vs. Haskell, благодаря которой поближе познакомился с Haskell. В целом мое первое впечатление от Rust как высокопроизводительном варианте функциональном языке ака Haskell оказался правдивым. Но Rust за свою эффективность заплатил отказом от части фич ML семейства:
Partial field accessors
Благодаря этой возможности в Haskell в конструктор типа-суммы можно передавать аргументы одного из типов, например:
Runtime and concurrency
Rust пошел по пути stackless корутин со всеми любимыми async/await, что нельзя сказать про Haskell с более приятным синтаксисом:
Generators
В Rust толком нет ленивых вычислений, которые могут быть очень полезны для оптимизации памяти. Haskell напротив всегда лениво вычисляется.
Higher-order programming
В Haskell все построено на высоко-уровненных абстракциях как монады, функторы и т.д., которые делают язык более выразительным. Но с другой стороны, это все не бесплатно, а Rust предоставляют достаточную выразительность также
Partial field accessors
Благодаря этой возможности в Haskell в конструктор типа-суммы можно передавать аргументы одного из типов, например:
data Croissant = Plain {price :: Double}
| WithFilling {filling :: String, price :: Double}
let plain = Plain 1.75
-- This is ok and works as expected:
print $ price plain
-- Prints: 1.75
Runtime and concurrency
Rust пошел по пути stackless корутин со всеми любимыми async/await, что нельзя сказать про Haskell с более приятным синтаксисом:
concurrentProgram :: Work -> IO Result
concurrentProgram work = do
results <-
timeout twoSeconds $
mapConcurrently (doWork work) [ServiceA, ServiceB, ServiceC]
pure $ case results of
Just success -> Success success
Nothing -> Timeout
where
twoSeconds = 1000 * 1000
-- Run the program
concurrentProgram someWork
Generators
В Rust толком нет ленивых вычислений, которые могут быть очень полезны для оптимизации памяти. Haskell напротив всегда лениво вычисляется.
Higher-order programming
В Haskell все построено на высоко-уровненных абстракциях как монады, функторы и т.д., которые делают язык более выразительным. Но с другой стороны, это все не бесплатно, а Rust предоставляют достаточную выразительность также
Rust vs. Haskell
Even though Rust and Haskell are quite different languages, they are also surprisingly alike. If you know Rust, you have a head start with Haskell, and vice versa.
✍1🔥1
#balancing_coupling
Дедушки вспоминают пришествие микросервсивов:
Дедушки вспоминают пришествие микросервсивов:
Around 2014, yet another “decoupling salvation” came around — microservices. I even remember a slide saying “microservices is the architecture for decoupling” at some conference
👍1