logo资料库

Python Microservices Development (True PDF)-Packt Publishing(201....pdf

第1页 / 共334页
第2页 / 共334页
第3页 / 共334页
第4页 / 共334页
第5页 / 共334页
第6页 / 共334页
第7页 / 共334页
第8页 / 共334页
资料共334页,剩余部分请下载后查看
Cover
Copyright
Credits
About the Author
About the Reviewer
www.PacktPub.com
Customer Feedback
Table of Contents
Preface
Introduction
Chapter 1: Understanding Microservices
Origins of Service-Oriented Architecture
The monolithic approach
The microservice approach
Microservice benefits
Separation of concerns
Smaller projects
Scaling and deployment
Microservices pitfalls
Illogical splitting
More network interactions
Data storing and sharing
Compatibility issues
Testing
Implementing microservices with Python
The WSGI standard
Greenlet and Gevent
Twisted and Tornado
asyncio
Language performances
Summary
Chapter 2: Discovering Flask
Which Python?
How Flask handles requests
Routing
Variables and converters
The url_for function
Request
Response
Flask built-in features
The session object
Globals
Signals
Extensions and middlewares
Templates
Configuration
Blueprints
Error handling and debugging
Custom error handler
The debug mode
A microservice skeleton
Summary
Chapter 3: Coding, Testing, and Documenting - the Virtuous Cycle
Different kinds of tests
Unit tests
Functional tests
Integration tests
Load tests
End-to-end tests
Using WebTest
Using pytest and Tox
Developer documentation
Continuous Integration
Travis-CI
ReadTheDocs
Coveralls
Summary
Chapter 4: Designing Runnerly
The Runnerly application
User stories
Monolithic design
Model
View and Template
Background tasks
Strava token
Authentication and authorization
Putting together the monolithic design
Splitting the monolith
Data Service
Using Open API 2.0
More splitting
Summary
Chapter 5: Interacting with Other Services
Synchronous calls
Using Session in a Flask app
Connection pooling
HTTP cache headers
Improving data transfer
GZIP compression
Binary payloads
Putting it together
Asynchronous calls
Task queues
Topic queues
Publish/subscribe
RPC over AMQP
Putting it together
Testing
Mocking synchronous calls
Mocking asynchronous calls
Mocking Celery
Mocking other asynchronous calls
Summary
Chapter 6: Monitoring Your Services
Centralizing logs
Setting up Graylog
Sending logs to Graylog
Adding extra fields
Performance metrics
System metrics
Code metrics
Web server metrics
Summary
Chapter 7: Securing Your Services
The OAuth2 protocol
Token-based authentication
The JWT standard
PyJWT
X.509 certificate-based authentication
The TokenDealer microservice
The POST/oauth/token implementation
Using TokenDealer
Web application firewall
OpenResty - Lua and nginx
Rate and concurrency limiting
Other OpenResty features
Securing your code
Asserting incoming data
Limiting your application scope
Using Bandit linter
Summary
Chapter 8: Bringing It All Together
Building a ReactJS dashboard
The JSX syntax
React components
ReactJS and Flask
Using Bower, npm, and Babel
Cross-origin resource sharing
Authentication and authorization
Interacting with Data Service
Getting the Strava token
JavaScript authentication
Summary
Chapter 9: Packaging and Running Runnerly
The packaging toolchain
A few definitions
Packaging
The setup.py file
The requirements.txt file
The MANIFEST.in file
Versioning
Releasing
Distributing
Running all microservices
Process management
Summary
Chapter 10: Containerized Services
What is Docker?
Docker 101
Running Flask in Docker
The full stack - OpenResty, Circus and Flask
OpenResty
Circus
Docker-based deployments
Docker Compose
Introduction to Clustering and Provisioning
Summary
Chapter 11: Deploying on AWS
AWS overview
Routing - Route53, ELB, and AutoScaling
Execution - EC2 and Lambda
Storage - EBS, S3, RDS, ElasticCache, and CloudFront
Messaging - SES, SQS, and SNS
Simple Email Service (SES)
Simple Queue Service (SQS)
Simple Notification Service (SNS)
Provisioning and deployment - CloudFormation and ECS
Deploying on AWS - the basics
Setting up your AWS account
Deploying on EC2 with CoreOS
Deploying with ECS
Route53
Summary
Chapter 12: What Next?
Iterators and generators
Coroutines
The asyncio library
The aiohttp framework
Sanic
Asynchronous versus synchronous
Summary
Index
Humble bundle_CDP.pdf
Table of Contents
Test
Index
Python Microservices Development Build, test, deploy, and scale microservices in Python Tarek Ziadé BIRMINGHAM - MUMBAI
Python Microservices Development Copyright © 2017 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: July 2017 Production reference: 1210717 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78588-111-4 www.packtpub.com
Credits Author Tarek Ziadé Copy Editor Sonia Mathur Reviewer William Kahn-Greene Project Coordinator Vaidehi Sawant Commissioning Editor Aaron Lazar Proofreader Safis Editing Acquisition Editor Chaitanya Nair Indexer Mariammal Chettiyar Content Development Editor Rohit Kumar Singh Graphics Jason Monteiro Technical Editor Pavan Ramchandani Production Coordinator Nilesh Mohite
About the Author Tarek Ziadé is a Python developer, located in the countryside near Dijon, France. He works at Mozilla in the services team. He founded a French Python user group called Afpy, and he has written several books about Python in French and English. When he is not hacking on his computer or hanging out with his family, he's spending time between his two passions, running and playing the trumpet. You can visit his personal blog (Fetchez le Python) and follow him on Twitter (@tarek_ziade). You can also take a look at one of his books on Amazon, Expert Python Programming, published by Packt. I would like to thank the Packt team for their help, and the following hackers who helped me: Stéfane Fermigier, William Kahn-Greene, Chris Kolosiwsky, Julien Vehent, and Ryan Kelly. I would also like to thank Amina, Milo, Suki, and Freya for their love and patience. I hope you will enjoy this book as much as I’ve enjoyed writing it!
About the Reviewer William Kahn-Greene has been writing Python and building applications on the web since the late 90s. He works in the crash-stats group on the crash ingestion pipeline at Mozilla and also maintains a variety of Python libraries, including bleach. When he’s waiting for CI to test his code changes, he’s building things with wood, tending to his tomato plant, and cooking for four.
www.PacktPub.com For support files and downloads related to your book, please visit www.PacktPub.com. Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at service@packtpub.com for more details. At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBook. h t t p s ://w w w . p a c k t p u b . c o m /m a p t Get the most in-demand software skills with Mapt. Mapt gives you full access to all Packt books and video courses, as well as industry-leading tools to help you plan your personal development and advance your career. Why subscribe? Fully searchable across every book published by Packt Copy and paste, print, and bookmark content On demand and accessible via a web browser
分享到:
收藏