canonical-ci-engineering team mailing list archive
-
canonical-ci-engineering team
-
Mailing list archive
-
Message #01042
Micro-services and testing
Hello team,
Last week in the sprint wrap-up meetings we discussed various proposals for
testing micro-services. I think we decided that the idea that
"micro-services don't need unit tests" is incorrect. I've put together a
short document that outlines a sensible middle ground between the above
idea and "zomg test all the things". Let me know what you think:
https://docs.google.com/document/d/10WL6R0mzoUWSJ8gKHI1Bmhr4fWzK6RRPkYMiE2kuI_g/edit#
In slightly related news, I've had this thought rattling around my head for
the last few weeks, but have failed to communicate it verbally - let me try
in writing:
- When writing software to solve a problem, there's a certain level of
irreducible complexity involved. The problem we're trying to solve dictates
the minimum complexity required.
- Using micro-services as an architecture allows us to spread that
complexity out into several services and code-bases. For example, instead
of having the adt-cloud-worker deal with finding the correct cloud image
for a given series & architecture, we can split that off into a separate
service. (similar to how we split distinct problems into separate classes
or functions when designing monolithic software)
- ...However, no matter how you spread it around, you haven't removed
that complexity, you've just moved it into a separate codebase.
- ...furthermore, there is a cost associated with increasing the number
of services - the complexity of your communication network grows.
To quote Evan: "I fucking love micro-services" - I really do. I think the
benefits outweigh the costs, but I also think it's important not to view
micro-services as a panacea for all ailments, otherwise we'll end up like
these people <https://www.gnu.org/software/hurd/hurd.html>.
My brain works in abstractions (I guess that's a common trait of engineers)
- to me I see the "micro-services vs monolithic applications" debate as a
detail of deployment: when it comes down to it, they're both just software
built with a message-passing architecture...
Cheers,
--
Thomi Richards
thomi.richards@xxxxxxxxxxxxx
Follow ups