Home Page Icon
Home Page
Table of Contents for
Python Microservices Development
Close
Python Microservices Development
by Tarek Ziadé
Python Microservices Development
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
Errata
Piracy
Questions
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
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
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
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
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
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
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
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
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
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
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
What Next?
Iterators and generators
Coroutines
The asyncio library
The aiohttp framework
Sanic
Asynchronous versus synchronous
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Next
Next Chapter
Title Page
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset