Getting started with microservices and kubernetes
medium.com
medium.com
First, tutorials like this should include getting this running using TLS by default. Ideally there shouldn't be any reference to plain http at all.
Second, the DSL for Kube and Ambassador seem ridiculously complex for this. Maybe some explanation for what "imagePullPolicy: IfNotPresent" means? This kind of configuration harkens back to the myriad of Jboss XML files, just in a different format. For me personally, I get all the reasons why you'd want to use k8s, but for a "getting started" user, seeing this kind of required config -- rather than sensible defaults hidden away -- would get very discouraging. ("Why should I learn this DSL instead of just making sure I had a correct puppet setup?")
I do sometimes think that "Getting started" articles should sometimes be prefaced with a "here's who this isn't for" - particularly with architectures designed for scale not simplicity. I tend to think if you're in a situation that demands microservices, you should already know the tech stuff :-) The hard bit about getting started is really reconfiguring the team.
Modularity is central in MsA; don't like the way this service is designed or something better is available (FaaS) with lower implementation cost than net-new, in-house services.
Keep the Monolith flame burning. They will always have a place.
I disagree, when your little app blows up and your backend dies, then you could very well miss your big break. In this crazy world of overnight success you need to be ready to handle the HN or Reddit hug-of-death.
Maybe you don't need to split your infrastructure into services, but doing so makes scaling a breeze.
https://blog.disqus.com/scaling-django-to-8-billion-page-vie...
How do you get lots of engineers to work on a single monolithic application, while releasing the app into production on a very frequent basis (e.g., daily)?
The traditional answer has been to add complexity into your workflow (e.g., feature freezes, staging environments, code reviews, more testing). These are all reasonable things and good ideas. But at some point your velocity starts to slow down dramatically because of all this complexity.
Worst of all, this complexity isn't necessary for every feature. You might be prototyping some stuff, for example. But a monolithic architecture forces everyone onto the same workflow.
Microservices enables different workflows for different features (services). The value of this, even when you're at a small scale, can be pretty significant.