Making friendly-microservices
-
Upload
michele-titolo -
Category
Software
-
view
581 -
download
1
Transcript of Making friendly-microservices
![Page 1: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/1.jpg)
Making Friendly Microservices
Michele TitoloLead Software Engineer, Capital One
![Page 2: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/2.jpg)
Definition:/microservice/Small service that does one thing wellIndependentOwns its own data
![Page 3: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/3.jpg)
Definition:/friendly/Helpful An allyKindEasy to use, understandAble to coexist without causing harm
![Page 4: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/4.jpg)
What Makes A Microservice…Helpful, An Ally, Kind, Easy to Use, Able to Coexist
![Page 5: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/5.jpg)
Why?
![Page 6: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/6.jpg)
Helpful
![Page 7: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/7.jpg)
Documentation Documentation Documentation
![Page 8: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/8.jpg)
Version And Revision HistoryHistorical record of when things changed and why
![Page 9: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/9.jpg)
Live Documentation
![Page 10: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/10.jpg)
Document Dependencies
![Page 11: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/11.jpg)
![Page 12: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/12.jpg)
Create A Dependency Graph
![Page 13: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/13.jpg)
Autogenerate Documentation
![Page 14: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/14.jpg)
ToolsOpen API Specification/SwaggerAPIBlueprintRAML
![Page 15: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/15.jpg)
Open Api Spec
![Page 16: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/16.jpg)
Api Blueprint
![Page 17: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/17.jpg)
RAML
![Page 18: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/18.jpg)
Ally
![Page 19: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/19.jpg)
Integrate Monitoring Tools
![Page 20: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/20.jpg)
Log All The ThingsUse unique request IDs so logs are easier to sort through
![Page 21: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/21.jpg)
Avoid Playing Red Light Green Light
![Page 22: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/22.jpg)
What Happens When A Dependency Fails?
![Page 23: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/23.jpg)
Hint: Your Service Should Not Go Down
![Page 24: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/24.jpg)
Macro DependenciesMicro Dependencies
![Page 25: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/25.jpg)
Help Identify Bottlenecks Before They Happen
![Page 26: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/26.jpg)
Communication
![Page 27: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/27.jpg)
Gather Data
![Page 28: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/28.jpg)
ToolsDockerAtlasZipkin
![Page 29: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/29.jpg)
Docker
![Page 30: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/30.jpg)
Atlas
![Page 31: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/31.jpg)
Zipkin
![Page 32: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/32.jpg)
Kind
![Page 33: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/33.jpg)
Make Your Service Easy To Deploy And Scale
![Page 34: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/34.jpg)
Consumers Should Be Able To Hit The API Directly In A Non-Prod Environment
![Page 35: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/35.jpg)
Consistent Error Messaging
![Page 36: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/36.jpg)
HTTP/1.1 206 Partial Content
![Page 37: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/37.jpg)
Do Not Make Others Setup A Development Environment To Troubleshoot Issues
![Page 38: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/38.jpg)
ToolsDockerJenkinsCapistrano
![Page 39: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/39.jpg)
Docker
![Page 40: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/40.jpg)
ContainersEach service should stand aloneUse docker-compose for dependencies Swarm and Scale
![Page 41: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/41.jpg)
Use Containers For Local Development
![Page 42: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/42.jpg)
Jenkins
![Page 43: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/43.jpg)
Capistrano
![Page 44: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/44.jpg)
Easy To Use
![Page 45: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/45.jpg)
Use One Base URL For Everything
![Page 46: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/46.jpg)
Use An API Gateway Or Load Balancer To Route API Calls
![Page 47: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/47.jpg)
Be Security Conscious
![Page 48: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/48.jpg)
Cookie SecurityDon’t use wildcardsAlways use HTTPS and SecureSet correct domain
![Page 49: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/49.jpg)
Mobile SecuritySSL Certificate Pinning
![Page 50: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/50.jpg)
ToolsDockerZuulNGINIXHAProxy
![Page 51: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/51.jpg)
Docker
![Page 52: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/52.jpg)
Zuul
![Page 53: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/53.jpg)
NGINIX
![Page 54: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/54.jpg)
HAProxy
![Page 55: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/55.jpg)
Coexist
![Page 56: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/56.jpg)
Consistency Conventions
![Page 57: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/57.jpg)
How Does Your Service Fit In With The Rest?
![Page 58: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/58.jpg)
Services Need To Work Together
![Page 59: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/59.jpg)
Don’t Take Single Responsibility Too Far
![Page 60: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/60.jpg)
![Page 61: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/61.jpg)
Assumptions
![Page 62: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/62.jpg)
Tools
![Page 63: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/63.jpg)
Microservice Discovery
![Page 64: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/64.jpg)
API Discovery
![Page 65: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/65.jpg)
![Page 66: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/66.jpg)
The Friendly MicroserviceHelpful DocumentationBuilt With Monitoring And Troubleshooting In MindEasily DeployableEasy To ConsumeCoexists With Established Conventions
![Page 67: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/67.jpg)
Thank you!@micheletitolo
![Page 68: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/68.jpg)
Resources• https://opencredo.com/rest-api-tooling-review/
• http://www.capitalone.io/blog/delivering-microservices-for-enterprise-with-devops/
• https://medium.com/capital-one-developers/mobile-orchestration-innovation-on-the-edge-9835e4cbd69e#.vpbsiyqmq
• http://swagger.io/open-source-integrations/
• https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
• https://www.owasp.org/index.php/Testing_for_cookies_attributes_(OTG-SESS-002)
• http://www.onegeek.com.au/articles/waiting-for-dependencies-in-docker-compose
• http://techblog.netflix.com/2014/12/introducing-atlas-netflixs-primary.html
• https://github.com/justone/dockviz
![Page 69: Making friendly-microservices](https://reader035.fdocuments.us/reader035/viewer/2022062822/587d37c21a28ab2a448b63d3/html5/thumbnails/69.jpg)
Photo Credits• https://unsplash.com/photos/h13Y8vyIXNU
• https://unsplash.com/collections/380/petunia-the-pug
• https://www.flickr.com/photos/32179495@N04/21211072432/
• https://www.flickr.com/photos/78134717@N08/7154609638
• https://www.flickr.com/photos/33622296@N04/5870006633/
• https://www.flickr.com/photos/7255089@N05/5415983081
• https://www.flickr.com/photos/95477820@N02/8730925814
• https://www.flickr.com/photos/35137530@N00/16406998986/