As a forward thinking engineer, what should I do to stay up with the times? Is it worth my time dockerizing my projects? Should I be using kubernetes when deploying my projects?
As a forward thinking engineer, what should I do to stay up with the times? Is it worth my time dockerizing my projects? Should I be using kubernetes when deploying my projects?
If you're only running a few services it really doesn't make much sense to setup Kubernetes. I setup a small cluster a few weeks ago and it certainly was a lot more involved than I expected. I ended up deciding not to use it, since it didn't really add much (for my use case) and I felt like if anything went wrong I'd be in a world of hurt trying to debug it.
Took a lot more time to setup Kubernetes than my entire current deployment system which uses https://github.com/pressly/sup.
However, dockerizing your projects might not be a bad idea depending on what you're doing. I dockerize a lot of my projects since it makes it super easy to deploy when using the automatic Docker Hub builds. Though I did have a problem where Docker upgraded and make all of my existing containers unrunnable.
I felt like if anything went wrong I'd be in a world of hurt trying to debug it.
This is the part very few k8s aficionados mention: how complicated is it to troubleshoot when something goes wrong?k8s is HA in the same region if you are using GKE. Not really what you can call HA
It's a little hacky as you need to create multiple clusters in each zone/region and then with an anycast IP attached to a Google Cloud Load Balancer.
[0] https://cloudplatform.googleblog.com/2018/06/How-to-deploy-g...
And despite the one-size fits all dogma of some of the kubernetes crowd, there are many solutions to docker deployment and orchestration at different scales, especially if you're looking to retain most of the benefits of Heroku and its PaaS workflow; From the low end there's AWS Elastic Beanstalk multi-docker, flynn.io, docker swarm mode, AWS ECS and logistic sugar on top of that like Remind101/Empire, convox etc., before you get to PaaS-ish kubernetes behemoths like OpenShift or flavours of Cloud Foundry.
PKS is part of PCF, PAS (Application Service) is the new name for the PaaS. The open source foundation has done the same inclusion (CFCR is the container runtime, aka Kubo, the CFAR is the app runtime).
You can think of the Cloud Foundry foundation as focused on marketing and standardizing the application of these open source cloud technologies to business outcomes, whereas the CNCF is more of a tech advocacy foundation that is incubating a wider range of projects, sort of like an aspiring competitor to Apache. They’re complementary and it’s good we are all cooperating.
There are a few initiatives within the CF community to replace Diego with k8s, but it’s not clear there is massive benefit in doing so - definitely some for operators who get more fine grained visibility and control, but the whole point of the PaaS is to enforce constraints and opinions, whereas K8s is much less opinionated. That said the transition will likely happen over the next while. Diego took a couple of years, maybe this will be quicker.
Disclaimer, I’m a pivotal employee speaking for myself
I think the open question for Project Eirini is whether a Cloud Foundry using Kubernetes as the container scheduler would expose it directly to developers. My expectation is that no, it wouldn't do so. Maybe some Kubernetes-land portals might be added (eg, Helm), but I suspect that Dr Julz has in mind to retain the `cf push` experience that's worked so well for so long.
Disclosure: I am also a Pivotal employee. I speak for myself, to myself and at myself pretty much all the time.
i may be generalizing, but it comes down to balancing your software architecture in a way that is quick for you to iterate on now vs scaling out to support an expanding business. there is a comment further up about a monolithic deployment -- great for right now but if his business grows 100x it will be difficult/expensive to scale without significant changes.
starting with the seeds in place can remove a lot of pain later, so things like containers may not be a huge win to you today, you should consider what value they may bring down the road
If you anticipate building systems not as a monolith, look at Functions-as-a-Service.
I'm in the FaaS camp for forward thinking work, and wrote up a bunch of my experiences here: https://github.com/nzoschke/gofaas
Personally I think knowing something about Docker/containers is a good plan, useful for testing on-laptop dev etc, however kubernetes is a fairly complex system and if you don't need it, and you're happy with your current process, I wouldn't rush to it.
I would read up on Docker though. Having your apps in docker does provide some nice benefits like better isolation, keeps you up with newer tech and you can then easily integrate with Kubernetes. It's also rather relatively easy to achieve.
Yes. Based solely on your desire to be on top of tech and given the broad adoption by every major provider, you probably want to invest at least a couple of days.
That doesn't mean there is any impetus to transition your current production, only that it is most definitely worth a cursory understanding for the future.