In this thought-provoking session at mucon London 2018, the dialogue revolves around the foundational premise that microservices should be embraced from the inception of a project, irrespective of the organization's size, from startups to established enterprises. The discussion opens with a candid acknowledgment of the inherent challenges in software engineering across the board, probing into the reasons behind the perceived complexity of software development, our collective penchant for perfection, and the frequent overemphasis on process over product.
The narrative then shifts to a more philosophical perspective, positioning microservices as the optimal intersection of psychological comfort and engineering pragmatism, conceptualized as units of quality, trust, and business logic encapsulation. This conceptual framework underpins a series of tactical recommendations, advocating for a message-centric approach to system design, where the delineation between monoliths, microservices, and serverless architectures blurs in favor of seamless communication and interoperability.
Practical advice is offered on tackling the 'general case' in system design, encouraging the development of specialized services for outlier scenarios and promoting adaptability to change. However, this approach is not without its trade-offs, sparking a debate on the merits and pitfalls of repository strategies and the double-edged sword that is Kubernetes, juxtaposed against the benefits such as finely segmented technical debt, deferred decision-making, and the capacity to scale rapidly without extensive cross-team coordination.
The session concludes on a reflective note, inviting attendees to explore further resources such as senecajs.org and "The Tao of Microservices", leaving the audience with a nuanced understanding of microservices as not just a technological choice, but a strategic framework for building resilient, adaptable, and business-aligned software ecosystems.
6. Requirements
๏ a) capture user details
๏ b) send confirmation email
Messages
๏ a) register-user: {name: ..., email: ...}
๏ b) confirm-email: {email: ...}
7. Requirements
๏ a) capture user details
๏ b) send confirmation email
Messages
๏ a) register-user: {name: ..., email: ...}
๏ b) confirm-email: {email: ...}
Services
๏ registration sends register-user to user
๏ user sends confirm-email to mailer
17. Let's build a Search Engine
for Node.js modules...
Business Requirements:
๏ a) search for Node.js modules
๏ b) index published Node.js modules
๏ c) show Node.js module details
18.
19.
20. Requirements
๏ a) search for Node.js modules
Messages
๏ role:search,cmd:search (sync+consume)
Services
๏ web sends role:search,cmd:search to
search
22. Requirements
๏ b) index published Node.js modules
Messages
๏ role:search,cmd:insert (async+observe)
Services
๏ npm sends role:search,cmd:insert to
search
26. Requirements
๏ c) show Node.js module details
Messages
๏ role:info,need:part (async+observe)
๏ role:info,collect:part (async+observe)
Services
๏ info sends role:info,need:part to npm,
github
๏ npm, github send role:info,collect:part to
info