● modularity a step towards clean architecture
● single responsibility principle SOLID app!
● distributed deployment model scalable app!
● full isolation of:
○ teams and backlogs bye 30-min meetings!
○ versioning CI increments it when needed
○ repositories a repo per module is faultless
○ documentation small separated docs
○ CI servers concurrent build of everything
○ hardware isolation of JVMs and instances
Benefits of Microservices
● Independent of languages true polyglot programming
● Independent of frameworks choose best for purpose
● Independent of datasources SQL, NoSQL, files, streams
● Independent of other microservices except contracts
● Independent of UI frontend guys don't even know you
● Asynchronous speed up your system X times
● Observable monitoring, logging, tracing
● Testable embraces automated testing
● Server-side query engine greatly enriches plain REST
● CQRS segregation supports queries and mutations
● Sync/async execution even better in GraphQL 5.0
● Schema as documentation yet another doc for your API
● Fault-tolerance with fallback no more cascading failures
● Repeatable commands configurable
● Sync/async/reactive execution thanks to RxJava!
● Latency metrics for each call
● Web dashboard see problems on circuits instantly
● Cross-language support
● Lightweight serialization
● Binary protocols
+ Transparent logging unique request ID across the system
+ All services have logs from API Gateway to DB workers
+ 2K requests/sec ~10K log entries per second
+ Automated request logging on every Hystrix call
Monitoring and tracing
+ Hystrix metrics and healtchecks built-in
+ Dropwizard metrics and healthchecks built-in
+ Brave/Zipkin tracing request timespans
+ Metrix from JVM threads, GC, memory, NIO buffers etc.
+ Custom endpoints /ping, /properties etc.
+ AWS monitoring Cloudwatch, RDS, Asgard etc.
+ 3rd party monitoring Kafka/Hermes, RMQ, Icinga,
● Source configuration files
● Jenkins configurations for
build & deployment
● Git repos for dynamic settings
● Endpoints to rewrite dynamic
● API unit- and IT tests JUnit/Mockito/TestNG
● API load testing JMeter
● API regression testing Chakram JS
● Manual testing
1GraphQL API Doc 2Swagger UI Doc