[almighty] Monorepo

Baiju Muthukadan bmuthuka at redhat.com
Thu Sep 22 05:41:07 UTC 2016


Hi Travis,

On Thu, Sep 22, 2016 at 10:45 AM, Travis Brown <tkbrown at gmail.com> wrote:
[...snip...]
> If the ALMighty project claims to make it easy to go from new
> project (and usually new repo) to production microservice but was in
> turn developed with a model that does not fit the goal it is
> enabling, then we are not eating our own dog food.

I think it's not a good idea to mix Monorepo and Microservices.
Monorepo is all about how we are going to organize source code in a
single repository.  Whereas Microservices is an architectural style.

Martin Fowler describe it this way [1]:

  The microservice architectural style is an approach to developing a
  single application as a suite of small services, each running in its
  own process and communicating with lightweight mechanisms, often an
  HTTP resource API.


> I think the problems favouring a monorepo are possibly the same
> problems this project should help solve.

That's a good thought!

I would like to quote the entire comment by my friend Sajith in FB
post [2]:

  Found Conway's Law to be true in almost all the cases -
  http://www.melconway.com/research/committees.html - "Organizations
  which design systems are constrained to produce designs which are
  copies of the communication structures of these organizations"

  Would one team be responsible for all the microservices or would you
  have multiple small teams, each one with responsibility for a small
  part of the overall system?  Also how would your delivery pipleline
  look like? Would each service have it's own build/test/deploy
  pipeline?

  If you have independent teams owning the services like
  https://gotocon.com/.../KevinGoldsmith..., Netlfix,
  https://sudo.hailoapp.com/.../journey-into-a.../ etc - organizing
  each service as a folder or git submodule brings with it a lot of
  other questions (versioning together, tight coupling)

  The definition of a service, microservice, macroservice,
  mediumservice vary wildly depending on who you talk to these days :)

  Guess it depends a lot on how you slice your services up and how
  that reflects your team structure - The complexity could be either
  in modules or in the interstitial glue.

  If you want to build, test, tag/version and deploy services
  independently, how would a monorepo work?

  Independently deployable services brings with it further complexity
  (discovery, increased surface area for failure etc) - but if your
  team structure supports that, you could rely on tooling to make it
  less painful


[1] http://martinfowler.com/articles/microservices.html
[2] https://www.facebook.com/baijum/posts/10154503962859641

Regards,
Baiju M




More information about the almighty-public mailing list