Python के साथ आर्किटेक्चर पैटर्न समझना
(cosmicpython.com)TDD with Pythonके लेखक Harry और software architect Bob की किताब, जो बताती है कि जटिल software architecture को कैसे समझें और manage करें- इसमें e-commerce कंपनी में वास्तव में इस्तेमाल की गई architecture techniques को व्यवस्थित करके साझा किया गया है
MADE.comयूरोप-आधारित online furniture retail कंपनी है, जो global supply chain चलाती है- लक्ष्य logistics optimization के ज़रिए inventory को न्यूनतम रखना और consumer order के साथ ही logistics arrival को समन्वित करना है
- लेकिन वास्तविक दुनिया जटिल और अप्रत्याशित है, इसलिए इसे प्रतिबिंबित करने वाला intelligent software बनाकर automation किया जा रहा है
- यह किताब ऐसे ही real-world problems को हल करने के लिए बनाए गए architecture patterns पर केंद्रित है
Python क्यों
- Python दुनिया भर में तेज़ी से बढ़ने वाली language है और अब अधिक जटिल enterprise problems को भी tackle कर रही है
- मौजूदा architecture किताबों में ज़्यादातर Java या C# आधारित examples होते हैं, इसलिए Python users के लिए उन तक पहुँचना कठिन होता है
- यह किताब Python community के लिए उपयुक्त तरीके से classic architecture patterns को पेश करती है
TDD, DDD, event-driven architecture का परिचय
- TDD (Test-Driven Development):
- test-first development स्थिर refactoring और feature addition को संभव बनाता है
- तेज़ और dependency-free unit tests को प्राथमिकता देनी चाहिए, और धीमे व अस्थिर end-to-end tests को न्यूनतम रखना चाहिए
- DDD (Domain-Driven Design):
- यह business domain model पर ध्यान देता है, लेकिन infrastructure और framework dependencies को कम रखना महत्वपूर्ण है
- event-driven architecture:
- microservices के बीच message-based communication के ज़रिए जटिलता को manage किया जाता है
- Flask, Django, Celery जैसे मौजूदा Python tools के साथ इसे कैसे integrate किया जाए, इस पर विचार ज़रूरी है
संदर्भ: इस किताब में शामिल अधिकांश patterns monolithic architecture पर भी लागू किए जा सकते हैं
- इस किताब का उद्देश्य Python में TDD, DDD और event-driven services को support करने वाले architecture patterns को परिचित कराना और उनके application methods बताना है
इस किताब के लक्षित पाठक
- ऐसे developers जिन्होंने जटिल Python applications के साथ काम किया है
- architecture patterns या DDD का background knowledge न हो, तब भी ठीक है
- यह इस तरह से बनाई गई है कि TDD की उस शैली से अपरिचित पाठक भी इसे follow कर सकें, जिसमें पहले tests लिखे जाते हैं और फिर implementation किया जाता है
- Flask, SQLAlchemy, pytest, Docker, Redis आदि का उपयोग किया गया है, लेकिन उनका ज्ञान अनिवार्य नहीं है
- लक्ष्य किसी खास technology के बजाय technology-independent architecture design है
सीखने की सामग्री का अवलोकन
Part 1
- domain modeling और DDD (अध्याय 1, 2, 7)
- external dependencies के बिना domain model बनाने का तरीका प्रस्तुत किया गया है
- तेज़ unit tests लिखने के तरीके और data integrity के साथ उनके संबंध पर विचार
- उपयुक्त Aggregate चुनने का तरीका समझाया गया है
- Repository, Service Layer, Unit of Work patterns (अध्याय 2, 4, 5)
- persistence layer को abstract करके model को external dependencies से अलग किया जाता है
- system entry point के रूप में service layer design
- Flask API या CLI जैसे thin entry points बनाने के लिए उपयुक्त
- testing और abstraction पर विचार (अध्याय 3, 5)
- उपयुक्त abstraction layer चुनने के मानदंड और उसकी भूमिका की पड़ताल
- abstraction के उच्च स्तर पर unit tests लिखकर test pyramid हासिल करना
Part 2
- event-driven architecture (अध्याय 8–11)
- Domain Events, Message Bus, Handler patterns का परिचय
- events के माध्यम से system के भीतर interactions trigger किए जाते हैं
- events का उपयोग करके microservices के बीच integration के तरीके समझाए गए हैं
- command और event के बीच अंतर स्पष्ट किया गया है
- पूरी application एक message-processing system में बदल जाती है
- CQRS (Command-Query Responsibility Segregation) (अध्याय 12)
- command और query responsibilities को अलग करके structural efficiency का परिचय
- events के उपयोग और बिना events वाले implementation examples शामिल हैं
- dependency injection (अध्याय 13)
- explicit/implicit dependencies को व्यवस्थित किया गया है
- एक सरल dependency injection framework को implement किया गया है
परिशिष्ट और प्रैक्टिस गाइड
- मौजूदा project में लागू करने के तरीके (epilogue)
- साधारण examples की तुलना में मौजूदा system पर patterns लागू करना अधिक कठिन होता है
- इसके लिए application strategies और reference materials दिए गए हैं
- code practice और GitHub examples
- किताब की पूरी सामग्री को एक example project के रूप में व्यवस्थित किया गया है
- हर अध्याय के लिए GitHub branches में code दिया गया है
- अभ्यास के तरीके:
- example app को खुद बनाते हुए साथ-साथ implement करना
- अपने project में patterns लागू करके देखना
- हर अध्याय के "Exercise for the Reader" का उपयोग करके practice code लिखना
टिप: हर अध्याय की शुरुआत में GitHub की संबंधित branch को checkout करके वास्तविक working code के साथ सीखना अनुशंसित है
2 टिप्पणियां
इसका कोरियाई संस्करण उपलब्ध है पायथन से समझे गए आर्किटेक्चर पैटर्न
Hacker News राय
यह किताब architecture patterns पर एक goldmine जैसी है। मुझे पसंद है कि यह विषय को आसानी से समझने लायक बनाती है
इस किताब के कुछ हिस्से बहुत उपयोगी हैं। खासकर जब यह Python या किसी खास भाषा तक सीमित न रहने वाले concepts को कवर करती है
मैं Python को एक अच्छा glue language मानता हूँ
मैं Typescript developer हूँ, लेकिन यह किताब मेरी पसंदीदा architecture किताबों में से एक है। मैं इसे हमेशा refer करता हूँ
मैंने कुछ साल पहले से Python को पेशेवर रूप से लिखना शुरू किया। मैं Kotlin और TypeScript से आया था, और भाषा approachable लगी, लेकिन loose coupling और testability हासिल करने में कठिनाई हुई
यह सच में शानदार Python programming किताबों में से एक है। बस code में static typing नहीं थी, जो थोड़ा खला, लेकिन यह लेखक का जानबूझकर लिया गया फैसला था
इतने शानदार resource को share करने के लिए धन्यवाद
मैंने इस किताब का paperback 2.5 या 3 साल पहले पढ़ा था। बहुत आनंद आया। यह testing को first-class topic बनाए रखती है और हर addition के साथ लगातार अपडेट करती है
Polylith का कोई ज़िक्र नहीं है। सोच रहा हूँ कि क्या यह relevant है
यह किताब पढ़ने के लिए शानदार थी। 3 साल पहले मैं C#/.NET DDD environment में काम करता था, और अब Python में इन concepts को फिर से देखते हुए इनके essential हिस्सों को और साफ़ तरीके से समझ पा रहा हूँ