This blogpost is inspired by several blogposts about microservices and it is based on the blogpost [REF1] “Architecting #cloud-friendly application architecture #apparch (inspired by #microservices)” http://improving-bpm-systems.blogspot.ch/2015/04/architecting-cloud-friendly-application.html
See also the previous blogposts of “Beauty of #microservices” series
- “Beauty of #microservices: part 1 #entarch #apparch” http://improving-bpm-systems.blogspot.ch/2015/05/beauty-of-microservices-part-1-entarch.html
- “Beauty of #microservices: part 2 architecting for change” http://improving-bpm-systems.blogspot.ch/2015/05/beauty-of-microservices-part-2.html
- “Beauty of #microservices: part 3 employ #BPM to tame the service granularly beast” http://improving-bpm-systems.blogspot.ch/2016/08/beauty-of-microservices-part-3-employ.html
- “Beauty of #microservices: part 4 from agile development to agility of enterprise systems” http://improving-bpm-systems.blogspot.ch/2016/08/beauty-of-microservices-part-4-from.html
- “Beauty of #microservices: part 5 defragmentation of enterprise data model” http://improving-bpm-systems.blogspot.ch/2016/09/beauty-of-microservices-part-5.html
- “Beauty of #microservices: part 6 managing state is a teamwork http://improving-bpm-systems.blogspot.ch/2016/09/beauty-of-microservices-part-6-managing.html
- “Beauty of #microservices: part 6 managing breaking the monolith” http://improving-bpm-systems.blogspot.ch/2016/09/beauty-of-microservices-part-7-breaking.html
2 Importance of containers for microservices
This blogpost is inspired by two comments to my blogpost about microservices:
- Igor Topalov “microservices shall be considered in conjunction with containers”
- Bogdan Năforniţă “considering transactions moves us away from the concept of ‘smart endpoints, dumb pipes’”
I used several types of nested primitive containers:
generic – JVM on top of any popular OS (experience in programming of portable software helped);
language-specific – Jython on top of JVM to run small Python programs, and
specialised – particular environment on top of Jython on top of JVM; this environment considerably simplified the development of automation and integration functionality.
With each nested container, my microservices became more functional and easier to evolve. Finally, each of them was as small text fragments stored in a source version control tool; they were loaded into containers dynamically (at the run-time) and they could dynamically load some modules. Devops was minimal.
- Keep pipes dumb (no logic!).
- Create your own smart containers (maximum housekeeping and specialisation) from some standard ones.
- Help your microservices be functionally minimalistic (thus simplify the life of your software developers).