Last month at the Sydney Microservices Meetup, the Meetup’s organiser, Yamen Sader, presented a great talk on “A Microservices Reference Architecture“.
My own talk on the night, which was a case study about the evolution of microservices at Tyro Payments, laid out many examples of practices and tools we’ve used, but left it for people to either follow or ignore what we’ve done as they feel led. Yamen’s talk, on the other hand, was deliberately prescriptive, describing by the end what he obviously considers to be a widely-applicable framework – a “microservice platform in a box”, if you will. (He also ranked the importance of his suggestions based on a hilarious scale of Seinfeld characters, so he could recommended some ideas more strongly than others.)
Is a Microservices PaaS In Our Future?
Yamen’s talk, as well as being really interesting, left me wondering about the future of microservices development. In particular, it had me wondering whether, at some point in the near future, we’ll see a Microservices Platform as a Service, or MSA-PaaS. I’m now thinking…
- Will some enterprising young men & women take something like the architecture he described and turn it into a template that can be stamped across a bunch of cloud servers with nothing more than the push of a button and the entering of a credit card number?
- Could development teams of the future start building a microservice-based system simply by pressing the “Spin Up A New System” button, then coding the business logic of the first service and pushing it to Production by the end of the day?
- Could someone make a business out of offering that?
- Is someone already DOING this?!
Is a Microservices PaaS even possible?
Now I imagine someone might say that the scope of solutions that can be labelled “microservices” is too wide and varied to allow such a template to be broadly applicable. However, I think the PaaS world has already proven that a heavily-prescriptive solution can gain popularity, then reach broader appeal as time progresses by bolting more options onto the existing infrastructure in response to market demand.
While vendors like AWS (more of an IaaS) offer a simple virtual Linux box on which to run anything you like, other ventures have started off very prescriptive. Take for example Heroku, which originally only offered Ruby apps running on Rack and PostgreSQL, but now has more “Add-Ons” available than my phone has apps. One of the biggest competitors in PaaS, Google App Engine, started by offering Python as the only language, with data stored in their proprietary, BigTable-inspired, ingeniously-named “Datastore”. But they now also offer Java, PHP and Go as languages, MySQL and “Cloud Storage” as additional storage options, and the option of bolting on a whole stack of other languages and managed technologies if you want to connect up to their Compute Engine.
Both of these, like many other successful PaaS players, and AWS to an extent, have rolled out more varied options as the business has proved itself. Could a microservices PaaS take the same route, offering restrictive but sensible defaults to start with, and adding optional extras as the money starts to roll in?
Could a Microservices PaaS be quite close?
If this is going to happen, is it a long way away or will it happen some time soon?
In the corner of the technology world that I spend the most time in – that of the JVM – tools like Dropwizard and Spring Boot are already appearing as the building blocks out of which an opinionated microservices PaaS might be based. These are the push-button solutions for starting up a single service quickly. Then there are also bigger packages appearing, like Spring Cloud, which seems like it’s trying to be an architecture (or the majority of one) out of the box, and CloudFoundry, an open-source PaaS in a box, with a commercial instance running as a service on Pivotal Web Services.
It’s not hard to see how it might be a small step for someone to marry these technologies with some of the products already offered by Amazon, Heroku or Google AppEngine to spin up a whole architecture for you. In fact, I had a conversation last week with a developer friend who is having a break from work and is using some of his spare time to develop a microservices architecture in a box (though he didn’t call it that) for the benefit of his own future projects. So there are all kinds of people nibbling their way towards this concept as we speak, whether they know it or not.
No one is there yet, though. You can google for “Microservices PaaS” and you’ll get a lot of videos and blogs about running microservices on PaaS systems, but no one offering what I’m dreaming about here.
I think this offering will come. I also think it’s most likely to appear not from a new player, but from someone already in this space deciding to add a “Spin up this template architecture” feature to their existing PaaS. As someone who would much rather be writing software than installing web servers or configuring firewalls, I’m very much looking forward to that.
Want to learn more?
Image credit: facebook-datacenter-tecnomovida by Tecnomovida Caracas
Hi Graham. Interesting article. Do you mean something like Giant Swarm?
I’m not in any way affiliated with them, but came across their product recently.
Hey, Andrew. Thanks heaps for the pointer. That looks really interesting. They’re certainly flogging themselves as a Microservices PaaS.
Having read a bit of the documentation (http://docs.giantswarm.io/what-is-giant-swarm/), it seems to me like it’s really more of a Docker PaaS. There’s no particular help to assist me in constructing good microservices, so in terms of setting me up with an architecture it stops at “You’ve got Docker!” and everything above that is up to me.
I think these folks are probably very well-placed, though, to provide a template microservices architecture that deploys onto their platform easily.
Yeah – I tend to agree with you having also read the docs.
Feels more like they’re just saying “you can use us for microservices if you want to” rather than it being a platform built specifically around microservice conventions.
Hi Graham, your blog post matches with what we are doing quite a lot. I like!
You say Giant Swarm looks like a Docker PaaS. What are the things you would like to have from a Microservice PaaS? What would make the difference for you?
We’ve already implemented transparent service discovery that acts like Docker links on a single machine. This is done by a reverse proxy that also acts as a loadbalancer. We also resolve service dependencies and startup containers in the desired order across hosts. Metrics and logging are not yet there.
The main thing I don’t like the PaaS term is that it’s always means it’s opinionated. I think it should be easy in the beginning but if the out-of-the-box solution doesn’t fit any more we don’t want to stand in the way of our users. So if you have a reason to collect your own metrics, run a different service discovery you can still do this on Giant Swarm.
Thanks for reading the blog! And thanks for the thoughtful questions.
Sorry about the delayed response, but they got me thinking and I ended up writing another blog to answer your main question:
Pingback: What would a Microservices PaaS Design Look Like? - Evolvable Me