Software architecture with Python :: design and architect highly scalable, robust, clean, and high performance applications in Python /
Architect and design highly scalable, robust, clean, and highly performant applications in Python About This Book Identify design issues and make the necessary adjustments to achieve improved performance Understand practical architectural quality attributes from the perspective of a practicing engin...
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Elektronisch E-Book |
Sprache: | English |
Veröffentlicht: |
Birmingham, UK :
Packt Publishing,
2017.
|
Schlagworte: | |
Online-Zugang: | Volltext |
Zusammenfassung: | Architect and design highly scalable, robust, clean, and highly performant applications in Python About This Book Identify design issues and make the necessary adjustments to achieve improved performance Understand practical architectural quality attributes from the perspective of a practicing engineer and architect using Python Gain knowledge of architectural principles and how they can be used to provide accountability and rationale for architectural decisions Who This Book Is For This book is for experienced Python developers who are aspiring to become the architects of enterprise-grade applications or software architects who would like to leverage Python to create effective blueprints of applications. What You Will Learn Build programs with the right architectural attributes Use Enterprise Architectural Patterns to solve scalable problems on the Web Understand design patterns from a Python perspective Optimize the performance testing tools in Python Deploy code in remote environments or on the Cloud using Python Secure architecture applications in Python In Detail This book starts off by explaining how Python fits into an application architecture. As you move along, you will understand the architecturally significant demands and how to determine them. Later, you'll get a complete understanding of the different architectural quality requirements that help an architect to build a product that satisfies business needs, such as maintainability/reusability, testability, scalability, performance, usability, and security. You will use various techniques such as incorporating DevOps, Continuous Integration, and more to make your application robust. You will understand when and when not to use object orientation in your applications. You will be able to think of the future and design applications that can scale proportionally to the growing business. The focus is on building the business logic based on the business process documentation and which frameworks are to be used when. We also cover some important patterns that are to be taken into account while solving design problems as well as those in relatively new domains such as the Cloud. This book will help you understand the ins and outs of Python so that you can make those critical design decisions that not just live up to but also surpass the expectations of your clients. Style and approach Filled with examples and use cases, this guide takes a no-nonsense approach to help you with everything it takes to become a successful software architect. |
Beschreibung: | Includes index. |
Beschreibung: | 1 online resource (1 volume) : illustrations |
ISBN: | 9781786467225 1786467224 |
Internformat
MARC
LEADER | 00000cam a2200000 i 4500 | ||
---|---|---|---|
001 | ZDB-4-EBA-ocn988029372 | ||
003 | OCoLC | ||
005 | 20241004212047.0 | ||
006 | m o d | ||
007 | cr unu|||||||| | ||
008 | 170525s2017 enka o 001 0 eng d | ||
040 | |a UMI |b eng |e rda |e pn |c UMI |d IDEBK |d TEFOD |d OCLCF |d OCLCQ |d COO |d UOK |d CEF |d KSU |d N$T |d UKMGB |d WYU |d LVT |d C6I |d UAB |d UKAHL |d OCLCO |d NZAUC |d OCLCQ |d OCLCO |d OCLCQ |d OCLCL |d DXU | ||
015 | |a GBB795194 |2 bnb | ||
016 | 7 | |a 018354692 |2 Uk | |
020 | |a 9781786467225 |q (electronic bk.) | ||
020 | |a 1786467224 |q (electronic bk.) | ||
020 | |z 9781786468529 | ||
035 | |a (OCoLC)988029372 | ||
037 | |a CL0500000862 |b Safari Books Online | ||
037 | |a F265FDBA-7692-40F4-B743-DED6B6D1B8DC |b OverDrive, Inc. |n http://www.overdrive.com | ||
050 | 4 | |a QA76.76.D47 | |
072 | 7 | |a COM |x 051360 |2 bisacsh | |
082 | 7 | |a 005.133 |2 23 | |
049 | |a MAIN | ||
100 | 1 | |a Pillai, Anand Balachandran, |e author. | |
245 | 1 | 0 | |a Software architecture with Python : |b design and architect highly scalable, robust, clean, and high performance applications in Python / |c Anand Balachandran Pillai. |
264 | 1 | |a Birmingham, UK : |b Packt Publishing, |c 2017. | |
300 | |a 1 online resource (1 volume) : |b illustrations | ||
336 | |a text |b txt |2 rdacontent | ||
337 | |a computer |b c |2 rdamedia | ||
338 | |a online resource |b cr |2 rdacarrier | ||
588 | 0 | |a Online resource; title from PDF title page (EBSCO, viewed September 24, 2018) | |
500 | |a Includes index. | ||
520 | 8 | |a Architect and design highly scalable, robust, clean, and highly performant applications in Python About This Book Identify design issues and make the necessary adjustments to achieve improved performance Understand practical architectural quality attributes from the perspective of a practicing engineer and architect using Python Gain knowledge of architectural principles and how they can be used to provide accountability and rationale for architectural decisions Who This Book Is For This book is for experienced Python developers who are aspiring to become the architects of enterprise-grade applications or software architects who would like to leverage Python to create effective blueprints of applications. What You Will Learn Build programs with the right architectural attributes Use Enterprise Architectural Patterns to solve scalable problems on the Web Understand design patterns from a Python perspective Optimize the performance testing tools in Python Deploy code in remote environments or on the Cloud using Python Secure architecture applications in Python In Detail This book starts off by explaining how Python fits into an application architecture. As you move along, you will understand the architecturally significant demands and how to determine them. Later, you'll get a complete understanding of the different architectural quality requirements that help an architect to build a product that satisfies business needs, such as maintainability/reusability, testability, scalability, performance, usability, and security. You will use various techniques such as incorporating DevOps, Continuous Integration, and more to make your application robust. You will understand when and when not to use object orientation in your applications. You will be able to think of the future and design applications that can scale proportionally to the growing business. The focus is on building the business logic based on the business process documentation and which frameworks are to be used when. We also cover some important patterns that are to be taken into account while solving design problems as well as those in relatively new domains such as the Cloud. This book will help you understand the ins and outs of Python so that you can make those critical design decisions that not just live up to but also surpass the expectations of your clients. Style and approach Filled with examples and use cases, this guide takes a no-nonsense approach to help you with everything it takes to become a successful software architect. | |
505 | 0 | |a Intro -- Software Architecture with Python -- Table of Contents -- Software Architecture with Python -- Credits -- About the Author -- About the Reviewer -- www.PacktPub.com -- Customer Feedback -- Preface -- What this book covers -- What you need for this book -- Who this book is for -- Conventions -- Reader feedback -- Customer support -- Downloading the example code -- Downloading the color images of this book -- Errata -- Piracy -- Questions -- 1. Principles of Software Architecture -- Defining Software Architecture -- Software Architecture versus design -- Aspects of Software Architecture -- Characteristics of Software Architecture -- An architecture defines a structure -- An architecture picks a core set of elements -- An architecture captures early design decisions -- An architecture manages stakeholder requirements -- An architecture influences the organizational structure -- An architecture is influenced by its environment -- An architecture documents the system -- An architecture often conforms to a pattern -- Importance of Software Architecture -- System versus enterprise architecture -- Architectural quality attributes -- Modifiability -- Testability -- Scalability -- Performance -- Availability -- Security -- Deployability -- Summary -- 2. Writing Modifiable and Readable Code -- What is modifiability? -- Aspects related to Modifiability -- Understanding readability -- Python and readability -- Readability -- antipatterns -- Techniques for readability -- Document your code -- Follow coding and style guidelines -- Review and refactor code -- Commenting the code -- Fundamentals of Modifiability -- Cohesion & -- Coupling -- Measuring cohesion and coupling -- Measuring cohesion and coupling -- string and text processing -- Exploring strategies for modifiability -- Providing explicit interfaces -- Reducing two-way dependencies. | |
505 | 8 | |a Abstract common services -- Using inheritance techniques -- Using late binding techniques -- Metrics -- tools for static analysis -- What are code smells? -- Cyclomatic complexity -- the McCabe metric -- Testing for metrics -- Running Static Checkers -- Refactoring Code -- Refactoring code -- fixing complexity -- Refactoring code -- fixing code smells -- Refactoring code -- fixing styling and coding issues -- Summary -- 3. Testability -- Writing Testable Code -- Understanding testability -- Software testability and related attributes -- Testability -- architectural aspects -- Testability -- strategies -- Reduce system complexity -- Improving predictability -- Control and isolate external dependencies -- White-box testing principles -- Unit testing -- Unit testing in action -- Extending our unit test case -- Nosing around with nose2 -- Testing with py.test -- Code coverage -- Measuring coverage using coverage.py -- Measuring coverage using nose2 -- Measuring coverage using py.test -- Mocking things up -- Tests inline in documentation -- doctests -- Integration tests -- Test automation -- Test automation using Selenium Web Driver -- Test-Driven Development -- TDD with palindromes -- Summary -- 4. Good Performance is Rewarding! -- What is performance? -- Software performance engineering -- Performance testing and measurement tools -- Performance complexity -- Measuring performance -- Measuring time using a context manager -- Timing code using the timeit module -- Measuring the performance of our code using timeit -- Finding out time complexity -- graphs -- Measuring CPU time with timeit -- Profiling -- Deterministic profiling -- Profiling with cProfile and profile -- Prime number iterator class -- performance tweaks -- Profiling -- collecting and reporting statistics -- Third-party profilers -- Line profiler -- Memory profiler -- Substring (subsequence) problem. | |
505 | 8 | |a Other tools -- Objgraph -- Pympler -- Programming for performance -- data structures -- Mutable containers -- lists, dictionaries, and sets -- Lists -- Dictionaries -- Sets -- Immutable containers -- tuples -- High performance containers -- the collections module -- deque -- defaultdict -- OrderedDict -- Dropping duplicates from a container without losing the order -- Implementing a Least Recently Used (LRU) cache dictionary -- Counter -- ChainMap -- namedtuple -- Probabilistic data structures -- bloom filters -- Summary -- 5. Writing Applications That Scale -- Scalability and performance -- Concurrency -- Concurrency versus parallelism -- Concurrency in Python -- multithreading -- Thumbnail generator -- Thumbnail generator -- producer/consumer architecture -- Thumbnail generator -- resource constraint using locks -- Thumbnail generator -- resource constraint using semaphores -- Resource constraint -- semaphore versus lock -- Thumbnail generator -- URL rate controller using conditions -- Multithreading -- Python and GIL -- Concurrency in Python -- multiprocessing -- A primality checker -- Sorting disk files -- Sorting disk files -- using a counter -- Sorting disk files -- using multiprocessing -- Multithreading versus multiprocessing -- Concurrecy in Python -- Asynchronous Execution -- Pre-emptive versus cooperative multitasking -- The asyncio module in Python -- Waiting for a future -- async and await -- Concurrent futures -- high-level concurrent processing -- Disk thumbnail generator -- Concurrency options -- how to choose? -- Parallel processing libraries -- Joblib -- PyMP -- Fractals -- the Mandelbrot set -- Fractals -- Scaling the Mandelbrot set implementation -- Scaling for the Web -- Scaling workflows -- message queues and task queues -- Celery -- a distributed task queue -- The Mandelbrot set using Celery -- Serving with Python on the Web-WSGI. | |
505 | 8 | |a UWSGI -- WSGI middleware on steroids -- Gunicorn -- unicorn for WSGI -- Gunicorn versus uWSGI -- Scalability architectures -- Vertical scalability architectures -- Horizontal scalability architectures -- Summary -- 6. Security -- Writing Secure Code -- Information Security architecture -- Secure coding -- Common security vulnerabilities -- Is Python secure? -- Reading input -- Evaluating arbitrary input -- Overflow errors -- Serializing objects -- Security issues with web applications -- Server Side Template Injection -- Server-Side Template Injection -- mitigation -- Denial of Service -- Cross-Site Scripting(XSS) -- Mitigation -- DoS and XSS -- Strategies for security -- Python -- Secure coding strategies -- Summary -- 7. Design Patterns in Python -- Design patterns -- Elements -- Categories of design patterns -- Pluggable hashing algorithms -- Summing up pluggable hashing algorithm -- Patterns in Python -- Creational -- The Singleton pattern -- The Singleton -- do we need a Singleton? -- State sharing -- Borg versus Singleton -- The Factory pattern -- The Prototype pattern -- Prototype -- deep versus shallow copy -- Prototype using metaclasses -- Combining patterns using metaclasses -- The Prototype factory -- The Builder pattern -- Patterns in Python -- Structural -- The Adapter pattern -- The Facade pattern -- Facades in Python -- The Proxy pattern -- An instance-counting proxy -- Patterns in Python -- Behavioral -- The Iterator pattern -- The Observer pattern -- The State pattern -- Summary -- 8. Python -- Architectural Patterns -- Introducing MVC -- Model Template View (MTV) -- Django -- Django admin -- automated model-centric views -- Flexible Microframework -- Flask -- Event-driven programming -- Chat server and client using I/O multiplexing with the select module -- Event-driven programming versus Concurrent programming -- Twisted. | |
505 | 8 | |a Twisted -- a simple web client -- Chat Server using Twisted -- Eventlet -- Greenlets and Gevent -- Microservice architecture -- Microservice frameworks in Python -- Microservices example -- restaurant reservation -- Microservices -- advantages -- Pipe and Filter architectures -- Pipe and Filter in Python -- Summary -- 9. Deploying Python Applications -- Deployability -- Factors affecting Deployability -- Tiers of software deployment architecture -- Software deployment in Python -- Packaging Python code -- Pip -- Virtualenv -- Virtualenv and pip -- Relocatable virtual environments -- PyPI -- Packaging and submission of an application -- The __init__.py files -- The setup.py file -- Installing the package -- Submitting the package to PyPI -- PyPA -- Remote deployments using Fabric -- Remote deployments using Ansible -- Managing remote daemons using Supervisor -- Deployment -- patterns and best practices -- Summary -- 10. Techniques for Debugging -- Maximum subarray problem -- The power of "print -- Analysis and rewrite -- Timing and optimizing the code -- Simple debugging tricks and techniques -- Word searcher program -- Word searcher program-debugging step 1 -- Word searcher program-debugging step 2 -- Word searcher program-final code -- Skipping blocks of code -- Stopping execution -- External dependencies-using wrappers -- Replacing functions with their return value/data (Mocking) -- Saving to / loading data from files as cache -- Saving to / loading data from memory as cache -- Returning random/mock data -- Generating random patient data -- Logging as a debugging technique -- Simple application logging -- Advanced logging-logger objects -- Advanced logging-custom formatting and loggers -- Advanced logging-writing to syslog -- Debugging tools-using debuggers -- A debugging session with pdb -- Pdb-similar tools -- iPdb -- Pdb++. | |
650 | 0 | |a Software architecture. |0 http://id.loc.gov/authorities/subjects/sh2004001071 | |
650 | 0 | |a Python (Computer program language) |0 http://id.loc.gov/authorities/subjects/sh96008834 | |
650 | 6 | |a Architecture logicielle. | |
650 | 6 | |a Python (Langage de programmation) | |
650 | 7 | |a COMPUTERS / Programming Languages / Python. |2 bisacsh | |
650 | 7 | |a Python (Computer program language) |2 fast | |
650 | 7 | |a Software architecture |2 fast | |
758 | |i has work: |a Software Architecture with Python (Text) |1 https://id.oclc.org/worldcat/entity/E39PCXThWkQ3vjTbvmJFkypdcP |4 https://id.oclc.org/worldcat/ontology/hasWork | ||
856 | 4 | 0 | |l FWS01 |p ZDB-4-EBA |q FWS_PDA_EBA |u https://search.ebscohost.com/login.aspx?direct=true&scope=site&db=nlebk&AN=1513359 |3 Volltext |
938 | |a Askews and Holts Library Services |b ASKH |n AH31188929 | ||
938 | |a ProQuest MyiLibrary Digital eBook Collection |b IDEB |n cis35312902 | ||
938 | |a EBSCOhost |b EBSC |n 1513359 | ||
994 | |a 92 |b GEBAY | ||
912 | |a ZDB-4-EBA | ||
049 | |a DE-863 |
Datensatz im Suchindex
DE-BY-FWS_katkey | ZDB-4-EBA-ocn988029372 |
---|---|
_version_ | 1816882390241378304 |
adam_text | |
any_adam_object | |
author | Pillai, Anand Balachandran |
author_facet | Pillai, Anand Balachandran |
author_role | aut |
author_sort | Pillai, Anand Balachandran |
author_variant | a b p ab abp |
building | Verbundindex |
bvnumber | localFWS |
callnumber-first | Q - Science |
callnumber-label | QA76 |
callnumber-raw | QA76.76.D47 |
callnumber-search | QA76.76.D47 |
callnumber-sort | QA 276.76 D47 |
callnumber-subject | QA - Mathematics |
collection | ZDB-4-EBA |
contents | Intro -- Software Architecture with Python -- Table of Contents -- Software Architecture with Python -- Credits -- About the Author -- About the Reviewer -- www.PacktPub.com -- Customer Feedback -- Preface -- What this book covers -- What you need for this book -- Who this book is for -- Conventions -- Reader feedback -- Customer support -- Downloading the example code -- Downloading the color images of this book -- Errata -- Piracy -- Questions -- 1. Principles of Software Architecture -- Defining Software Architecture -- Software Architecture versus design -- Aspects of Software Architecture -- Characteristics of Software Architecture -- An architecture defines a structure -- An architecture picks a core set of elements -- An architecture captures early design decisions -- An architecture manages stakeholder requirements -- An architecture influences the organizational structure -- An architecture is influenced by its environment -- An architecture documents the system -- An architecture often conforms to a pattern -- Importance of Software Architecture -- System versus enterprise architecture -- Architectural quality attributes -- Modifiability -- Testability -- Scalability -- Performance -- Availability -- Security -- Deployability -- Summary -- 2. Writing Modifiable and Readable Code -- What is modifiability? -- Aspects related to Modifiability -- Understanding readability -- Python and readability -- Readability -- antipatterns -- Techniques for readability -- Document your code -- Follow coding and style guidelines -- Review and refactor code -- Commenting the code -- Fundamentals of Modifiability -- Cohesion & -- Coupling -- Measuring cohesion and coupling -- Measuring cohesion and coupling -- string and text processing -- Exploring strategies for modifiability -- Providing explicit interfaces -- Reducing two-way dependencies. Abstract common services -- Using inheritance techniques -- Using late binding techniques -- Metrics -- tools for static analysis -- What are code smells? -- Cyclomatic complexity -- the McCabe metric -- Testing for metrics -- Running Static Checkers -- Refactoring Code -- Refactoring code -- fixing complexity -- Refactoring code -- fixing code smells -- Refactoring code -- fixing styling and coding issues -- Summary -- 3. Testability -- Writing Testable Code -- Understanding testability -- Software testability and related attributes -- Testability -- architectural aspects -- Testability -- strategies -- Reduce system complexity -- Improving predictability -- Control and isolate external dependencies -- White-box testing principles -- Unit testing -- Unit testing in action -- Extending our unit test case -- Nosing around with nose2 -- Testing with py.test -- Code coverage -- Measuring coverage using coverage.py -- Measuring coverage using nose2 -- Measuring coverage using py.test -- Mocking things up -- Tests inline in documentation -- doctests -- Integration tests -- Test automation -- Test automation using Selenium Web Driver -- Test-Driven Development -- TDD with palindromes -- Summary -- 4. Good Performance is Rewarding! -- What is performance? -- Software performance engineering -- Performance testing and measurement tools -- Performance complexity -- Measuring performance -- Measuring time using a context manager -- Timing code using the timeit module -- Measuring the performance of our code using timeit -- Finding out time complexity -- graphs -- Measuring CPU time with timeit -- Profiling -- Deterministic profiling -- Profiling with cProfile and profile -- Prime number iterator class -- performance tweaks -- Profiling -- collecting and reporting statistics -- Third-party profilers -- Line profiler -- Memory profiler -- Substring (subsequence) problem. Other tools -- Objgraph -- Pympler -- Programming for performance -- data structures -- Mutable containers -- lists, dictionaries, and sets -- Lists -- Dictionaries -- Sets -- Immutable containers -- tuples -- High performance containers -- the collections module -- deque -- defaultdict -- OrderedDict -- Dropping duplicates from a container without losing the order -- Implementing a Least Recently Used (LRU) cache dictionary -- Counter -- ChainMap -- namedtuple -- Probabilistic data structures -- bloom filters -- Summary -- 5. Writing Applications That Scale -- Scalability and performance -- Concurrency -- Concurrency versus parallelism -- Concurrency in Python -- multithreading -- Thumbnail generator -- Thumbnail generator -- producer/consumer architecture -- Thumbnail generator -- resource constraint using locks -- Thumbnail generator -- resource constraint using semaphores -- Resource constraint -- semaphore versus lock -- Thumbnail generator -- URL rate controller using conditions -- Multithreading -- Python and GIL -- Concurrency in Python -- multiprocessing -- A primality checker -- Sorting disk files -- Sorting disk files -- using a counter -- Sorting disk files -- using multiprocessing -- Multithreading versus multiprocessing -- Concurrecy in Python -- Asynchronous Execution -- Pre-emptive versus cooperative multitasking -- The asyncio module in Python -- Waiting for a future -- async and await -- Concurrent futures -- high-level concurrent processing -- Disk thumbnail generator -- Concurrency options -- how to choose? -- Parallel processing libraries -- Joblib -- PyMP -- Fractals -- the Mandelbrot set -- Fractals -- Scaling the Mandelbrot set implementation -- Scaling for the Web -- Scaling workflows -- message queues and task queues -- Celery -- a distributed task queue -- The Mandelbrot set using Celery -- Serving with Python on the Web-WSGI. UWSGI -- WSGI middleware on steroids -- Gunicorn -- unicorn for WSGI -- Gunicorn versus uWSGI -- Scalability architectures -- Vertical scalability architectures -- Horizontal scalability architectures -- Summary -- 6. Security -- Writing Secure Code -- Information Security architecture -- Secure coding -- Common security vulnerabilities -- Is Python secure? -- Reading input -- Evaluating arbitrary input -- Overflow errors -- Serializing objects -- Security issues with web applications -- Server Side Template Injection -- Server-Side Template Injection -- mitigation -- Denial of Service -- Cross-Site Scripting(XSS) -- Mitigation -- DoS and XSS -- Strategies for security -- Python -- Secure coding strategies -- Summary -- 7. Design Patterns in Python -- Design patterns -- Elements -- Categories of design patterns -- Pluggable hashing algorithms -- Summing up pluggable hashing algorithm -- Patterns in Python -- Creational -- The Singleton pattern -- The Singleton -- do we need a Singleton? -- State sharing -- Borg versus Singleton -- The Factory pattern -- The Prototype pattern -- Prototype -- deep versus shallow copy -- Prototype using metaclasses -- Combining patterns using metaclasses -- The Prototype factory -- The Builder pattern -- Patterns in Python -- Structural -- The Adapter pattern -- The Facade pattern -- Facades in Python -- The Proxy pattern -- An instance-counting proxy -- Patterns in Python -- Behavioral -- The Iterator pattern -- The Observer pattern -- The State pattern -- Summary -- 8. Python -- Architectural Patterns -- Introducing MVC -- Model Template View (MTV) -- Django -- Django admin -- automated model-centric views -- Flexible Microframework -- Flask -- Event-driven programming -- Chat server and client using I/O multiplexing with the select module -- Event-driven programming versus Concurrent programming -- Twisted. Twisted -- a simple web client -- Chat Server using Twisted -- Eventlet -- Greenlets and Gevent -- Microservice architecture -- Microservice frameworks in Python -- Microservices example -- restaurant reservation -- Microservices -- advantages -- Pipe and Filter architectures -- Pipe and Filter in Python -- Summary -- 9. Deploying Python Applications -- Deployability -- Factors affecting Deployability -- Tiers of software deployment architecture -- Software deployment in Python -- Packaging Python code -- Pip -- Virtualenv -- Virtualenv and pip -- Relocatable virtual environments -- PyPI -- Packaging and submission of an application -- The __init__.py files -- The setup.py file -- Installing the package -- Submitting the package to PyPI -- PyPA -- Remote deployments using Fabric -- Remote deployments using Ansible -- Managing remote daemons using Supervisor -- Deployment -- patterns and best practices -- Summary -- 10. Techniques for Debugging -- Maximum subarray problem -- The power of "print -- Analysis and rewrite -- Timing and optimizing the code -- Simple debugging tricks and techniques -- Word searcher program -- Word searcher program-debugging step 1 -- Word searcher program-debugging step 2 -- Word searcher program-final code -- Skipping blocks of code -- Stopping execution -- External dependencies-using wrappers -- Replacing functions with their return value/data (Mocking) -- Saving to / loading data from files as cache -- Saving to / loading data from memory as cache -- Returning random/mock data -- Generating random patient data -- Logging as a debugging technique -- Simple application logging -- Advanced logging-logger objects -- Advanced logging-custom formatting and loggers -- Advanced logging-writing to syslog -- Debugging tools-using debuggers -- A debugging session with pdb -- Pdb-similar tools -- iPdb -- Pdb++. |
ctrlnum | (OCoLC)988029372 |
dewey-full | 005.133 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.133 |
dewey-search | 005.133 |
dewey-sort | 15.133 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
format | Electronic eBook |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>14427cam a2200589 i 4500</leader><controlfield tag="001">ZDB-4-EBA-ocn988029372</controlfield><controlfield tag="003">OCoLC</controlfield><controlfield tag="005">20241004212047.0</controlfield><controlfield tag="006">m o d </controlfield><controlfield tag="007">cr unu||||||||</controlfield><controlfield tag="008">170525s2017 enka o 001 0 eng d</controlfield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">UMI</subfield><subfield code="b">eng</subfield><subfield code="e">rda</subfield><subfield code="e">pn</subfield><subfield code="c">UMI</subfield><subfield code="d">IDEBK</subfield><subfield code="d">TEFOD</subfield><subfield code="d">OCLCF</subfield><subfield code="d">OCLCQ</subfield><subfield code="d">COO</subfield><subfield code="d">UOK</subfield><subfield code="d">CEF</subfield><subfield code="d">KSU</subfield><subfield code="d">N$T</subfield><subfield code="d">UKMGB</subfield><subfield code="d">WYU</subfield><subfield code="d">LVT</subfield><subfield code="d">C6I</subfield><subfield code="d">UAB</subfield><subfield code="d">UKAHL</subfield><subfield code="d">OCLCO</subfield><subfield code="d">NZAUC</subfield><subfield code="d">OCLCQ</subfield><subfield code="d">OCLCO</subfield><subfield code="d">OCLCQ</subfield><subfield code="d">OCLCL</subfield><subfield code="d">DXU</subfield></datafield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">GBB795194</subfield><subfield code="2">bnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">018354692</subfield><subfield code="2">Uk</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781786467225</subfield><subfield code="q">(electronic bk.)</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">1786467224</subfield><subfield code="q">(electronic bk.)</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="z">9781786468529</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)988029372</subfield></datafield><datafield tag="037" ind1=" " ind2=" "><subfield code="a">CL0500000862</subfield><subfield code="b">Safari Books Online</subfield></datafield><datafield tag="037" ind1=" " ind2=" "><subfield code="a">F265FDBA-7692-40F4-B743-DED6B6D1B8DC</subfield><subfield code="b">OverDrive, Inc.</subfield><subfield code="n">http://www.overdrive.com</subfield></datafield><datafield tag="050" ind1=" " ind2="4"><subfield code="a">QA76.76.D47</subfield></datafield><datafield tag="072" ind1=" " ind2="7"><subfield code="a">COM</subfield><subfield code="x">051360</subfield><subfield code="2">bisacsh</subfield></datafield><datafield tag="082" ind1="7" ind2=" "><subfield code="a">005.133</subfield><subfield code="2">23</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">MAIN</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Pillai, Anand Balachandran,</subfield><subfield code="e">author.</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Software architecture with Python :</subfield><subfield code="b">design and architect highly scalable, robust, clean, and high performance applications in Python /</subfield><subfield code="c">Anand Balachandran Pillai.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Birmingham, UK :</subfield><subfield code="b">Packt Publishing,</subfield><subfield code="c">2017.</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">1 online resource (1 volume) :</subfield><subfield code="b">illustrations</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="a">text</subfield><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="a">computer</subfield><subfield code="b">c</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="a">online resource</subfield><subfield code="b">cr</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="588" ind1="0" ind2=" "><subfield code="a">Online resource; title from PDF title page (EBSCO, viewed September 24, 2018)</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">Includes index.</subfield></datafield><datafield tag="520" ind1="8" ind2=" "><subfield code="a">Architect and design highly scalable, robust, clean, and highly performant applications in Python About This Book Identify design issues and make the necessary adjustments to achieve improved performance Understand practical architectural quality attributes from the perspective of a practicing engineer and architect using Python Gain knowledge of architectural principles and how they can be used to provide accountability and rationale for architectural decisions Who This Book Is For This book is for experienced Python developers who are aspiring to become the architects of enterprise-grade applications or software architects who would like to leverage Python to create effective blueprints of applications. What You Will Learn Build programs with the right architectural attributes Use Enterprise Architectural Patterns to solve scalable problems on the Web Understand design patterns from a Python perspective Optimize the performance testing tools in Python Deploy code in remote environments or on the Cloud using Python Secure architecture applications in Python In Detail This book starts off by explaining how Python fits into an application architecture. As you move along, you will understand the architecturally significant demands and how to determine them. Later, you'll get a complete understanding of the different architectural quality requirements that help an architect to build a product that satisfies business needs, such as maintainability/reusability, testability, scalability, performance, usability, and security. You will use various techniques such as incorporating DevOps, Continuous Integration, and more to make your application robust. You will understand when and when not to use object orientation in your applications. You will be able to think of the future and design applications that can scale proportionally to the growing business. The focus is on building the business logic based on the business process documentation and which frameworks are to be used when. We also cover some important patterns that are to be taken into account while solving design problems as well as those in relatively new domains such as the Cloud. This book will help you understand the ins and outs of Python so that you can make those critical design decisions that not just live up to but also surpass the expectations of your clients. Style and approach Filled with examples and use cases, this guide takes a no-nonsense approach to help you with everything it takes to become a successful software architect.</subfield></datafield><datafield tag="505" ind1="0" ind2=" "><subfield code="a">Intro -- Software Architecture with Python -- Table of Contents -- Software Architecture with Python -- Credits -- About the Author -- About the Reviewer -- www.PacktPub.com -- Customer Feedback -- Preface -- What this book covers -- What you need for this book -- Who this book is for -- Conventions -- Reader feedback -- Customer support -- Downloading the example code -- Downloading the color images of this book -- Errata -- Piracy -- Questions -- 1. Principles of Software Architecture -- Defining Software Architecture -- Software Architecture versus design -- Aspects of Software Architecture -- Characteristics of Software Architecture -- An architecture defines a structure -- An architecture picks a core set of elements -- An architecture captures early design decisions -- An architecture manages stakeholder requirements -- An architecture influences the organizational structure -- An architecture is influenced by its environment -- An architecture documents the system -- An architecture often conforms to a pattern -- Importance of Software Architecture -- System versus enterprise architecture -- Architectural quality attributes -- Modifiability -- Testability -- Scalability -- Performance -- Availability -- Security -- Deployability -- Summary -- 2. Writing Modifiable and Readable Code -- What is modifiability? -- Aspects related to Modifiability -- Understanding readability -- Python and readability -- Readability -- antipatterns -- Techniques for readability -- Document your code -- Follow coding and style guidelines -- Review and refactor code -- Commenting the code -- Fundamentals of Modifiability -- Cohesion &amp -- Coupling -- Measuring cohesion and coupling -- Measuring cohesion and coupling -- string and text processing -- Exploring strategies for modifiability -- Providing explicit interfaces -- Reducing two-way dependencies.</subfield></datafield><datafield tag="505" ind1="8" ind2=" "><subfield code="a">Abstract common services -- Using inheritance techniques -- Using late binding techniques -- Metrics -- tools for static analysis -- What are code smells? -- Cyclomatic complexity -- the McCabe metric -- Testing for metrics -- Running Static Checkers -- Refactoring Code -- Refactoring code -- fixing complexity -- Refactoring code -- fixing code smells -- Refactoring code -- fixing styling and coding issues -- Summary -- 3. Testability -- Writing Testable Code -- Understanding testability -- Software testability and related attributes -- Testability -- architectural aspects -- Testability -- strategies -- Reduce system complexity -- Improving predictability -- Control and isolate external dependencies -- White-box testing principles -- Unit testing -- Unit testing in action -- Extending our unit test case -- Nosing around with nose2 -- Testing with py.test -- Code coverage -- Measuring coverage using coverage.py -- Measuring coverage using nose2 -- Measuring coverage using py.test -- Mocking things up -- Tests inline in documentation -- doctests -- Integration tests -- Test automation -- Test automation using Selenium Web Driver -- Test-Driven Development -- TDD with palindromes -- Summary -- 4. Good Performance is Rewarding! -- What is performance? -- Software performance engineering -- Performance testing and measurement tools -- Performance complexity -- Measuring performance -- Measuring time using a context manager -- Timing code using the timeit module -- Measuring the performance of our code using timeit -- Finding out time complexity -- graphs -- Measuring CPU time with timeit -- Profiling -- Deterministic profiling -- Profiling with cProfile and profile -- Prime number iterator class -- performance tweaks -- Profiling -- collecting and reporting statistics -- Third-party profilers -- Line profiler -- Memory profiler -- Substring (subsequence) problem.</subfield></datafield><datafield tag="505" ind1="8" ind2=" "><subfield code="a">Other tools -- Objgraph -- Pympler -- Programming for performance -- data structures -- Mutable containers -- lists, dictionaries, and sets -- Lists -- Dictionaries -- Sets -- Immutable containers -- tuples -- High performance containers -- the collections module -- deque -- defaultdict -- OrderedDict -- Dropping duplicates from a container without losing the order -- Implementing a Least Recently Used (LRU) cache dictionary -- Counter -- ChainMap -- namedtuple -- Probabilistic data structures -- bloom filters -- Summary -- 5. Writing Applications That Scale -- Scalability and performance -- Concurrency -- Concurrency versus parallelism -- Concurrency in Python -- multithreading -- Thumbnail generator -- Thumbnail generator -- producer/consumer architecture -- Thumbnail generator -- resource constraint using locks -- Thumbnail generator -- resource constraint using semaphores -- Resource constraint -- semaphore versus lock -- Thumbnail generator -- URL rate controller using conditions -- Multithreading -- Python and GIL -- Concurrency in Python -- multiprocessing -- A primality checker -- Sorting disk files -- Sorting disk files -- using a counter -- Sorting disk files -- using multiprocessing -- Multithreading versus multiprocessing -- Concurrecy in Python -- Asynchronous Execution -- Pre-emptive versus cooperative multitasking -- The asyncio module in Python -- Waiting for a future -- async and await -- Concurrent futures -- high-level concurrent processing -- Disk thumbnail generator -- Concurrency options -- how to choose? -- Parallel processing libraries -- Joblib -- PyMP -- Fractals -- the Mandelbrot set -- Fractals -- Scaling the Mandelbrot set implementation -- Scaling for the Web -- Scaling workflows -- message queues and task queues -- Celery -- a distributed task queue -- The Mandelbrot set using Celery -- Serving with Python on the Web-WSGI.</subfield></datafield><datafield tag="505" ind1="8" ind2=" "><subfield code="a">UWSGI -- WSGI middleware on steroids -- Gunicorn -- unicorn for WSGI -- Gunicorn versus uWSGI -- Scalability architectures -- Vertical scalability architectures -- Horizontal scalability architectures -- Summary -- 6. Security -- Writing Secure Code -- Information Security architecture -- Secure coding -- Common security vulnerabilities -- Is Python secure? -- Reading input -- Evaluating arbitrary input -- Overflow errors -- Serializing objects -- Security issues with web applications -- Server Side Template Injection -- Server-Side Template Injection -- mitigation -- Denial of Service -- Cross-Site Scripting(XSS) -- Mitigation -- DoS and XSS -- Strategies for security -- Python -- Secure coding strategies -- Summary -- 7. Design Patterns in Python -- Design patterns -- Elements -- Categories of design patterns -- Pluggable hashing algorithms -- Summing up pluggable hashing algorithm -- Patterns in Python -- Creational -- The Singleton pattern -- The Singleton -- do we need a Singleton? -- State sharing -- Borg versus Singleton -- The Factory pattern -- The Prototype pattern -- Prototype -- deep versus shallow copy -- Prototype using metaclasses -- Combining patterns using metaclasses -- The Prototype factory -- The Builder pattern -- Patterns in Python -- Structural -- The Adapter pattern -- The Facade pattern -- Facades in Python -- The Proxy pattern -- An instance-counting proxy -- Patterns in Python -- Behavioral -- The Iterator pattern -- The Observer pattern -- The State pattern -- Summary -- 8. Python -- Architectural Patterns -- Introducing MVC -- Model Template View (MTV) -- Django -- Django admin -- automated model-centric views -- Flexible Microframework -- Flask -- Event-driven programming -- Chat server and client using I/O multiplexing with the select module -- Event-driven programming versus Concurrent programming -- Twisted.</subfield></datafield><datafield tag="505" ind1="8" ind2=" "><subfield code="a">Twisted -- a simple web client -- Chat Server using Twisted -- Eventlet -- Greenlets and Gevent -- Microservice architecture -- Microservice frameworks in Python -- Microservices example -- restaurant reservation -- Microservices -- advantages -- Pipe and Filter architectures -- Pipe and Filter in Python -- Summary -- 9. Deploying Python Applications -- Deployability -- Factors affecting Deployability -- Tiers of software deployment architecture -- Software deployment in Python -- Packaging Python code -- Pip -- Virtualenv -- Virtualenv and pip -- Relocatable virtual environments -- PyPI -- Packaging and submission of an application -- The __init__.py files -- The setup.py file -- Installing the package -- Submitting the package to PyPI -- PyPA -- Remote deployments using Fabric -- Remote deployments using Ansible -- Managing remote daemons using Supervisor -- Deployment -- patterns and best practices -- Summary -- 10. Techniques for Debugging -- Maximum subarray problem -- The power of "print -- Analysis and rewrite -- Timing and optimizing the code -- Simple debugging tricks and techniques -- Word searcher program -- Word searcher program-debugging step 1 -- Word searcher program-debugging step 2 -- Word searcher program-final code -- Skipping blocks of code -- Stopping execution -- External dependencies-using wrappers -- Replacing functions with their return value/data (Mocking) -- Saving to / loading data from files as cache -- Saving to / loading data from memory as cache -- Returning random/mock data -- Generating random patient data -- Logging as a debugging technique -- Simple application logging -- Advanced logging-logger objects -- Advanced logging-custom formatting and loggers -- Advanced logging-writing to syslog -- Debugging tools-using debuggers -- A debugging session with pdb -- Pdb-similar tools -- iPdb -- Pdb++.</subfield></datafield><datafield tag="650" ind1=" " ind2="0"><subfield code="a">Software architecture.</subfield><subfield code="0">http://id.loc.gov/authorities/subjects/sh2004001071</subfield></datafield><datafield tag="650" ind1=" " ind2="0"><subfield code="a">Python (Computer program language)</subfield><subfield code="0">http://id.loc.gov/authorities/subjects/sh96008834</subfield></datafield><datafield tag="650" ind1=" " ind2="6"><subfield code="a">Architecture logicielle.</subfield></datafield><datafield tag="650" ind1=" " ind2="6"><subfield code="a">Python (Langage de programmation)</subfield></datafield><datafield tag="650" ind1=" " ind2="7"><subfield code="a">COMPUTERS / Programming Languages / Python.</subfield><subfield code="2">bisacsh</subfield></datafield><datafield tag="650" ind1=" " ind2="7"><subfield code="a">Python (Computer program language)</subfield><subfield code="2">fast</subfield></datafield><datafield tag="650" ind1=" " ind2="7"><subfield code="a">Software architecture</subfield><subfield code="2">fast</subfield></datafield><datafield tag="758" ind1=" " ind2=" "><subfield code="i">has work:</subfield><subfield code="a">Software Architecture with Python (Text)</subfield><subfield code="1">https://id.oclc.org/worldcat/entity/E39PCXThWkQ3vjTbvmJFkypdcP</subfield><subfield code="4">https://id.oclc.org/worldcat/ontology/hasWork</subfield></datafield><datafield tag="856" ind1="4" ind2="0"><subfield code="l">FWS01</subfield><subfield code="p">ZDB-4-EBA</subfield><subfield code="q">FWS_PDA_EBA</subfield><subfield code="u">https://search.ebscohost.com/login.aspx?direct=true&scope=site&db=nlebk&AN=1513359</subfield><subfield code="3">Volltext</subfield></datafield><datafield tag="938" ind1=" " ind2=" "><subfield code="a">Askews and Holts Library Services</subfield><subfield code="b">ASKH</subfield><subfield code="n">AH31188929</subfield></datafield><datafield tag="938" ind1=" " ind2=" "><subfield code="a">ProQuest MyiLibrary Digital eBook Collection</subfield><subfield code="b">IDEB</subfield><subfield code="n">cis35312902</subfield></datafield><datafield tag="938" ind1=" " ind2=" "><subfield code="a">EBSCOhost</subfield><subfield code="b">EBSC</subfield><subfield code="n">1513359</subfield></datafield><datafield tag="994" ind1=" " ind2=" "><subfield code="a">92</subfield><subfield code="b">GEBAY</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">ZDB-4-EBA</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-863</subfield></datafield></record></collection> |
id | ZDB-4-EBA-ocn988029372 |
illustrated | Illustrated |
indexdate | 2024-11-27T13:27:51Z |
institution | BVB |
isbn | 9781786467225 1786467224 |
language | English |
oclc_num | 988029372 |
open_access_boolean | |
owner | MAIN DE-863 DE-BY-FWS |
owner_facet | MAIN DE-863 DE-BY-FWS |
physical | 1 online resource (1 volume) : illustrations |
psigel | ZDB-4-EBA |
publishDate | 2017 |
publishDateSearch | 2017 |
publishDateSort | 2017 |
publisher | Packt Publishing, |
record_format | marc |
spelling | Pillai, Anand Balachandran, author. Software architecture with Python : design and architect highly scalable, robust, clean, and high performance applications in Python / Anand Balachandran Pillai. Birmingham, UK : Packt Publishing, 2017. 1 online resource (1 volume) : illustrations text txt rdacontent computer c rdamedia online resource cr rdacarrier Online resource; title from PDF title page (EBSCO, viewed September 24, 2018) Includes index. Architect and design highly scalable, robust, clean, and highly performant applications in Python About This Book Identify design issues and make the necessary adjustments to achieve improved performance Understand practical architectural quality attributes from the perspective of a practicing engineer and architect using Python Gain knowledge of architectural principles and how they can be used to provide accountability and rationale for architectural decisions Who This Book Is For This book is for experienced Python developers who are aspiring to become the architects of enterprise-grade applications or software architects who would like to leverage Python to create effective blueprints of applications. What You Will Learn Build programs with the right architectural attributes Use Enterprise Architectural Patterns to solve scalable problems on the Web Understand design patterns from a Python perspective Optimize the performance testing tools in Python Deploy code in remote environments or on the Cloud using Python Secure architecture applications in Python In Detail This book starts off by explaining how Python fits into an application architecture. As you move along, you will understand the architecturally significant demands and how to determine them. Later, you'll get a complete understanding of the different architectural quality requirements that help an architect to build a product that satisfies business needs, such as maintainability/reusability, testability, scalability, performance, usability, and security. You will use various techniques such as incorporating DevOps, Continuous Integration, and more to make your application robust. You will understand when and when not to use object orientation in your applications. You will be able to think of the future and design applications that can scale proportionally to the growing business. The focus is on building the business logic based on the business process documentation and which frameworks are to be used when. We also cover some important patterns that are to be taken into account while solving design problems as well as those in relatively new domains such as the Cloud. This book will help you understand the ins and outs of Python so that you can make those critical design decisions that not just live up to but also surpass the expectations of your clients. Style and approach Filled with examples and use cases, this guide takes a no-nonsense approach to help you with everything it takes to become a successful software architect. Intro -- Software Architecture with Python -- Table of Contents -- Software Architecture with Python -- Credits -- About the Author -- About the Reviewer -- www.PacktPub.com -- Customer Feedback -- Preface -- What this book covers -- What you need for this book -- Who this book is for -- Conventions -- Reader feedback -- Customer support -- Downloading the example code -- Downloading the color images of this book -- Errata -- Piracy -- Questions -- 1. Principles of Software Architecture -- Defining Software Architecture -- Software Architecture versus design -- Aspects of Software Architecture -- Characteristics of Software Architecture -- An architecture defines a structure -- An architecture picks a core set of elements -- An architecture captures early design decisions -- An architecture manages stakeholder requirements -- An architecture influences the organizational structure -- An architecture is influenced by its environment -- An architecture documents the system -- An architecture often conforms to a pattern -- Importance of Software Architecture -- System versus enterprise architecture -- Architectural quality attributes -- Modifiability -- Testability -- Scalability -- Performance -- Availability -- Security -- Deployability -- Summary -- 2. Writing Modifiable and Readable Code -- What is modifiability? -- Aspects related to Modifiability -- Understanding readability -- Python and readability -- Readability -- antipatterns -- Techniques for readability -- Document your code -- Follow coding and style guidelines -- Review and refactor code -- Commenting the code -- Fundamentals of Modifiability -- Cohesion & -- Coupling -- Measuring cohesion and coupling -- Measuring cohesion and coupling -- string and text processing -- Exploring strategies for modifiability -- Providing explicit interfaces -- Reducing two-way dependencies. Abstract common services -- Using inheritance techniques -- Using late binding techniques -- Metrics -- tools for static analysis -- What are code smells? -- Cyclomatic complexity -- the McCabe metric -- Testing for metrics -- Running Static Checkers -- Refactoring Code -- Refactoring code -- fixing complexity -- Refactoring code -- fixing code smells -- Refactoring code -- fixing styling and coding issues -- Summary -- 3. Testability -- Writing Testable Code -- Understanding testability -- Software testability and related attributes -- Testability -- architectural aspects -- Testability -- strategies -- Reduce system complexity -- Improving predictability -- Control and isolate external dependencies -- White-box testing principles -- Unit testing -- Unit testing in action -- Extending our unit test case -- Nosing around with nose2 -- Testing with py.test -- Code coverage -- Measuring coverage using coverage.py -- Measuring coverage using nose2 -- Measuring coverage using py.test -- Mocking things up -- Tests inline in documentation -- doctests -- Integration tests -- Test automation -- Test automation using Selenium Web Driver -- Test-Driven Development -- TDD with palindromes -- Summary -- 4. Good Performance is Rewarding! -- What is performance? -- Software performance engineering -- Performance testing and measurement tools -- Performance complexity -- Measuring performance -- Measuring time using a context manager -- Timing code using the timeit module -- Measuring the performance of our code using timeit -- Finding out time complexity -- graphs -- Measuring CPU time with timeit -- Profiling -- Deterministic profiling -- Profiling with cProfile and profile -- Prime number iterator class -- performance tweaks -- Profiling -- collecting and reporting statistics -- Third-party profilers -- Line profiler -- Memory profiler -- Substring (subsequence) problem. Other tools -- Objgraph -- Pympler -- Programming for performance -- data structures -- Mutable containers -- lists, dictionaries, and sets -- Lists -- Dictionaries -- Sets -- Immutable containers -- tuples -- High performance containers -- the collections module -- deque -- defaultdict -- OrderedDict -- Dropping duplicates from a container without losing the order -- Implementing a Least Recently Used (LRU) cache dictionary -- Counter -- ChainMap -- namedtuple -- Probabilistic data structures -- bloom filters -- Summary -- 5. Writing Applications That Scale -- Scalability and performance -- Concurrency -- Concurrency versus parallelism -- Concurrency in Python -- multithreading -- Thumbnail generator -- Thumbnail generator -- producer/consumer architecture -- Thumbnail generator -- resource constraint using locks -- Thumbnail generator -- resource constraint using semaphores -- Resource constraint -- semaphore versus lock -- Thumbnail generator -- URL rate controller using conditions -- Multithreading -- Python and GIL -- Concurrency in Python -- multiprocessing -- A primality checker -- Sorting disk files -- Sorting disk files -- using a counter -- Sorting disk files -- using multiprocessing -- Multithreading versus multiprocessing -- Concurrecy in Python -- Asynchronous Execution -- Pre-emptive versus cooperative multitasking -- The asyncio module in Python -- Waiting for a future -- async and await -- Concurrent futures -- high-level concurrent processing -- Disk thumbnail generator -- Concurrency options -- how to choose? -- Parallel processing libraries -- Joblib -- PyMP -- Fractals -- the Mandelbrot set -- Fractals -- Scaling the Mandelbrot set implementation -- Scaling for the Web -- Scaling workflows -- message queues and task queues -- Celery -- a distributed task queue -- The Mandelbrot set using Celery -- Serving with Python on the Web-WSGI. UWSGI -- WSGI middleware on steroids -- Gunicorn -- unicorn for WSGI -- Gunicorn versus uWSGI -- Scalability architectures -- Vertical scalability architectures -- Horizontal scalability architectures -- Summary -- 6. Security -- Writing Secure Code -- Information Security architecture -- Secure coding -- Common security vulnerabilities -- Is Python secure? -- Reading input -- Evaluating arbitrary input -- Overflow errors -- Serializing objects -- Security issues with web applications -- Server Side Template Injection -- Server-Side Template Injection -- mitigation -- Denial of Service -- Cross-Site Scripting(XSS) -- Mitigation -- DoS and XSS -- Strategies for security -- Python -- Secure coding strategies -- Summary -- 7. Design Patterns in Python -- Design patterns -- Elements -- Categories of design patterns -- Pluggable hashing algorithms -- Summing up pluggable hashing algorithm -- Patterns in Python -- Creational -- The Singleton pattern -- The Singleton -- do we need a Singleton? -- State sharing -- Borg versus Singleton -- The Factory pattern -- The Prototype pattern -- Prototype -- deep versus shallow copy -- Prototype using metaclasses -- Combining patterns using metaclasses -- The Prototype factory -- The Builder pattern -- Patterns in Python -- Structural -- The Adapter pattern -- The Facade pattern -- Facades in Python -- The Proxy pattern -- An instance-counting proxy -- Patterns in Python -- Behavioral -- The Iterator pattern -- The Observer pattern -- The State pattern -- Summary -- 8. Python -- Architectural Patterns -- Introducing MVC -- Model Template View (MTV) -- Django -- Django admin -- automated model-centric views -- Flexible Microframework -- Flask -- Event-driven programming -- Chat server and client using I/O multiplexing with the select module -- Event-driven programming versus Concurrent programming -- Twisted. Twisted -- a simple web client -- Chat Server using Twisted -- Eventlet -- Greenlets and Gevent -- Microservice architecture -- Microservice frameworks in Python -- Microservices example -- restaurant reservation -- Microservices -- advantages -- Pipe and Filter architectures -- Pipe and Filter in Python -- Summary -- 9. Deploying Python Applications -- Deployability -- Factors affecting Deployability -- Tiers of software deployment architecture -- Software deployment in Python -- Packaging Python code -- Pip -- Virtualenv -- Virtualenv and pip -- Relocatable virtual environments -- PyPI -- Packaging and submission of an application -- The __init__.py files -- The setup.py file -- Installing the package -- Submitting the package to PyPI -- PyPA -- Remote deployments using Fabric -- Remote deployments using Ansible -- Managing remote daemons using Supervisor -- Deployment -- patterns and best practices -- Summary -- 10. Techniques for Debugging -- Maximum subarray problem -- The power of "print -- Analysis and rewrite -- Timing and optimizing the code -- Simple debugging tricks and techniques -- Word searcher program -- Word searcher program-debugging step 1 -- Word searcher program-debugging step 2 -- Word searcher program-final code -- Skipping blocks of code -- Stopping execution -- External dependencies-using wrappers -- Replacing functions with their return value/data (Mocking) -- Saving to / loading data from files as cache -- Saving to / loading data from memory as cache -- Returning random/mock data -- Generating random patient data -- Logging as a debugging technique -- Simple application logging -- Advanced logging-logger objects -- Advanced logging-custom formatting and loggers -- Advanced logging-writing to syslog -- Debugging tools-using debuggers -- A debugging session with pdb -- Pdb-similar tools -- iPdb -- Pdb++. Software architecture. http://id.loc.gov/authorities/subjects/sh2004001071 Python (Computer program language) http://id.loc.gov/authorities/subjects/sh96008834 Architecture logicielle. Python (Langage de programmation) COMPUTERS / Programming Languages / Python. bisacsh Python (Computer program language) fast Software architecture fast has work: Software Architecture with Python (Text) https://id.oclc.org/worldcat/entity/E39PCXThWkQ3vjTbvmJFkypdcP https://id.oclc.org/worldcat/ontology/hasWork FWS01 ZDB-4-EBA FWS_PDA_EBA https://search.ebscohost.com/login.aspx?direct=true&scope=site&db=nlebk&AN=1513359 Volltext |
spellingShingle | Pillai, Anand Balachandran Software architecture with Python : design and architect highly scalable, robust, clean, and high performance applications in Python / Intro -- Software Architecture with Python -- Table of Contents -- Software Architecture with Python -- Credits -- About the Author -- About the Reviewer -- www.PacktPub.com -- Customer Feedback -- Preface -- What this book covers -- What you need for this book -- Who this book is for -- Conventions -- Reader feedback -- Customer support -- Downloading the example code -- Downloading the color images of this book -- Errata -- Piracy -- Questions -- 1. Principles of Software Architecture -- Defining Software Architecture -- Software Architecture versus design -- Aspects of Software Architecture -- Characteristics of Software Architecture -- An architecture defines a structure -- An architecture picks a core set of elements -- An architecture captures early design decisions -- An architecture manages stakeholder requirements -- An architecture influences the organizational structure -- An architecture is influenced by its environment -- An architecture documents the system -- An architecture often conforms to a pattern -- Importance of Software Architecture -- System versus enterprise architecture -- Architectural quality attributes -- Modifiability -- Testability -- Scalability -- Performance -- Availability -- Security -- Deployability -- Summary -- 2. Writing Modifiable and Readable Code -- What is modifiability? -- Aspects related to Modifiability -- Understanding readability -- Python and readability -- Readability -- antipatterns -- Techniques for readability -- Document your code -- Follow coding and style guidelines -- Review and refactor code -- Commenting the code -- Fundamentals of Modifiability -- Cohesion & -- Coupling -- Measuring cohesion and coupling -- Measuring cohesion and coupling -- string and text processing -- Exploring strategies for modifiability -- Providing explicit interfaces -- Reducing two-way dependencies. Abstract common services -- Using inheritance techniques -- Using late binding techniques -- Metrics -- tools for static analysis -- What are code smells? -- Cyclomatic complexity -- the McCabe metric -- Testing for metrics -- Running Static Checkers -- Refactoring Code -- Refactoring code -- fixing complexity -- Refactoring code -- fixing code smells -- Refactoring code -- fixing styling and coding issues -- Summary -- 3. Testability -- Writing Testable Code -- Understanding testability -- Software testability and related attributes -- Testability -- architectural aspects -- Testability -- strategies -- Reduce system complexity -- Improving predictability -- Control and isolate external dependencies -- White-box testing principles -- Unit testing -- Unit testing in action -- Extending our unit test case -- Nosing around with nose2 -- Testing with py.test -- Code coverage -- Measuring coverage using coverage.py -- Measuring coverage using nose2 -- Measuring coverage using py.test -- Mocking things up -- Tests inline in documentation -- doctests -- Integration tests -- Test automation -- Test automation using Selenium Web Driver -- Test-Driven Development -- TDD with palindromes -- Summary -- 4. Good Performance is Rewarding! -- What is performance? -- Software performance engineering -- Performance testing and measurement tools -- Performance complexity -- Measuring performance -- Measuring time using a context manager -- Timing code using the timeit module -- Measuring the performance of our code using timeit -- Finding out time complexity -- graphs -- Measuring CPU time with timeit -- Profiling -- Deterministic profiling -- Profiling with cProfile and profile -- Prime number iterator class -- performance tweaks -- Profiling -- collecting and reporting statistics -- Third-party profilers -- Line profiler -- Memory profiler -- Substring (subsequence) problem. Other tools -- Objgraph -- Pympler -- Programming for performance -- data structures -- Mutable containers -- lists, dictionaries, and sets -- Lists -- Dictionaries -- Sets -- Immutable containers -- tuples -- High performance containers -- the collections module -- deque -- defaultdict -- OrderedDict -- Dropping duplicates from a container without losing the order -- Implementing a Least Recently Used (LRU) cache dictionary -- Counter -- ChainMap -- namedtuple -- Probabilistic data structures -- bloom filters -- Summary -- 5. Writing Applications That Scale -- Scalability and performance -- Concurrency -- Concurrency versus parallelism -- Concurrency in Python -- multithreading -- Thumbnail generator -- Thumbnail generator -- producer/consumer architecture -- Thumbnail generator -- resource constraint using locks -- Thumbnail generator -- resource constraint using semaphores -- Resource constraint -- semaphore versus lock -- Thumbnail generator -- URL rate controller using conditions -- Multithreading -- Python and GIL -- Concurrency in Python -- multiprocessing -- A primality checker -- Sorting disk files -- Sorting disk files -- using a counter -- Sorting disk files -- using multiprocessing -- Multithreading versus multiprocessing -- Concurrecy in Python -- Asynchronous Execution -- Pre-emptive versus cooperative multitasking -- The asyncio module in Python -- Waiting for a future -- async and await -- Concurrent futures -- high-level concurrent processing -- Disk thumbnail generator -- Concurrency options -- how to choose? -- Parallel processing libraries -- Joblib -- PyMP -- Fractals -- the Mandelbrot set -- Fractals -- Scaling the Mandelbrot set implementation -- Scaling for the Web -- Scaling workflows -- message queues and task queues -- Celery -- a distributed task queue -- The Mandelbrot set using Celery -- Serving with Python on the Web-WSGI. UWSGI -- WSGI middleware on steroids -- Gunicorn -- unicorn for WSGI -- Gunicorn versus uWSGI -- Scalability architectures -- Vertical scalability architectures -- Horizontal scalability architectures -- Summary -- 6. Security -- Writing Secure Code -- Information Security architecture -- Secure coding -- Common security vulnerabilities -- Is Python secure? -- Reading input -- Evaluating arbitrary input -- Overflow errors -- Serializing objects -- Security issues with web applications -- Server Side Template Injection -- Server-Side Template Injection -- mitigation -- Denial of Service -- Cross-Site Scripting(XSS) -- Mitigation -- DoS and XSS -- Strategies for security -- Python -- Secure coding strategies -- Summary -- 7. Design Patterns in Python -- Design patterns -- Elements -- Categories of design patterns -- Pluggable hashing algorithms -- Summing up pluggable hashing algorithm -- Patterns in Python -- Creational -- The Singleton pattern -- The Singleton -- do we need a Singleton? -- State sharing -- Borg versus Singleton -- The Factory pattern -- The Prototype pattern -- Prototype -- deep versus shallow copy -- Prototype using metaclasses -- Combining patterns using metaclasses -- The Prototype factory -- The Builder pattern -- Patterns in Python -- Structural -- The Adapter pattern -- The Facade pattern -- Facades in Python -- The Proxy pattern -- An instance-counting proxy -- Patterns in Python -- Behavioral -- The Iterator pattern -- The Observer pattern -- The State pattern -- Summary -- 8. Python -- Architectural Patterns -- Introducing MVC -- Model Template View (MTV) -- Django -- Django admin -- automated model-centric views -- Flexible Microframework -- Flask -- Event-driven programming -- Chat server and client using I/O multiplexing with the select module -- Event-driven programming versus Concurrent programming -- Twisted. Twisted -- a simple web client -- Chat Server using Twisted -- Eventlet -- Greenlets and Gevent -- Microservice architecture -- Microservice frameworks in Python -- Microservices example -- restaurant reservation -- Microservices -- advantages -- Pipe and Filter architectures -- Pipe and Filter in Python -- Summary -- 9. Deploying Python Applications -- Deployability -- Factors affecting Deployability -- Tiers of software deployment architecture -- Software deployment in Python -- Packaging Python code -- Pip -- Virtualenv -- Virtualenv and pip -- Relocatable virtual environments -- PyPI -- Packaging and submission of an application -- The __init__.py files -- The setup.py file -- Installing the package -- Submitting the package to PyPI -- PyPA -- Remote deployments using Fabric -- Remote deployments using Ansible -- Managing remote daemons using Supervisor -- Deployment -- patterns and best practices -- Summary -- 10. Techniques for Debugging -- Maximum subarray problem -- The power of "print -- Analysis and rewrite -- Timing and optimizing the code -- Simple debugging tricks and techniques -- Word searcher program -- Word searcher program-debugging step 1 -- Word searcher program-debugging step 2 -- Word searcher program-final code -- Skipping blocks of code -- Stopping execution -- External dependencies-using wrappers -- Replacing functions with their return value/data (Mocking) -- Saving to / loading data from files as cache -- Saving to / loading data from memory as cache -- Returning random/mock data -- Generating random patient data -- Logging as a debugging technique -- Simple application logging -- Advanced logging-logger objects -- Advanced logging-custom formatting and loggers -- Advanced logging-writing to syslog -- Debugging tools-using debuggers -- A debugging session with pdb -- Pdb-similar tools -- iPdb -- Pdb++. Software architecture. http://id.loc.gov/authorities/subjects/sh2004001071 Python (Computer program language) http://id.loc.gov/authorities/subjects/sh96008834 Architecture logicielle. Python (Langage de programmation) COMPUTERS / Programming Languages / Python. bisacsh Python (Computer program language) fast Software architecture fast |
subject_GND | http://id.loc.gov/authorities/subjects/sh2004001071 http://id.loc.gov/authorities/subjects/sh96008834 |
title | Software architecture with Python : design and architect highly scalable, robust, clean, and high performance applications in Python / |
title_auth | Software architecture with Python : design and architect highly scalable, robust, clean, and high performance applications in Python / |
title_exact_search | Software architecture with Python : design and architect highly scalable, robust, clean, and high performance applications in Python / |
title_full | Software architecture with Python : design and architect highly scalable, robust, clean, and high performance applications in Python / Anand Balachandran Pillai. |
title_fullStr | Software architecture with Python : design and architect highly scalable, robust, clean, and high performance applications in Python / Anand Balachandran Pillai. |
title_full_unstemmed | Software architecture with Python : design and architect highly scalable, robust, clean, and high performance applications in Python / Anand Balachandran Pillai. |
title_short | Software architecture with Python : |
title_sort | software architecture with python design and architect highly scalable robust clean and high performance applications in python |
title_sub | design and architect highly scalable, robust, clean, and high performance applications in Python / |
topic | Software architecture. http://id.loc.gov/authorities/subjects/sh2004001071 Python (Computer program language) http://id.loc.gov/authorities/subjects/sh96008834 Architecture logicielle. Python (Langage de programmation) COMPUTERS / Programming Languages / Python. bisacsh Python (Computer program language) fast Software architecture fast |
topic_facet | Software architecture. Python (Computer program language) Architecture logicielle. Python (Langage de programmation) COMPUTERS / Programming Languages / Python. Software architecture |
url | https://search.ebscohost.com/login.aspx?direct=true&scope=site&db=nlebk&AN=1513359 |
work_keys_str_mv | AT pillaianandbalachandran softwarearchitecturewithpythondesignandarchitecthighlyscalablerobustcleanandhighperformanceapplicationsinpython |