← Back to team overview

canonical-ci-engineering team mailing list archive

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