Прочитал и разобрал на молекулы книгу Building Microservices, 2nd Edition - Sam Newman
Автор 12 лет работал в компании ThoughtWorks. Да-да, это та самая ThoughtWorks, в которой работает Martin Fowler
Под катом:
- для кого и чем она полезна;
- полезные артефакты: Mind Map конспекта и ссылка на мой Solution Architect Framework, который я разработал после прочтения книги;
- список материалов для дальнейшего изучения.
Для кого и чем полезна
Книга в первую очередь про построение распределенных систем на базе микросервисной архитектуры. В ней не расскажут про монолит или распределенный монолит, хотя это вполне себе валидные подходы. Про них следует читать в других книжках.
Эта книга будет полезна в первую очередь Software Engineers в следующих сценариях:
- В вашем проекте нет Solution Architect и вы сами отвечаете за архитектуру. После вдумчивого прочтения вы сможете самостоятельно принимать некоторые архитектурные решения. Не все, одной этой книги недостаточно.
- В вашем проекте есть Solution Architect и вы хотите стать Solution Architect в будущем. Тут все понятно: читаете книгу и внимательно наблюдаете за своим SA, задаете ему вопросы, чётче понимаете, что и почему делается на практике.
- Вы знаете некоторые описанные в книге концепции — изучали их по частям и теперь хотите систематизировать знания.
Полезные артефакты
Книга на 589 страниц, материал непростой. Даже не пытайтесь осознать всё за одни выходные. Я сам читал очень вдумчиво и не торопился. Некоторые разделы перечитывал по нескольку раз. Изучал материалы, на которые ссылается автор.
В итоге, всё получилось в несколько заходов:
- В первый раз читал и сразу составлял текстовый конспект со своими мыслями и комментариями. Выкладывать не буду, уж сильно большой.
- Потом перечитал конспект и составил по нему Mind Map с ключевыми концепциями:
- Далее, по Mind Map разработал собственный Solution Architect Framework, который буду использовать в работе и постепенно развивать.
Полезные ссылки и материалы для дальнейшего изучения
- ✅
Nicole Forsgren, Dustin Smith, Jez Humble, and Jessie Frazelle, Accelerate: State of DevOps 2019. - Nicole Forsgren, Jez Humble, and Gene Kim, Accelerate: The Science of Building and Scaling High Performing Technology Organizations (Portland, OR: IT Revolution, 2018).
- ✅
Matthew Skelton and Manuel Pais, Team Topologies (Portland, OR: IT Revolution, 2019).
- Pete Hodgson, “Feature Toggles (aka Feature Flags),” martinfowler.com, October 9, 2017.
- Richardson Maturity Model.
- Consumer-Driven Contracts: A Service Evolution Pattern.
- CodeOwnership, Martin Fowler.
- “Feature Toggles (aka Feature Flags)”.
- Pramod J. Sadalage and Martin Fowler, NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence (Upper Saddle River, NJ: Addison-Wesley 2012).
- Martin Fowler, TestDouble.
- Martin Fowler, “Eradicating Non-Determinism in Tests,” martinfowler.com, April 14, 2011.
- Ham Vocke, “The Practical Test Pyramid,” martinfowler.com, February 26, 2018
- Cam Jackson, “Micro Frontends,” martinfowler.com, June 19, 2019.
- Martin Fowler, article “Who Needs an Architect?”.
- Alistair Cockburn, “Hexagonal Architecture,” January 4, 2005
- For an in-depth introduction to domain-driven design, see Domain-Driven Design by Eric Evans (Addison-Wesley)—or for a more condensed overview, see Domain-Driven Design Distilled by Vaughn Vernon (Addison-Wesley).
- Deconstructing the Monolith (Shopify Unite Track 2019)
- Don’t Touch My Code! Examining the Effects of Ownership on Software Quality (another link)
- Distributed Systems Observability by Cindy Sridharan (O’Reilly)
- Maarten van Steen and Andrew S. Tanenbaum, Distributed Systems, 3rd ed
- Gregor Hohpe and Bobby Woolf, Enterprise Integration Patterns (Boston: Addison-Wesley, 2003).
- Protolock
- REST in Practice: Hypermedia and Systems Architecture (O’Reilly) by Jim Webber, Savas Parastatidis, and Ian Robinson
- Designing Event-Driven Systems (O’Reilly) by Ben Stopford
- Kafka: The Definitive Guide (O’Reilly) by Neha Narkhede, Gwen Shapira, and Todd Palino.
- Alanna Brown, Nicole Forsgren, Jez Humble, Nigel Kersten, and Gene Kim, 2016 State of DevOps Report, https://www.puppet.com/resources/history-of-devops-reports.
- Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation (Upper Saddle River, NJ: Addison-Wesley, 2010).
- Why Google Stores Billions of Lines of Code in a Single Repository
- Kief Morris, Infrastructure as Code, 2nd edition (Sebastopol: O’Reilly, 2020).
- Sam Newman, Monolith to Microservices (Sebastopol: O’Reilly, 2019).
- Google Uncloaks Once-Secret Server
- Kripa Krishnan, “Weathering the Unexpected,” acmqueue 10, no. 9 (2012)
- Russ Miles, Learning Chaos Engineering (Sebastopol: O’Reilly, 2019)
- The Chaos Engineering toolkit for Developers
- Martin L. Abbott and Michael T. Fisher, The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise, 2nd ed. (New York: Addison-Wesley, 2015).
- Lisa Crispin and Janet Gregory, Agile Testing: A Practical Guide for Testers and Agile Teams, © 2009, PDF
- Mike Cohn, Succeeding with Agile (Upper Saddle River, NJ: Addison-Wesley, 2009).
- Steven Shorrock, “Alarm Design: From Nuclear Power to WebOps” Humanistic Systems (blog), October 16, 2015
- Ben Sigelman, “Three Pillars with Zero Answers—Towards a New Scorecard for Observability” Lightstep (blog post), December 5, 2018
- Charity Majors, Liz Fong-Jones, and George Miranda, Observability Engineering (Sebastopol: O’Reilly, 2022).
- Betsy Beyer et al., eds., Site Reliability Engineering: How Google Runs Production Systems (Sebastopol: O’Reilly, 2016).
- Betsy Beyer et al., eds., The Site Reliability Workbook (Sebastopol: O’Reilly, 2018).
- Adam Shostack, Threat Modeling: Designing for Security (Indianapolis: Wiley, 2014).
- Agile Application Security by Laura Bell, Michael Brunton-Spall, Rich Smith, Jim Bird Released September 2017
- “Modeling Long-Running Activities as Nested Sagas” Data Engineering 14, no. 1 (March 1991: 14–18)
- Bernd Ruecker, Practical Process Automation (Sebastopol: O’Reilly, 2021).
- Nachiappan Nagappan, Brendan Murphy, and Victor Basili, “The Influence of Organizational Structure on Software Quality: An Empirical Case Study” ICSE ’08: Proceedings of the 30th International Conference on Software Engineering (New York: ACM, 2008).
- Daniel Rodriguez et al., “Empirical Findings on Team Size and Productivity in Software Development,” Journal of Systems and Software 85, no. 3 (2012), doi.org/10.1016/j.jss.2011.09.009.
- Frederick P. Brooks Jr, The Mythical Man-Month: Essays on Software Engineering, Anniversary ed. (Boston: Addison-Wesley, 1995).
- John Rossman, Think Like Amazon: 50 1/2 Ideas to Become a Digital Leader (New York: McGraw-Hill, 2019).
- Emily Webber, Building Successful Communities of Practice (San Francisco: Blurb, 2016).
- James Lewis, “Scale, Microservices and Flow,” YOW! Conferences, February 10, 2020, YouTube video, 51:03,
- Neal Ford, Rebecca Parsons, and Patrick Kua, Building Evolutionary Architectures (Sebastopol: O’Reilly, 2017)
- Gregor Hohpe, The Software Architect Elevator (Sebastopol: O’Reilly, 2020).