Architecture Patterns with Python: Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservices
M**K
The Software Engineering Book You Need
Authors: Harry J.W. Percival, Bob GregoryPublisher: O'ReillyPublication Date: 3/5/2020Disclaimer: I am reviewing my own copy of this book because I want to. The publisher did not provide me with a copy. I promise to be 100% honest in how I feel about this book, both the good and the less so.About the BookThis is an introductory software engineering book that gives you more hand-on experience than your typical software engineering course. The authors discuss domain-driven design, test-driven development, the basic concepts of object-oriented programming, and general software architecture. It's broken up into two parts: Building an Architecture to Support Domain Modeling and Event-Driven Architecture, with a bit extra thrown in at the end to fill in some gaps. This is an unofficial follow up to one author's previous book, Test-Driven Design in Python.The first half, on building the architecture, gives you a high level view of your software and about setting it up for success. It starts with an introduction to domain modelling, discusses basic architecture patterns, and gives examples of the Flask API. It finishes with setting up your tests and being ready to add the meat to the bones. The second half, on event-driven architecture, looks at event handling and the message bus that serves of the backbone of your application.Who is This For and Why Was it Written?In the preface, the authors claim that you are an experienced Python developer who has developed applications with at least a moderate amount of complexity, You have realized how difficult this can be, but you don't know much if anything about Domain Driven Design or basic architecture patterns.I would expand this to a slightly wider audience. If you're an advanced undergraduate who has spent their university career working in Python and were not satisfied with your Software Engineering course, this book is for you. If you are about to create your own open source project with even the slightest bit of complexity, this book is for you. If you want to work on or take over an abandoned open source project, this book is for you. There are other people this is for, but I'll end the list here.I would argue that this book fills a gap left by a LOT of software engineering books. First, it gives you a hands-on experience, so long as you follow the code. Second, is discusses patterns that I never learned in my software engineering course. Third, it gives a good introduction to microservices, which are common right now.OrganizationThe first part of the book begins as soon as the introduction ends. Half way through the book, they leave the architecture and look at the code running within that architecture. Then it finishes with a series of appendices that fill in missing bits, expand on important topics, or give alternatives to how the main parts of the book handled this topic. One example is how to use Django rather than Flask to achieve the same results.Within a chapter, there are a page or two that gives you a high level view of the upcoming text. Each chapter comes in at 15-25 pages of clear written prose. Then they finish up with a Wrap-Up (Summary) section where they review what you just read while also giving you a taste of what is to come.Did This Book Succeed?I think that this book does very well. As someone who wants to write their own large program without knowing where to start (like so many of us), I picked up this book at just the right time. It's not going to teach you all of software engineering (which they did not claim to do), nor is it going to teach you Python. This is an intermediate level book who want to expand their developer's toolbox. t was well organized, well written, and very much needed, as one of the few books of its kind.Rating and Final ThoughtsThis is a great book, which earns a 5 out of 5. It's the book I need the most right now, as it will let me step up with my Python development. I very much hope that the authors consider collaborating again for a design pattern book for Python. I would expect it to be as well organized and written.
M**N
Most educational programming book I've ever read
Each chapter builds upon the previous. The example business problem in focus is very easy to grasp. The authors provide such succinct practical examples of how they approach the solution for each problem and why.As a self-taught programmer, this book helped to bring life to many of the architectural patterns that you read about. I've literally spent years reading this book on and off while I live my life. It has been incredibly enjoyable applying the learnings of each chapter to some of my personal side projects.Thanks goes to the authors, Bob and Harry, for writing this book. I have no words to describe how grateful I am to you both for writing down your learnings from your practical professional experience working at Made.com. Thank you.
K**H
The Book That Intermediate Python Programmers Should Read
Designing software has never been a deterministic field. Meaning, when creating an app, there's no one way to do things. Change is always inevitable. That's where the book comes in. It gives a sense of "determinism" to designing large-scale apps. But this book contains one flaw - not related to the content itself - but to the presentation/printing. I just wish that O'Reilly took care in printing the diagrams more. At least, the diagrams should be colored the same as the ebook versions.
W**U
Great book to help improve your design skill
Many python developers may start with a simple idea in mind: python is easy to learn and use. They are right. Compare to many older programming languages, python allows you a quick start to build something useful. However, that also means that a lot of python developers can be less trained on those important programming principles. I have seen many people using python as quick and dirty ways to develop product in a professional environment because they don't know better. I have done similar things too. This book provides a concrete example to guide you on the path to develop a well designed product. In contrast to some programming book, in which high level concept is introduced, this book does it from bottom up. It starts with common design mistakes and correct them through the chapters.This is not a book for python starters. If you haven't had the need to design a product or a python module, or you haven't had the basic understanding of python, you may find this book difficult. In that case, you might want to start with Fluent Python.That been said, if you are a python developer and are asking yourself "what do I do to design a good product", I would strongely recommend this book.
C**Y
Possibly the most impactful python book I've read
As a self-learner, I have read a lot of python books and have learned a ton from them. This book may not only greatly improve the way I write python, but I think it will transform the department I work for and other teams that use python.This book covers topics that aren't touched by most python books, and is an excellent resource to help you develop any python program, especially one that needs to get or save data from a database, interact with HTTP requests, or abstract business procedures.The reason I gave this book so many stars is not only for the topics that needed covering, but also the way they talk about them. The authors discuss the trade offs of the approaches they bring up, which is not done enough in the programming world.The book is easy to read, they have great exercises you can do on your own to pick up the concepts, and you will become a better programmer after absorbing the ideas in this book.
K**
Great guide
Love how it’s in bite sized chunks
I**A
Buena introducción a arquitectura de sw
El libro da una buena introducción a patrones de arquitectura de sw y TDD. No ahonda en los conceptos pero si buscas un entendimiento y uso general de patrones de arquitectura y buenas prácticas este libro es para ti.
H**Y
Helps me to learn difficult concepts by actually doing rather than theorizing
The whole book has a great Xtreme Programming vibe, where I'm sitting down next to the authors , and they are explaining every choice of refactoring and navigating the changes introduced into the system. Why/How things are introduced, why patterns are being put in, taken out, etc.. the tradeoffs, how we shouldn't always apply what is being applied in the current chapter... Each chapter elegantly flows into the next, and has a 'light' narrative of different events happening to the company, and you as the programming team, have to adjust and redesign the system to accommodate.I am a person who can read the entire Vaugn Vernon Red book on DDD, but at the end, not really take away anything 'concrete' in my head. This book is the antidote as it goes through a concrete example of explaining how the real life company 'made.com' operates (Authors work there and ask new colleagues to read this book to get up to date on the codebases' patterns).
M**.
Progammation TDD , DDD, EVM -- Gestion Achats-Vente et transit partiel par un stock
Superbe presentation des etapes necessaires pour programmer en Python III la gestion Achats/Ventes/transit partiel ou entier par un Stock--_---- Toutes etapes logique de la gestion en temp relle y discutee et exposee et presentee en code bien ecrit-->>> La theorie necessaire y est aussi exposee avec une attention particuliere portant sur definition correcte et precises du vocable en usage tres specifique >>> tres utile pour la comprehension de tous les aspects necessaires du processus Achat/Vente|/Stockage -->>> permet de construire un logiciel adapte aux besoins de l'elaboration d'un processus Achat/Vente/\Stockage de petite ----->>>> AbM54vdH
N**S
Um dos livros mais úteis e práticos que já li sobre padrões de arquitetura em Python
Recomendo esse livro fortemente para todos que buscam exemplos práticos de uma aplicação real em Python: mostra vários padrões e soluções arquiteturais para aplicações Web, os autores vão mostrando desde demain modelling até técnicas de microservices, sempre construindo o mesmo aplicativo, mostrando as soluções mais básicas, problemas que vão encontrando e como vão resolvendo. O livro é bem "down to earth" e nao tem medo de usar bibliotecas externas e que todos usam, entao os exemplos usam Flask, Redis, SQLAlchemy, pytest, etc. E os caras são bem honestos, final de cada capitúlo tem os prós e contras das técnicas que eles apresentaram, pra deixar claro que não existe silver-bullet ou uma solução que serve pra todos.Muito muito bom mesmo, acho que ó o livro mais prático de arquitetura que já li.
M**R
Must-read for early in your career
The writing style is approachable and clear and very consice - there is no waffle.The book introduces a moderate number of patterns without disappearing into academia. Everything is throughly grounded in the real world, and you are brought through the material in a way that is hightly relatable.For our own codebase, this book has the highest density of applicability to the problems that my team faces - by a long long way! Much as I like Clean Code and The Pragmatic Programmer, those books leave it to the reader to relate the learning back to their own daily problems. This book makes it so easy to see a path forward in your daily work.You can read this and come out with immediate and concrete actions for your codebase, and arguments you can make in favour of those actions.It is fairly high in code snippets, although they are all short and very comprehensible.This book is an absolute must if you are in a young team that is trying to build its engineering practices. You can give this book to someone who has no concept of patterns and they will get it just as easily as if they had read GoF.Definitely one of my top three books, and I am arguing for my team to use this book in place of writing our own coding guidelines.I think that the book goes a little further than I'd like in the jokey over-approachable "hey look we're nerds here" style, but it isn't enough to annoy. That's literally the only thing I can think to change. It's essentially perfect.Bob, Harry, thank you, you have helped us.
ترست بايلوت
منذ 3 أيام
منذ 3 أسابيع