easily developed based on their individual functionality. • Independent Deployment – Based on their services, they can be individually deployed in any application. • Fault Isolation – Even if one service of the application does not work, the system still continues to function. • Mixed Technology Stack – Different languages and technologies can be used to build different services of the same application. • Granular Scaling – Individual components can scale as per need, there is no need to scale all components together.
look at this : https://github.com/sqshq/piggymetrics • Formed two teams of 6 people to “learn” microservices • We used: • Spring Boot • Eureka • Config Service • ELK • API gateway • Identity server • Kafka • Rancher • Simple CI/CD pipelines • Running ON PREMISE (PROD) • AWS for DEV • We designed the system with a lot of events • Almost everything runs on docker
on cloud and production on premise is a big problem. • Infrastructure provisioning • Security • CI/CD • …. • Quality is not good, we were focus on delivery more than quality • Frontend teams complained about the contract changes… • Core services are not stable • Security requirements are coming… • More services mean more bug and “conflicts” • Deployment time increase with the number of services
production on-premise just does not work! • Business, senior managers and PMs need to understand and support the team(quality matter!) • Devops and automation • Team structure is not optimized for microservices (Conwey’s law) • Delivery over Engineering • Everything run on docker • Lack of security • Trouble shooting is extremely time cosumming • Operation was not consider as important as it should (DR, No down time deployment…)
infrastructure as code) • Technical skillset (bash, CI/CD, cloud, languages flexibility) • Automation testing • Use managed services when possible e.g. use RDS instead of setting up your own DB cluster… • Full CI/CD, no manual deployment, minimize human mistakes • Design for failure • Run services not build services
• Change is the only constant, prepare for that • Security built-in to the CI/CD pipelines • Deploy heavy services on host for better performance • Monitoring goes first • Services versioning • Blue/Green, Canary release
don’t have that much users • Have not prepared tooling, skillset as well as support from top managers • Have not really seen the benefit of microservices link to your business • It is okay to do SOA if you have a good level of testing, CI/CD and engineering practices • YES • You have a large number of customers • Your services need to scale significantly • You have all the tooling and skillset required • Support and understanding from top managers