Формирование каталога "Patterns of Distributed Systems" https://martinfowler.com/articles/patterns-of-distributed-systems/ уже завершено.
#DistributedSystems
#DistributedSystems
martinfowler.com
Catalog of Patterns of Distributed Systems
A catalog of patterns to better understand, communicate, and teach the design of distributed systems
Forwarded from @yarosh_log
Модели консистентности
https://jepsen.io/consistency
https://jepsen.io/consistency
Forwarded from @yarosh_log
Список побочки у разных уровней изоляции транзакций MySQL InnoDB и PostgreSQL (oracle, mssql тоже есть)
https://github.com/ept/hermitage
https://github.com/ept/hermitage
GitHub
GitHub - ept/hermitage: What are the differences between the transaction isolation levels in databases? This is a suite of test…
What are the differences between the transaction isolation levels in databases? This is a suite of test cases which differentiate isolation levels. - ept/hermitage
👍1
Forwarded from @yarosh_log
Кажется Cats в Kotlin/Swift портировали, а нет, не кажется.
https://arrow-kt.io/
https://bow-swift.io/
https://arrow-kt.io/
https://bow-swift.io/
arrow-kt.io
The perfect companion for your Kotlin journey
Forwarded from @yarosh_log
Оч советую глянуть книжки underscore.io для общего развития и вообще
https://underscore.io/training/
Essential Scala
Creative Scala
Scala with Cats
The Type Astronaut's Guide to Shapeless Book
https://underscore.io/training/
Essential Scala
Creative Scala
Scala with Cats
The Type Astronaut's Guide to Shapeless Book
underscore.io
Underscore Training Courses and Books
A directory of Underscore's Scala training courses and books.
Forwarded from @yarosh_log
Просто золотой мануал по согласованностям:
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/final-printversion-10-5-14.pdf
#DistributedSystems
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/final-printversion-10-5-14.pdf
#DistributedSystems
Forwarded from ПашМиш
Поделюсь пожалуй своими ссылками по поводу Consistency:
- https://jepsen.io/consistency — общее описание моделей консистентности
- https://www.youtube.com/watch?v=UnAprFMX1d4, https://www.youtube.com/watch?v=2FEaCmdxX9E
- https://github.com/hashicorp/raft — работающая реализация консенсус протокола на Go
- https://www.hashicorp.com/resources/raft-consul-consensus-protocol-explained/ - сказ о том, как она работает
- https://jepsen.io/consistency — общее описание моделей консистентности
- https://www.youtube.com/watch?v=UnAprFMX1d4, https://www.youtube.com/watch?v=2FEaCmdxX9E
- https://github.com/hashicorp/raft — работающая реализация консенсус протокола на Go
- https://www.hashicorp.com/resources/raft-consul-consensus-protocol-explained/ - сказ о том, как она работает
YouTube
Causal consistency: от теории к практике / Михаил Тюленев (MongoDB)
Приглашаем на конференцию Saint HighLoad++ 2025, которая пройдет 23 и 24 июня в Санкт-Петербурге!
Программа, подробности и билеты по ссылке: https://highload.ru/spb/2025
________
HighLoad++ Siberia 2019
Тезисы и презентация:
https://www.highload.ru/s…
Программа, подробности и билеты по ссылке: https://highload.ru/spb/2025
________
HighLoad++ Siberia 2019
Тезисы и презентация:
https://www.highload.ru/s…
Patterns for Managing Source Code Branches by M.Fowler: https://martinfowler.com/articles/branching-patterns.html
#CVS #Git
#CVS #Git
martinfowler.com
Patterns for Managing Source Code Branches
Mainline, Feature Branching, Continuous Integration, Release Branch and a clutch of other handy patterns.
Несколько полезных ссылок по проектированию API:
- https://docs.microsoft.com/en-us/azure/architecture/microservices/design/api-design
- https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-design
- https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-implementation
- https://github.com/Microsoft/api-guidelines
- https://google.aip.dev/general
- https://microservice-api-patterns.org/
- Web API Design - Crafting Interfaces that Developers Love
https://pages.apigee.com/rs/apigee/images/api-design-ebook-2012-03.pdf
UPDATE2: Другие ссылки по этой теме:
https://emacsway.github.io/ru/self-learning-for-software-engineer/#api-design
#API #DDD #Microservices #DistributedSystems
- https://docs.microsoft.com/en-us/azure/architecture/microservices/design/api-design
- https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-design
- https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-implementation
- https://github.com/Microsoft/api-guidelines
- https://google.aip.dev/general
- https://microservice-api-patterns.org/
- Web API Design - Crafting Interfaces that Developers Love
https://pages.apigee.com/rs/apigee/images/api-design-ebook-2012-03.pdf
UPDATE2: Другие ссылки по этой теме:
https://emacsway.github.io/ru/self-learning-for-software-engineer/#api-design
#API #DDD #Microservices #DistributedSystems
Docs
API design - Azure Architecture Center
Learn about good API design in a microservices architecture. APIs should be efficient and have well-defined semantics and versioning schemes.
Прекрасная подборка ссылок по распределенной архитектуре.
Literature references for "Designing Data-Intensive Applications".
This repository accompanies the book Designing Data-Intensive Applications by Martin Kleppmann, published by O'Reilly Media.
https://github.com/ept/ddia-references
#DistributedSystems
Literature references for "Designing Data-Intensive Applications".
This repository accompanies the book Designing Data-Intensive Applications by Martin Kleppmann, published by O'Reilly Media.
https://github.com/ept/ddia-references
#DistributedSystems
GitHub
GitHub - ept/ddia-references: Literature references for “Designing Data-Intensive Applications”
Literature references for “Designing Data-Intensive Applications” - ept/ddia-references
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
На извечную тему Agile and Architecture от статья от Gregor Hohpe (автора EIP): "Agile and Architecture: Friend, not Foe" https://architectelevator.com/transformation/agile_architecture/ #Agile #SoftwareArchitecture
Еще одна статья от Gregor Hohpe (автора EIP) на тему Agile.
"Agile Is the Steering Wheel, Not the Gas Pedal"
https://architectelevator.com/transformation/agile-steering/
#Agile #SoftwareArchitecture
"Agile Is the Steering Wheel, Not the Gas Pedal"
https://architectelevator.com/transformation/agile-steering/
#Agile #SoftwareArchitecture
The Architect Elevator
Agile Is the Steering Wheel, Not the Gas Pedal
Hitting the wall faster is unlikely to do you any good.
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
На извечную тему Agile and Architecture от статья от Gregor Hohpe (автора EIP): "Agile and Architecture: Friend, not Foe" https://architectelevator.com/transformation/agile_architecture/ #Agile #SoftwareArchitecture
В этой своей статье Gregor Hohpe ссылается на интересную статью "Principles for the Agile Architect" by Andrew Johnston
https://www.agilearchitect.org/agile/principles.htm
#Agile #SoftwareArchitecture
https://www.agilearchitect.org/agile/principles.htm
#Agile #SoftwareArchitecture
На широко обсуждаемую статью Uber
"Introducing Domain-Oriented Microservice Architecture"
https://eng.uber.com/microservice-architecture/
Уже отреагировали:
Grady Booch:
- https://twitter.com/Grady_Booch/status/1288246565988048896?s=19
Martin Fowler:
- https://twitter.com/martinfowler/status/1288107614123909120?s=19
Sam Newman:
- https://twitter.com/samnewman/status/1287469517371826176?s=19
- https://twitter.com/samnewman/status/1287475910430646273?s=19
- https://twitter.com/samnewman/status/1288072774083383297?s=19
И другие.
#Microservices #DDD
"Introducing Domain-Oriented Microservice Architecture"
https://eng.uber.com/microservice-architecture/
Уже отреагировали:
Grady Booch:
- https://twitter.com/Grady_Booch/status/1288246565988048896?s=19
Martin Fowler:
- https://twitter.com/martinfowler/status/1288107614123909120?s=19
Sam Newman:
- https://twitter.com/samnewman/status/1287469517371826176?s=19
- https://twitter.com/samnewman/status/1287475910430646273?s=19
- https://twitter.com/samnewman/status/1288072774083383297?s=19
И другие.
#Microservices #DDD
Критически важная статья, проливающая свет на один из наиболее частых и болезненных вопросов в DDD:
"Domain model purity vs. domain model completeness" by Vladimir Khorikov
https://enterprisecraftsmanship.com/posts/domain-model-purity-completeness/
#DDD
"Domain model purity vs. domain model completeness" by Vladimir Khorikov
https://enterprisecraftsmanship.com/posts/domain-model-purity-completeness/
#DDD
Enterprise Craftsmanship
Domain model purity vs. domain model completeness (DDD Trilemma)
I’ve been meaning to write this article for a long time and, finally, here it is: the topic of domain model purity versus domain model completeness.
Возник как-то в большом архитекторском чате вопрос по Agile, и я изложил там свои аргументы, и хочу поделиться ими здесь.
Agile является естественным следствием эволюции итеративной разработки, краткий обзор которой можно посмотреть в превосходной статье Craig Larman https://www.craiglarman.com/wiki/downloads/misc/history-of-iterative-larman-and-basili-ieee-computer.pdf
Лучше всего понимать суть вещей от первоисточника. Пожалуй, наибольшее влияние на Agile оказал Kent Beck. Именно от него нахватался этих идей Robert C. Martin, который в 2001 году организовал встречу группы из числа 17 человек, которые приняли Agile Manifesto.
Kent приводит два графика стоимости изменения кода, по которым может протекать разработка.
Первый график: https://emacsway.github.io/_images/exponential-cost-of-change.png
При таком графике момент принятия решения играет важную роль, так как от этого зависит стоимость его реализации, причем, эта стоимость может возрастать на порядки. Это вынуждает принимать решение в момент наименьшей стоимости реализации, т.е. заблаговременно, т.е. BDUF. Это та самая причина, по которой итеративная разработка до конца 90-х, конечно же, была, но она была экономически нецелесообразной, и поэтому не нашла массовости.
Кое-что произошло в конце 90-х. Много писать не буду, скажу только, что это привело к другому графику, который приводит Kent Beck:
https://emacsway.github.io/_images/asymptotic-cost-of-change.png
При втором графике стоимость реализации уже не так сильно зависит от момента принятия решения. Это позволяет принимать и изменять решения когда программа уже реализована, опираясь на фидбэк от практической эксплуатации решений, реализованных в предыдущих итерациях. С этого момента итеративные разработки начинают становиться массовыми, но, надо заметить, что даже до сегодняшнего дня этот вопрос протекает проблемно, и здесь масло в огонь подлило одно судьбоносное решение Ken Schwaber в Scrum.
Scrum включал в себя набор технических практик, заимствованных из XP, нацеленных на снижение стоимости изменения кода. Но это сдерживало продвижение Scrum в массы, так как вносило организационную сложность. Ken Schwaber хотел форсировать распространение Agile, и убедил Jeff Sutherland «оставить инженерные практики за рамками Scrum, чтобы упростить модель и позволить командам брать на себя ответственность за выбор тех или иных практик» (Henrik Kniberg), четко обозначив Scrum как фреймворк, который разработчики, по своему усмотрению, должны дополнять практиками.
Scrum, действительно, стал распространяться вирусно. Но проблема в том, что на технические практики мало кто обращал должное внимание, что приводило к взлету стоимости изменения кода, при котором Agile уже не обладал экономическим превосходством перед BDUF. Это подмочило репутацию Agile на рынке. По этому поводу есть статья на AgileAlliance (сайт основан подписантами манифеста)
https://www.agilealliance.org/how-to-increase-velocity/
#Agile #ExtremeProgramming
Agile является естественным следствием эволюции итеративной разработки, краткий обзор которой можно посмотреть в превосходной статье Craig Larman https://www.craiglarman.com/wiki/downloads/misc/history-of-iterative-larman-and-basili-ieee-computer.pdf
Лучше всего понимать суть вещей от первоисточника. Пожалуй, наибольшее влияние на Agile оказал Kent Beck. Именно от него нахватался этих идей Robert C. Martin, который в 2001 году организовал встречу группы из числа 17 человек, которые приняли Agile Manifesto.
Kent приводит два графика стоимости изменения кода, по которым может протекать разработка.
Первый график: https://emacsway.github.io/_images/exponential-cost-of-change.png
При таком графике момент принятия решения играет важную роль, так как от этого зависит стоимость его реализации, причем, эта стоимость может возрастать на порядки. Это вынуждает принимать решение в момент наименьшей стоимости реализации, т.е. заблаговременно, т.е. BDUF. Это та самая причина, по которой итеративная разработка до конца 90-х, конечно же, была, но она была экономически нецелесообразной, и поэтому не нашла массовости.
Кое-что произошло в конце 90-х. Много писать не буду, скажу только, что это привело к другому графику, который приводит Kent Beck:
https://emacsway.github.io/_images/asymptotic-cost-of-change.png
При втором графике стоимость реализации уже не так сильно зависит от момента принятия решения. Это позволяет принимать и изменять решения когда программа уже реализована, опираясь на фидбэк от практической эксплуатации решений, реализованных в предыдущих итерациях. С этого момента итеративные разработки начинают становиться массовыми, но, надо заметить, что даже до сегодняшнего дня этот вопрос протекает проблемно, и здесь масло в огонь подлило одно судьбоносное решение Ken Schwaber в Scrum.
Scrum включал в себя набор технических практик, заимствованных из XP, нацеленных на снижение стоимости изменения кода. Но это сдерживало продвижение Scrum в массы, так как вносило организационную сложность. Ken Schwaber хотел форсировать распространение Agile, и убедил Jeff Sutherland «оставить инженерные практики за рамками Scrum, чтобы упростить модель и позволить командам брать на себя ответственность за выбор тех или иных практик» (Henrik Kniberg), четко обозначив Scrum как фреймворк, который разработчики, по своему усмотрению, должны дополнять практиками.
Scrum, действительно, стал распространяться вирусно. Но проблема в том, что на технические практики мало кто обращал должное внимание, что приводило к взлету стоимости изменения кода, при котором Agile уже не обладал экономическим превосходством перед BDUF. Это подмочило репутацию Agile на рынке. По этому поводу есть статья на AgileAlliance (сайт основан подписантами манифеста)
https://www.agilealliance.org/how-to-increase-velocity/
#Agile #ExtremeProgramming
Partitioning Improvements in PostgreSQL 13
https://www.highgo.ca/2020/08/08/partitioning-improvements-in-postgresql-13/
#Database #PostgreSQL #HighLoad #Scaling
https://www.highgo.ca/2020/08/08/partitioning-improvements-in-postgresql-13/
#Database #PostgreSQL #HighLoad #Scaling
www.highgo.ca
Partitioning Improvements in PostgreSQL 13 - Highgo Software Inc.
The table partitioning feature in PostgreSQL has come a long way after the declarative partitioning syntax added to PostgreSQL 10. The partitioning feature in PostgreSQL was first added by PG 8.1 by Simon Rigs, it has based on the concept of table inheritance…
Шпаргалка по выбору типа хранилища данных:
- https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/data-store-comparison
- https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/data-store-decision-tree
Jepsen's analysis over two dozen databases, coordination services, and queues—and we’ve found replica divergence, data loss, stale reads, read skew, lock conflicts, and much more:
- https://jepsen.io/analyses
- https://aphyr.com/tags/jepsen
Рейтинг хранилищ данных:
https://db-engines.com/en/ranking
#Database
- https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/data-store-comparison
- https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/data-store-decision-tree
Jepsen's analysis over two dozen databases, coordination services, and queues—and we’ve found replica divergence, data loss, stale reads, read skew, lock conflicts, and much more:
- https://jepsen.io/analyses
- https://aphyr.com/tags/jepsen
Рейтинг хранилищ данных:
https://db-engines.com/en/ranking
#Database
Docs
Understand data store models - Azure Architecture Center
Learn about the high-level differences between the various data storage models found in Azure data services.
Монументальная статья Bertrand Meyer "OBJECT-ORIENTED VS FUNCTIONAL"
http://se.ethz.ch/~meyer/publications/functional/meyer_functional_oo.pdf
Невозможно не прочитать ее.
#FunctionalProgramming #OOP #SoftwareDesign
http://se.ethz.ch/~meyer/publications/functional/meyer_functional_oo.pdf
Невозможно не прочитать ее.
#FunctionalProgramming #OOP #SoftwareDesign