emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
В свое время я собрал целую библиотеку по управленческой психологии, Decision Making и Soft Skills, читал "Harvard Business Review on Decision Making" by Harvard Business School Press. Практически вся необходимая для IT-архитектора информация по этим вопросам…
Хоть и не ново, но вдруг кто не знал - цикл статей Gregor Hohpe "Thinking Like An Architect":
- https://architectelevator.com/architecture/famous-architects-sketch/
#SoftSkills #Career
- https://architectelevator.com/architecture/famous-architects-sketch/
#SoftSkills #Career
The Architect Elevator
Think Like An Architect, Part 1: Famous Architects Sketch
They let others do the blueprints.
Одной из частых проблем, с которой сталкиваются разработчики ПО на практике, является разрешение противоречия между обобщением кода (функциональности) и владением интерфейсом.
Когда некая функциональность встречается в коде два и более раз, возникает желание устранить дубликаты и обобщить переиспользуемый код. В качестве примера можно привести главу "Layer Supertype" книги "Patterns of Enterprise Application Architecture" by Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, Randy Stafford.
Проблема в том, что у интерфейса не может быть два и более владельца. У клиентов возникает зависимость от сторонней библиотеки, которая будет изменяться в другое время, с другой частотой и по другим причинам. Хорошо, если этой библиотекой владеет та же самая команда, которая её и использует. А если нет? А если она используется слоем самого высокого уровня политики - доменным слоем, как в приведенном выше примере, который, кстати, предлагает такое решение:
📝 "You can place the interface in the client's package (as in the sketch) or in a third package (Figure 18.1). If there's only one client for the implementation, or all the clients are in the same package, then you might as well put the interface in with the client. A good way of thinking about this is that the developers of the client package are responsible for defining the interface. Essentially the client package indicates that it will work with any other package that implements the interface it defines. If you have multiple client packages, a third interface package is better. It's also better if you want to show that the interface definition isn't the responsibility of the client package developers. This would be the case if the developers of the implementation were responsible for it."
И все-таки, можно ли избежать образования зависимости доменного слоя приложения от сторонней библиотеки?
Для выравнивания интерфейсов служит паттерн Adapter. По хорошему, приложение должно локализовать изменения используемого стороннего интерфейса посредством адаптера, интерфейсом которого оно владеет. На практике вряд-ли кто-то будет этим заниматься, и код обрастет зависимостями.
Решением могла бы быть генерация этого самого адаптера сторонней библиотекой. В момент генерации, владение интерфейсом переходит от сторонней библиотеки к её клиенту. Таким образом произошло бы отделение обобщенной функциональности от интерфейса, и противоречие было бы разрешено. К такому же выводу приходит и Sam Newman, при решении аналогичной проблемы:
📝 "If your use of shared code ever leaks outside your service boundary, you have introduced a potential form of coupling. Using common code like logging libraries is fine, as they are internal concepts that are invisible to the outside world. RealEstate.com.au makes use of a tailored service template to help bootstrap new service creation. Rather than make this code shared, the company copies it for every new service to ensure that coupling doesn’t leak in."
-- "Building Microservices. Designing Fine-Grained Systems” 2nd edition by Sam Newman
#SoftwareDesign #DIP #DI
Когда некая функциональность встречается в коде два и более раз, возникает желание устранить дубликаты и обобщить переиспользуемый код. В качестве примера можно привести главу "Layer Supertype" книги "Patterns of Enterprise Application Architecture" by Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, Randy Stafford.
Проблема в том, что у интерфейса не может быть два и более владельца. У клиентов возникает зависимость от сторонней библиотеки, которая будет изменяться в другое время, с другой частотой и по другим причинам. Хорошо, если этой библиотекой владеет та же самая команда, которая её и использует. А если нет? А если она используется слоем самого высокого уровня политики - доменным слоем, как в приведенном выше примере, который, кстати, предлагает такое решение:
📝 "You can place the interface in the client's package (as in the sketch) or in a third package (Figure 18.1). If there's only one client for the implementation, or all the clients are in the same package, then you might as well put the interface in with the client. A good way of thinking about this is that the developers of the client package are responsible for defining the interface. Essentially the client package indicates that it will work with any other package that implements the interface it defines. If you have multiple client packages, a third interface package is better. It's also better if you want to show that the interface definition isn't the responsibility of the client package developers. This would be the case if the developers of the implementation were responsible for it."
И все-таки, можно ли избежать образования зависимости доменного слоя приложения от сторонней библиотеки?
Для выравнивания интерфейсов служит паттерн Adapter. По хорошему, приложение должно локализовать изменения используемого стороннего интерфейса посредством адаптера, интерфейсом которого оно владеет. На практике вряд-ли кто-то будет этим заниматься, и код обрастет зависимостями.
Решением могла бы быть генерация этого самого адаптера сторонней библиотекой. В момент генерации, владение интерфейсом переходит от сторонней библиотеки к её клиенту. Таким образом произошло бы отделение обобщенной функциональности от интерфейса, и противоречие было бы разрешено. К такому же выводу приходит и Sam Newman, при решении аналогичной проблемы:
📝 "If your use of shared code ever leaks outside your service boundary, you have introduced a potential form of coupling. Using common code like logging libraries is fine, as they are internal concepts that are invisible to the outside world. RealEstate.com.au makes use of a tailored service template to help bootstrap new service creation. Rather than make this code shared, the company copies it for every new service to ensure that coupling doesn’t leak in."
-- "Building Microservices. Designing Fine-Grained Systems” 2nd edition by Sam Newman
#SoftwareDesign #DIP #DI
Forwarded from THINGS PROGRAMMERS DO
This media is not supported in your browser
VIEW IN TELEGRAM
Стажер показывает свой код.
"Splitting a Domain Across Multiple Bounded Contexts: How designing for business opportunities and the rate of change may give you better contexts."
Published on 14 June 2021 by Mathias Verraes and Rebecca Wirfs-Brock
https://verraes.net/2021/06/split-domain-across-bounded-contexts/
#DDD #Microservices
Published on 14 June 2021 by Mathias Verraes and Rebecca Wirfs-Brock
https://verraes.net/2021/06/split-domain-across-bounded-contexts/
#DDD #Microservices
Mathias Verraes' Blog
Splitting a Domain Across Multiple Bounded Contexts
How designing for business opportunities and the rate of change may give you better contexts.
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
И еще одна очень крутая книга попала в мое поле зрения на тему Soft Skills, от известного автора в области психологии, системного мышления и антропологии разработки программного обеспечения, на работы которого ссылаются в своих книгах такие светила, как Kent…
Alexander Polomodov (Director of digital ecosystem development department at Tinkoff), опубликовал на днях пост по системному мышлению:
"Обзор “Азбуки системного мышления”" за авторством Донелла Медоуз
https://apolomodov.medium.com/review-azbuka-sistemnogo-myishleniya-3016221d47fa
#Management #Career #SoftSkills
"Обзор “Азбуки системного мышления”" за авторством Донелла Медоуз
https://apolomodov.medium.com/review-azbuka-sistemnogo-myishleniya-3016221d47fa
#Management #Career #SoftSkills
Medium
Обзор “Азбуки системного мышления”
Недавно я с большим удовольствием прочитал “Азбуку системного мышления” за авторством Донелла Медоуз. В книге дается краткое, но наглядное…
"New book: Code That Fits in Your Head" by Mark Seemann
https://blog.ploeh.dk/2021/06/14/new-book-code-that-fits-in-your-head/
#SoftwareDesign
https://blog.ploeh.dk/2021/06/14/new-book-code-that-fits-in-your-head/
#SoftwareDesign
ploeh blog
New book: Code That Fits in Your Head
The expanded universe.
"Should You Re-Estimate Unfinished Stories?" by Mike Cohn
https://www.mountaingoatsoftware.com/blog/should-you-re-estimate-unfinished-stories
#Agile
https://www.mountaingoatsoftware.com/blog/should-you-re-estimate-unfinished-stories
#Agile
Mountain Goat Software
Backlog Item Not Done at Sprint’s End? What to Do Next
When a team’s half-done, should they re-estimate the unfinished work? Seems harmless, but here's why it’s a trap..
Удачная демонстрация Культа Карго 👇
Forwarded from THINGS PROGRAMMERS DO
This media is not supported in your browser
VIEW IN TELEGRAM
Следую шагам, описанным в документации.
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Новая статья в цикле: "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…
"Gossip Dissemination" добавлен в "Patterns of Distributed Systems"
- https://martinfowler.com/articles/patterns-of-distributed-systems/
Пара реализаций на Golang, которые я смотрел несколько недель назад:
- https://github.com/hashicorp/memberlist
- https://github.com/libopenstorage/gossip
#DistributedSystems #SoftwareArchitecture
- https://martinfowler.com/articles/patterns-of-distributed-systems/
Пара реализаций на Golang, которые я смотрел несколько недель назад:
- https://github.com/hashicorp/memberlist
- https://github.com/libopenstorage/gossip
#DistributedSystems #SoftwareArchitecture
martinfowler.com
Catalog of Patterns of Distributed Systems
A catalog of patterns to better understand, communicate, and teach the design of distributed systems
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Похоже, что DDD пользуется в Golang растущей популярностью: 📝 "It's 20 days after our e-book was released and it almost hit 1500 downloads today." https://twitter.com/roblaszczak/status/1382697162375622662?s=09 https://threedots.tech/go-with-the-domain/…
"Software Dark Ages" by Robert Laszczak - философско-мотивационная статья о DDD в Golang от разработчиков Watermill.
https://threedots.tech/post/software-dark-ages/
#DDD #Golang #SoftwareDesign #SoftwareArchitecture
https://threedots.tech/post/software-dark-ages/
#DDD #Golang #SoftwareDesign #SoftwareArchitecture
threedots.tech
Software Dark Ages
Are you struggling with complex codebases and slow development cycles? We have been there too. In this article, we reveal how Domain-Driven Design strategic patterns helped us overcome the Software Dark Ages in multiple projects. Learn practical ways to boost…
Возможно, эта ссылка кому-нибудь окажется полезной: https://martinfowler.com/bliki/DecreedStories.html
Не самое исчерпывающее разъяснение, но зато кратко, метко и авторитетно.
#Agile
Не самое исчерпывающее разъяснение, но зато кратко, метко и авторитетно.
#Agile
martinfowler.com
bliki: Decreed Stories
a bliki entry for Decreed Stories
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Мое изучение систем управления знаниями переросло в мини-проект: - https://github.com/emacsway/dckms-template Он возник потому, что сегодня мы много пишем там, где не ищем, и ищем там, где стали писать мало. Я, в этом отношении, не являюсь исключением. Преследовалась…
Evernote выпустил официальный клиент под Linux:
https://help.evernote.com/hc/en-us/articles/208313748-Evernote-for-Linux
А Obsidian выпустил мобильный клиент:
https://help.obsidian.md/Obsidian/Mobile+app+beta
#Career #SoftSkills
https://help.evernote.com/hc/en-us/articles/208313748-Evernote-for-Linux
А Obsidian выпустил мобильный клиент:
https://help.obsidian.md/Obsidian/Mobile+app+beta
#Career #SoftSkills
Evernote Help & Learning
Evernote for Linux
Evernote for Linux is currently in private beta. To get early access to Evernote features and test new functionality, learn how to join the Early Access Program at evernote.com/earlyaccess.
Keywor...
Keywor...
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
"Domain, Subdomain, Bounded Context, Problem/Solution Space in DDD: Clearly Defined" by Nick Tune https://medium.com/nick-tune-tech-strategy-blog/domains-subdomain-problem-solution-space-in-ddd-clearly-defined-e0b49c7b586c #DDD #Microservices
"What is a Domain?" by Nick Tune
https://medium.com/nick-tune-tech-strategy-blog/what-is-a-domain-99f658b22d7d
#DDD #SoftwareDesign #SoftwareArchitecture
https://medium.com/nick-tune-tech-strategy-blog/what-is-a-domain-99f658b22d7d
#DDD #SoftwareDesign #SoftwareArchitecture
Medium
What is a Domain?
In business, technology and general, the word “domain” appears frequently and with many different meanings in various contexts. This gets…
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Бегло просмотрел книгу: "Team Topologies: Organizing Business and Technology Teams for Fast Flow" by Matthew Skelton https://www.goodreads.com/book/show/44135420-team-topologies , и оказался впечатлен. Книга хорошо раскрывает тему, которую я рассматривал…
Alexander Polomodov (Director of digital ecosystem development department at Tinkoff), опубликовал сегодня пост с обзором книги "Team Topologies: Organizing Business and Technology Teams for Fast Flow" by Matthew Skelton, Manuel Pais:
"Обзор книги “Топологии команд” (“Team Topologies”) — Часть I"
https://apolomodov.medium.com/review-team-topologies-part-1-205533a027c0
"Обзор книги “Топологии команд” (“Team Topologies”) — Часть II"
- https://apolomodov.medium.com/review-team-topologies-part-2-2fd21c25f2fd?source=rss-b687aae72973------2
"Обзор книги “Топологии команд” (“Team Topologies”) — Часть III"
- https://apolomodov.medium.com/review-team-topologies-part-3-552f8a010492?source=rss-b687aae72973------2
Еще один обзор этой книги:
- https://yoan-thirion.gitbook.io/knowledge-base/xtrem-reading/resources/book-notes/team-topologies
#Management #Agile #SoftwareArchitecture
"Обзор книги “Топологии команд” (“Team Topologies”) — Часть I"
https://apolomodov.medium.com/review-team-topologies-part-1-205533a027c0
"Обзор книги “Топологии команд” (“Team Topologies”) — Часть II"
- https://apolomodov.medium.com/review-team-topologies-part-2-2fd21c25f2fd?source=rss-b687aae72973------2
"Обзор книги “Топологии команд” (“Team Topologies”) — Часть III"
- https://apolomodov.medium.com/review-team-topologies-part-3-552f8a010492?source=rss-b687aae72973------2
Еще один обзор этой книги:
- https://yoan-thirion.gitbook.io/knowledge-base/xtrem-reading/resources/book-notes/team-topologies
#Management #Agile #SoftwareArchitecture
Medium
Обзор книги “Топологии команд” (“Team Topologies”) — Часть I
Недавно вышла интересная книга Team Topologies, которая предлагает использовать Team-First подход при проектировании архитектуры…
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Alexander Polomodov (Director of digital ecosystem development department at Tinkoff), опубликовал сегодня пост с обзором книги "Team Topologies: Organizing Business and Technology Teams for Fast Flow" by Matthew Skelton, Manuel Pais: "Обзор книги “Топологии…
Pdf-версия обзора книги Team Topologies в виде шпаргалки от Yoan Thirion
- https://t.co/mCHn4KhpZl?amp=1
Thanks to @adzeitor
#Management #Agile #SoftwareArchitecture
- https://t.co/mCHn4KhpZl?amp=1
Thanks to @adzeitor
#Management #Agile #SoftwareArchitecture
Forwarded from Архитектура ИТ-решений
Выложил интервью с Андреем Гордиенковым, победителем Architectural Kata by O'Reilly Oct-Dec 2020 https://youtu.be/5lxS2Kpc26Q
YouTube
Architectural Kata by O'Reilly - интервью с Андреем Гордиенковым
Интервью с Андреем Гордиенковым, победителем Architectural Kata by O'Reilly Oct-Dec 2020
Разбор другого здания Architectural Kata by O'Reilly, April - May 2021 здесь https://youtu.be/kN7XNp9Feio?t=54
Обсуждение в telegram-канале https://news.1rj.ru/str/it_arch
Курсы…
Разбор другого здания Architectural Kata by O'Reilly, April - May 2021 здесь https://youtu.be/kN7XNp9Feio?t=54
Обсуждение в telegram-канале https://news.1rj.ru/str/it_arch
Курсы…
InfoQ: The Software Architects' Newsletter, June 2021
- https://assets.infoq.com/newsletter/architect/en/newsletter_sample/47Architects_NL_June2021.html
AsyncAPI продолжает укреплять свои позиции.
А Nginx опубликовал в свободном доступе Ebook "Designing and Deploying Microservices" - краткий справочный гайд по микросервисам всего на 80 страниц:
- https://www.nginx.com/resources/library/designing-deploying-microservices/
#SoftwareArchitecture #Microservices #DDD #SoftwareDesign
- https://assets.infoq.com/newsletter/architect/en/newsletter_sample/47Architects_NL_June2021.html
AsyncAPI продолжает укреплять свои позиции.
А Nginx опубликовал в свободном доступе Ebook "Designing and Deploying Microservices" - краткий справочный гайд по микросервисам всего на 80 страниц:
- https://www.nginx.com/resources/library/designing-deploying-microservices/
#SoftwareArchitecture #Microservices #DDD #SoftwareDesign
F5, Inc.
Best Practices for Configuring Microservices Apps
As you move into microservices, you can adapt guidelines from the twelve-factor app as best practices for configuration files, databases, and service discovery.
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Обзор книги "What Is Domain-Driven Design?" by Vladik Khononov ( @vladik_kh ) Книга: https://www.oreilly.com/library/view/what-is-domain-driven/9781492057802/ Обзор: https://apolomodov.medium.com/%D0%BE%D0%B1%D0%B7%D0%BE%D1%80-%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8…
Vladik Khononov раскрыл название своей новой книги:
📝 "I'm extremely honored to write a book for @VaughnVernon signature series: "Balancing Coupling in Software Design"
The book combines the history of software engineering, physics, statistics, biology, and industrial engineering to derive simple rules for designing modular software." https://t.co/tbaPfUlzEB
https://twitter.com/vladikk/status/1408049808770748419?s=20
#DDD #Microservices #SoftwareDesign #SofwareArchitecture
📝 "I'm extremely honored to write a book for @VaughnVernon signature series: "Balancing Coupling in Software Design"
The book combines the history of software engineering, physics, statistics, biology, and industrial engineering to derive simple rules for designing modular software." https://t.co/tbaPfUlzEB
https://twitter.com/vladikk/status/1408049808770748419?s=20
#DDD #Microservices #SoftwareDesign #SofwareArchitecture
Twitter
Vladik Khononov
I'm extremely honored to write a book for @VaughnVernon signature series: "Balancing Coupling in Software Design" The book combines the history of software engineering, physics, statistics, biology, and industrial engineering to derive simple rules for designing…
Список литературы от Максима Аршинова:
"Книги, которые повлияли на меня как на разработчика и управленца"
- https://habr.com/ru/company/oleg-bunin/blog/562854/
#Management #Agile #Career #SoftwareDesign #SoftwareArchitecture
"Книги, которые повлияли на меня как на разработчика и управленца"
- https://habr.com/ru/company/oleg-bunin/blog/562854/
#Management #Agile #Career #SoftwareDesign #SoftwareArchitecture
Хабр
Книги, которые повлияли на меня как на разработчика и управленца
Общаться в профессиональной среде, ходить на конференции и митапы, просто посидеть вечерком в приятном баре с профессионалом высокого уровня и обсудить какие-то...
Превосходный перевод доклада Scott Wlaschin о композиции в Функциональном Программировании:
"Сила композиции"
- https://habr.com/ru/company/jugru/blog/553028/
#FunctionalProgramming
"Сила композиции"
- https://habr.com/ru/company/jugru/blog/553028/
#FunctionalProgramming
Хабр
Сила композиции
Функциональное программирование может отпугивать сложностью и непрактичностью: «Я далек от всех этих монад, пишу на обычном C#, в докладе про функциональщину ничего не пойму. А если даже напрягусь и...