Successfully reported this slideshow.
Your SlideShare is downloading. ×

Real world microservice architecture

Ad

1
Real-world Microservice Architecture
by Viacheslav Poturaev

Ad

2
Why microservices?
• Separating	development/releases	
• Decentralized	data	management	
• Testability	
• Scalability

Ad

3
Separating development/releases
Big
PHP
Monolith
Team
Team
Team
TeamTeam
Nice
PHP
App
GO
API
GO
API
GO
API
GO
API
GO
API...

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Loading in …3
×

Check these out next

1 of 20 Ad
1 of 20 Ad
Advertisement

More Related Content

Similar to Real world microservice architecture (20)

Advertisement

Real world microservice architecture

  1. 1. 1 Real-world Microservice Architecture by Viacheslav Poturaev
  2. 2. 2 Why microservices? • Separating development/releases • Decentralized data management • Testability • Scalability
  3. 3. 3 Separating development/releases Big PHP Monolith Team Team Team TeamTeam Nice PHP App GO API GO API GO API GO API GO API GO API Team Team Team TeamTeam Team Shared libs and clients Hundreds of devs Single app repo Hundreds commits dailyTens of tickets in release Many conflicts Multiple app reposSmall releases Few conflicts Reliable deliveryOwn roadmap and schedule
  4. 4. 4 Why microservices? • Separating development/releases • Decentralized data management • Testability • Scalability
  5. 5. DB DB DB DB Big DB 5 Decentralized data management Big PHP Monolith Team Team Team TeamTeam Nice PHP App GO API GO API GO API GO API GO API GO API Team Team Team TeamTeam Team Shared libs and clients Hundreds of devs Single all-purpose DB cluster Every service has own storage Hard to scaleLots of data Easy to join data Loose data ownership Hard to join data Strict data ownership Less data Easier to scale
  6. 6. 6 Why microservices? • Separating development/releases • Decentralized data management • Testability • Scalability
  7. 7. 7 Testability Big PHP Monolith Team Team Team TeamTeam Nice PHP App GO API GO API GO API GO API GO API GO API Team Team Team TeamTeam Team Shared libs and clients Hundreds of devs Domain isolation Manual regression testingMany interferences No interferences API level contract Reliable automated tests Obscure internal relations
  8. 8. 8 Why microservices? • Separating development/releases • Decentralized data management • Testability • Scalability Low coupling and complexity Decentralized governance Small and simple
  9. 9. 9 Development •Extract monolith features 
 as microservices •Expose API spec/docs •Strong typing client libs
 for communication •Service is implemented 
 on top of reusable framework •Infrastructure (cache, db, etc)
 is unified, accessed with 
 shared libs •Each service has own roadmap
 and schedule •Automated Semantic Versioning Service Auto-generated client libs API spec/docs Resources of unified infrastructure Developers Shared libs High-level framework
  10. 10. 10 Quality Assurance •Unit tests in services and shared libs •No unit tests for autogenerated client libs •Handler level integration tests with mocked external dependencies •Multi-service integration tests (valid external dependencies) Automated Manual • Regression test for large-scale changes
  11. 11. 11 Conventions over configuration LZD SOA manager Unified environment Makefile targets Logging format Health checks swagger.json Profiling interface Discovery unregister Monitoring metrics Tracing headers
  12. 12. 12 Deployment Legacy Provisioning Configuration Deployment
  13. 13. 13 Transport • Protocol • JSON • REST • JSON-RPC • Binary • gRPC • Round-robin P2P and load balancers • Dynamic nodes list High compatibility High performance Human-readable Non human-readable Less traffic More traffic Avg performance Lower compatibility
  14. 14. 14 Discovery Register itself Watch list of nodes P2P LZD SOA manager
  15. 15. 15 Configuration app.ini.sed app.tpl app.ini credentials.yaml config.yaml etcdupdater Legacy Dynamic configuration Command line and ENV arguments LZD SOA manager
  16. 16. 16 Tracing and debugging Tracer tool Client X-LZD-TraceId Logs Storage Access Log Debug Log X-LZD-ForceDebug TraceId | Message
  17. 17. 17 Logging Convention-formatted logs Search and analytics UI
  18. 18. 18 Monitoring /metrics /metrics Ninjas on duty Alert Manager LZD SOA manager
  19. 19. 19 Microservices help us to Support Optimize Increase Improve fast business growth tech team efforts and efficiency reliability of new features delivery transparency of the whole system
  20. 20. 20 Join the team! 26 nationalities GO / Java / PHP 220 Employees Hackathons Happy FridaysTech Talks Training Programs Technology Driven Company Questions?

×