Forwarded from SWE notes
Полезная статья про особенности postgresql которые хорошо бы знать...
Для себя выделил несколько интересных моментов один из которых это то, что на каждое соединение pg делает форк процесса, а другой в том что данные первичного ключа и самой таблицы хранятся отдельно.
И то и другое может серьёзно аффектить производительность.
https://medium.com/@rbranson/10-things-i-hate-about-postgresql-20dbab8c2791
#postgresql #database #tips
Для себя выделил несколько интересных моментов один из которых это то, что на каждое соединение pg делает форк процесса, а другой в том что данные первичного ключа и самой таблицы хранятся отдельно.
И то и другое может серьёзно аффектить производительность.
https://medium.com/@rbranson/10-things-i-hate-about-postgresql-20dbab8c2791
#postgresql #database #tips
Medium
10 Things I Hate About PostgreSQL
Over the last few years, the software development community’s love affair with the popular open-source relational database has reached a…
Forwarded from SWE notes
Недавно состоялся релиз TimescaleDB 2.0 (если кто не знает это БД оптимизированная под работу с временными рядами на основе PostgreSQL).
И одна из основных фич этого релиза - это распределенные гипертаблицы. В описании говорится что это такая таблица, которая может хранить данные на нескольких инстансах, но при этом чтение происходит с одного (отдаленно напоминает replica set в mongodb).
#timescaledb #sharding #postgesql
https://github.com/timescale/timescaledb/releases/tag/2.0.0
И одна из основных фич этого релиза - это распределенные гипертаблицы. В описании говорится что это такая таблица, которая может хранить данные на нескольких инстансах, но при этом чтение происходит с одного (отдаленно напоминает replica set в mongodb).
#timescaledb #sharding #postgesql
https://github.com/timescale/timescaledb/releases/tag/2.0.0
GitHub
Release 2.0.0 (2020-12-21) · timescale/timescaledb
With this release, we are officially moving TimescaleDB 2.0 to GA,
concluding several release candidates.
TimescaleDB 2.0 adds the much-anticipated support for distributed
hypertables (multi-node T...
concluding several release candidates.
TimescaleDB 2.0 adds the much-anticipated support for distributed
hypertables (multi-node T...
Forwarded from SWE notes
Более детальное описание работы гипертаблицы
#timescaledb #postgresql #sharding
https://blog.timescale.com/blog/building-a-distributed-time-series-database-on-postgresql/
#timescaledb #postgresql #sharding
https://blog.timescale.com/blog/building-a-distributed-time-series-database-on-postgresql/
Timescale Blog
Building a distributed time-series database on PostgreSQL
Today we are announcing the distributed version of TimescaleDB, which is currently in private beta (public version slated for later this year).
Forwarded from SWE notes
Лонгрид на тему структуры Btree, которая используется для индексов во многих БД
#structure #btree #postgresql
https://erthalion.info/2020/11/28/evolution-of-btree-index-am/
#structure #btree #postgresql
https://erthalion.info/2020/11/28/evolution-of-btree-index-am/
В продолжение статьи "Роль архитектуры в масштабировании команд, DDD и микросервисах"
- https://dckms.github.io/system-architecture/emacsway/it/team-topologies/harlan-mills%27-proposal.html
Превосходство Monolith First заключается в том, что он удешевляет изменение концептуальных контуров, что, зачастую, неизбежно в процессе Crunching Knowledge. На начальной стадии развития проекта обычно не возникает тех предпосылок, в которых может проявить свои превосходства микросервисная архитектура, что делает Monolith First экономически целесообразным.
Но означает ли это то, что Microservices First всегда экономически нецелесообразен? Нет, не означает. И, чтобы понять, когда наступает его экономическая целесообразность, нам нужно обратиться к известной работе Frederick P. Brooks, Jr. "The Mythical Man-Month Essays on Software Engineering Anniversary Edition".
С одной стороны, Monolith First получается дешевле, так как удешевляет эволюционирование Доменной Модели и изменение концептуальных контуров.
С другой стороны, Microservices First (не прямо, а косвенно, посредством концепции Bounded Contexts) позволяет достигнуть такого уровня автономности команд, который позволяет задействовать сразу большое количество разработчиков. Получается дорого, но быстро.
Каждое решение - это баланс выгод и затрат. Быстрота тоже выражается деньгами. Если оверхед от микросервисов перекрывается выгодой от более раннего выхода на рынок - TTM (time-to-market), то Microservices First может оказаться экономически целесообразней.
На одной чаше весов у нас экономия от удешевления эволюционирования системы, что немаловажно в условиях неполноты информированности и высокого уровня неопределенности на начальном этапе создания системы.
На другой чаше весов у нас ущерб упущенной выгоды от более позднего выхода продукта на рынок.
Решение является балансом. Для этого рассматривается график экономии от Monolith First и график ущерба упущенной выгоды от роста TTM.
Там где эти графики пересекаются - возникает точка баланса. Вопрос лежит исключительно в бизнес-плоскости.
Если ущерб упущенной выгоды перевешивает, то применяется Microservices First, иначе - Monolith First.
Зачастую, Monolith First оказывается выгоднее. Но экономическая целесообразность Monolith First может оказаться ниже ущерба упущенной выгоды от роста TTM, и тогда баланс решения качнется в сторону Microservices First. Этот баланс зависит от условий каждого конкретного проекта в отдельности. Серебрянной пули нет.
#DDD #Microservices #SoftwareArchitecture
- https://dckms.github.io/system-architecture/emacsway/it/team-topologies/harlan-mills%27-proposal.html
Превосходство Monolith First заключается в том, что он удешевляет изменение концептуальных контуров, что, зачастую, неизбежно в процессе Crunching Knowledge. На начальной стадии развития проекта обычно не возникает тех предпосылок, в которых может проявить свои превосходства микросервисная архитектура, что делает Monolith First экономически целесообразным.
Но означает ли это то, что Microservices First всегда экономически нецелесообразен? Нет, не означает. И, чтобы понять, когда наступает его экономическая целесообразность, нам нужно обратиться к известной работе Frederick P. Brooks, Jr. "The Mythical Man-Month Essays on Software Engineering Anniversary Edition".
С одной стороны, Monolith First получается дешевле, так как удешевляет эволюционирование Доменной Модели и изменение концептуальных контуров.
С другой стороны, Microservices First (не прямо, а косвенно, посредством концепции Bounded Contexts) позволяет достигнуть такого уровня автономности команд, который позволяет задействовать сразу большое количество разработчиков. Получается дорого, но быстро.
Каждое решение - это баланс выгод и затрат. Быстрота тоже выражается деньгами. Если оверхед от микросервисов перекрывается выгодой от более раннего выхода на рынок - TTM (time-to-market), то Microservices First может оказаться экономически целесообразней.
На одной чаше весов у нас экономия от удешевления эволюционирования системы, что немаловажно в условиях неполноты информированности и высокого уровня неопределенности на начальном этапе создания системы.
На другой чаше весов у нас ущерб упущенной выгоды от более позднего выхода продукта на рынок.
Решение является балансом. Для этого рассматривается график экономии от Monolith First и график ущерба упущенной выгоды от роста TTM.
Там где эти графики пересекаются - возникает точка баланса. Вопрос лежит исключительно в бизнес-плоскости.
Если ущерб упущенной выгоды перевешивает, то применяется Microservices First, иначе - Monolith First.
Зачастую, Monolith First оказывается выгоднее. Но экономическая целесообразность Monolith First может оказаться ниже ущерба упущенной выгоды от роста TTM, и тогда баланс решения качнется в сторону Microservices First. Этот баланс зависит от условий каждого конкретного проекта в отдельности. Серебрянной пули нет.
#DDD #Microservices #SoftwareArchitecture
👍2
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
📝 "The “real place” in software development is the code, which suggests that first-level managers are master programmers who are frequently evaluating the code." - https://less.works/less/principles/systems-thinking.html 📝 "“Место, где происходит реальная…
Когда-то я услышал, что пишущий архитектор - это настолько бессмысленно, абсурдно и невероятно, как "генерал авиации, летающий на боевые".
Недавно мне попалась статья, в которой именно о таком генерале рассказывает прославленный ас Александр Покрышкин:
📝 ""Однажды возле командного пункта я увидел незнакомого летчика, высокого, стройного, в шлемофоне и кожаной куртке. По его внешнему виду и осанке я предположил, что это какой-то большой начальник, и постарался, не попадаясь ему на глаза, пройти в землянку. Но когда я вышел оттуда, он сам меня окликнул: "Покрышкин?" — "Так точно!" — отозвался я, отдавая честь. И только тут заметил на его галифе генеральские лампасы. По каким-то едва уловимым приметам я заключил, что генерал только что возвратился с боевого задания и полет этот прошел не совсем удачно. "Савицкий", — назвал он свою фамилию. Так вот он каков, командир прилетевшего к нам соединения истребителей! Только прибыл на фронт и уже сам побывал в бою".
Как вспоминал Покрышкин, "генерал как-то сразу расположил к себе всех наших летчиков. Я невольно подумал: вот таким и должен быть командир — простым, общительным, умным. Он умеет ценить и людей, и все, что они предлагают во имя победы над врагом".
"Лично летает на боевые задания""
- "Позывной — "Дракон". Как воевал и жил маршал, мечтавший никогда не расставаться с небом"
https://tass.ru/opinions/10342867
P.S.: Перед новым годом, воспользовавшись предпраздничным настроением на работе, массовыми отпусками и спокойной обстановкой, позволил себе попрограммировать пару недель. Теперь мне не стыдно смотреть в глаза Grady Booch, Craig Larman, Gregor Hohpe, Kent Beck, Martin Fowler, Robert C. Martin, и другим сторонникам "пишущих код архитекторов". Получил море удовольствия, и надеюсь изыскать время, чтобы закончить начатую библиотеку в обозримом будущем.
#Career #SoftwareArchitecture
Недавно мне попалась статья, в которой именно о таком генерале рассказывает прославленный ас Александр Покрышкин:
📝 ""Однажды возле командного пункта я увидел незнакомого летчика, высокого, стройного, в шлемофоне и кожаной куртке. По его внешнему виду и осанке я предположил, что это какой-то большой начальник, и постарался, не попадаясь ему на глаза, пройти в землянку. Но когда я вышел оттуда, он сам меня окликнул: "Покрышкин?" — "Так точно!" — отозвался я, отдавая честь. И только тут заметил на его галифе генеральские лампасы. По каким-то едва уловимым приметам я заключил, что генерал только что возвратился с боевого задания и полет этот прошел не совсем удачно. "Савицкий", — назвал он свою фамилию. Так вот он каков, командир прилетевшего к нам соединения истребителей! Только прибыл на фронт и уже сам побывал в бою".
Как вспоминал Покрышкин, "генерал как-то сразу расположил к себе всех наших летчиков. Я невольно подумал: вот таким и должен быть командир — простым, общительным, умным. Он умеет ценить и людей, и все, что они предлагают во имя победы над врагом".
"Лично летает на боевые задания""
- "Позывной — "Дракон". Как воевал и жил маршал, мечтавший никогда не расставаться с небом"
https://tass.ru/opinions/10342867
P.S.: Перед новым годом, воспользовавшись предпраздничным настроением на работе, массовыми отпусками и спокойной обстановкой, позволил себе попрограммировать пару недель. Теперь мне не стыдно смотреть в глаза Grady Booch, Craig Larman, Gregor Hohpe, Kent Beck, Martin Fowler, Robert C. Martin, и другим сторонникам "пишущих код архитекторов". Получил море удовольствия, и надеюсь изыскать время, чтобы закончить начатую библиотеку в обозримом будущем.
#Career #SoftwareArchitecture
ТАСС
Позывной — "Дракон". Как воевал и жил маршал, мечтавший никогда не расставаться с небом
Дмитрий Хазанов рассказывает о советском асе, дважды Герое Советского Союза Евгении Савицком в честь 110-летия со дня его рождения
🔥1
Forwarded from SWE notes
Очень интересная статья насчет конкурентности в Go, которая показывает что он не такой уж и простой язык как пишут многие мануалы.
#golang #concurrency
http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/
#golang #concurrency
http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/
marcio.io
Handling 1 Million Requests per Minute with Go
Forwarded from SWE notes
Интересная статья про работу с древовидными структурами данных в PostgreSQL. Задача такая не редко встречается при работе с различными справочниками.
#postgresql #tree
https://hoverbear.org/blog/postgresql-hierarchical-structures/
#postgresql #tree
https://hoverbear.org/blog/postgresql-hierarchical-structures/
hoverbear.org
Hierarchical Structures in PostgreSQL
Modelling hierarchical/team/categorical/tag data with arbitrary depths.
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
"Architecture Ownership Patterns For Team Topologies. Part 1: A Business Architecture Model" by Nick Tune - https://medium.com/nick-tune-tech-strategy-blog/team-responsibility-ownership-patterns-part-1-a-business-architecture-model-63597c4e60e1 "Architecture…
"Architecture Ownership Patterns for Team Topologies. Part 3: Multi-Team Patterns" by Nick Tune
https://medium.com/nick-tune-tech-strategy-blog/architecture-ownership-patterns-for-team-topologies-part-3-multi-team-patterns-eecc146ddb28
#DDD #Microservices #SoftwareArchitecture
https://medium.com/nick-tune-tech-strategy-blog/architecture-ownership-patterns-for-team-topologies-part-3-multi-team-patterns-eecc146ddb28
#DDD #Microservices #SoftwareArchitecture
Medium
Architecture Ownership Patterns for Team Topologies. Part 3: Multi-Team Patterns
As a system grows, higher-order abstractions are needed for ease of understanding, communication, and management. In Geography, continents…
Последняя статья Kent Beck определенно представляет интерес для всех управленцев. Его рассуждения на тему "A recruiter I met recently said they had eliminated incentive-based bonuses for executives. Performance, much to his surprise, improved."
"Does Pay-For-Performance Perform?" by Kent Beck
https://medium.com/@kentbeck_7670/does-pay-for-performance-perform-64f1d3363e0
#Career #Management
"Does Pay-For-Performance Perform?" by Kent Beck
https://medium.com/@kentbeck_7670/does-pay-for-performance-perform-64f1d3363e0
#Career #Management
Medium
Does Pay-For-Performance Perform?
A recruiter I met recently said they had eliminated incentive-based bonuses for executives. Performance, much to his surprise, improved.
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Добавлены пара новых статей в Patterns of distributed systems: "Consistent Core" https://martinfowler.com/articles/patterns-of-distributed-systems/consistent-core.html "Lease" https://martinfowler.com/articles/patterns-of-distributed-systems/time-bound-lease.html…
"State Watch. Notify clients when specific values change on the server"
https://martinfowler.com/articles/patterns-of-distributed-systems/state-watch.html
#SoftwareArchitecture #DistributedSystems
https://martinfowler.com/articles/patterns-of-distributed-systems/state-watch.html
#SoftwareArchitecture #DistributedSystems
martinfowler.com
State Watch
Notify clients when specific values change on the server
Forwarded from Блог Сергея Баранова
Статейка вышла по итогам моего выступления на TechLeadConf про Event Storming и микросервисы: https://m.habr.com/ru/company/oleg-bunin/blog/537862/
Само видео тут: https://www.youtube.com/watch?v=cG9DVbcPc9M
Само видео тут: https://www.youtube.com/watch?v=cG9DVbcPc9M
Хабр
Моделирование микросервисов с помощью Event storming
Event storming — метод, который смещает акцент у событий с технического на организационный и бизнес уровни и помогает создать устойчивую модульную систему. Он нередко используется в контексте...
Forwarded from SWE notes
Хорошая вводная статья о способах построения аналитических аггрегатах в БД и какие особенности MVCC при этом надо учитывать.
#postgresql #analitycs #db
https://m.habr.com/ru/company/tensor/blog/539016
#postgresql #analitycs #db
https://m.habr.com/ru/company/tensor/blog/539016
Хабр
Агрегаты в БД — зачем, как, а стоит ли?
С течением жизни приложения в его БД накапливается все больше данных. Десктопное оно, SaaS или даже мобильное - неважно, в современном мире почти каждый что-то хранит "у себя". Если это какая-то...
Forwarded from SWE notes
Наткнулся на продолжение данной статьи, но как по мне то, что описано тут является анти-патерном и так делать не надо...
И для таких задач например в том же Clickhouse есть представления, которые автоматом обновляются при вставке в родительскую таблицу...
И да, как по мне, очень большое заблуждение полагать что вам при анализе данных всегда нужен ACID (практически всегда это не так)
#postgresql #analitycs #clickhouse
https://m.habr.com/ru/company/tensor/blog/539638/
И для таких задач например в том же Clickhouse есть представления, которые автоматом обновляются при вставке в родительскую таблицу...
И да, как по мне, очень большое заблуждение полагать что вам при анализе данных всегда нужен ACID (практически всегда это не так)
#postgresql #analitycs #clickhouse
https://m.habr.com/ru/company/tensor/blog/539638/
Хабр
Агрегаты в БД — эффективная обработка потока «фактов»
Предположим, вам надо обработать на PostgreSQL большое (не, не так... БОЛЬШОЕ) количество записей, чтобы посчитать какие-нибудь агрегаты. В предыдущей статье были разобраны различные варианты,...
Новая статья от разработчиков Watermill: "Microservices test architecture. Can you sleep well without end-to-end tests?"
https://threedots.tech/post/microservices-test-architecture/
#DDD #Microservices
https://threedots.tech/post/microservices-test-architecture/
#DDD #Microservices
threedots.tech
Microservices test architecture. Can you sleep well without end-to-end tests?
Can you sleep well without end-to-end tests in your microservices architecture? We share practical insights on building a robust test suite, from unit to component tests, based on our experience in multiple Go projects.
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Статья наглядно показывает, как эффективность команды может быть улучшена более чем на порядок. "Maximizing Developer Effectiveness" by Tim Cochran https://martinfowler.com/articles/developer-effectiveness.html #SoftwareArchitecture #SoftwareDevelopment
Дополнение статьи:
https://martinfowler.com/articles/developer-effectiveness.html#OrganizationalEffectiveness
#SoftwareArchitecture #SoftwareDevelopment
https://martinfowler.com/articles/developer-effectiveness.html#OrganizationalEffectiveness
#SoftwareArchitecture #SoftwareDevelopment
martinfowler.com
Maximizing Developer Effectiveness
To be successful at digital transformation you need to optimize the key feedback loops in your software engineering organization
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
"State Watch. Notify clients when specific values change on the server" https://martinfowler.com/articles/patterns-of-distributed-systems/state-watch.html #SoftwareArchitecture #DistributedSystems
Новая статья в цикле:
"Idempotent Receiver. Identify requests from clients uniquely so they can ignore duplicate requests when client retries"
https://martinfowler.com/articles/patterns-of-distributed-systems/idempotent-receiver.html
#SoftwareArchitecture #DistributedSystems
"Idempotent Receiver. Identify requests from clients uniquely so they can ignore duplicate requests when client retries"
https://martinfowler.com/articles/patterns-of-distributed-systems/idempotent-receiver.html
#SoftwareArchitecture #DistributedSystems
martinfowler.com
Idempotent Receiver
Identify requests from clients uniquely so you can ignore duplicate requests when client retries
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Patterns for Managing Source Code Branches by M.Fowler: https://martinfowler.com/articles/branching-patterns.html #CVS #Git
Пара новых статей:
"Pull Request"
https://martinfowler.com/bliki/PullRequest.html
"Refinement Code Review"
https://martinfowler.com/bliki/RefinementCodeReview.html
#CVS #Git
"Pull Request"
https://martinfowler.com/bliki/PullRequest.html
"Refinement Code Review"
https://martinfowler.com/bliki/RefinementCodeReview.html
#CVS #Git
martinfowler.com
bliki: Pull Request
A mechanism supporting Feature Branching and Pre-Integration Review, at the cost of integration friction