How to Identify you are not using Microservice Architecture

posted Nov 28, 2015, 1:24 PM by Rick Hightower   [ updated Nov 28, 2015, 1:26 PM ]

How to Identify you are not using Microservice Architecture.

Assume everyone starts with 100 points.

Everyone loses ten points for each assertion that is true. 

Not using Microservices hit list

  1. You don’t deploy to production more than once a month
  2. You always have to deploy a release chain of services
  3. You deploy multiple EAR or WAR files to the same Java EE container
  4. You make a blocking call to another service while servicing requests to your service 
  5. You make a blocking call to a database while servicing requests to your service
  6. Your service has more than 20 classes
  7. You share a database between more than one set of services or applications 
  8. You don’t deploy to a containerized or virtualized environment
  9. You don’t utilize service discovery
  10. You can have cascading failures
  11. You don’t implement circuit breakers and are not fault tolerant
  12. You don’t use async calls 
  13. You use more than 200 threads in a single service
  14. You don’t monitor health status of your services 
  15. You don't monitor statistics of your services
  16. You don’t have distributed logging
  17. You don’t use HTTP and JSON
  18. You don't use messaging
  19. Documentation for your services do not include curl commands
  20. You use WSDL
  21. You use XML as a transport
  22. You use an ESB 
  23. You use BPEL
  24. You use EAR and WAR files
  25. You use a Java EE container

If your score is below 70%, you are not using Microservices Architecture.

Microservices should be:

  1. Quickly deployable
  2. Deployed often
  3. Small
  4. Monitored: health, distributed logging, statistics
  5. Use Service Discovery to find other services
  6. Use async communication
  7. Prevent cascading failure and be fault tolerant
  8. Use web technologies like JSON, HTTP, WebSocket or messaging
Being async, using service discovery, preventing cascading failures, and being fault tolerant are all part of Reactive Microservices.

Read more about the history of microservices, how it is different from SOA, and just what are Microservices.