4 ms·
I agree against microservices where they aren't in real need, and that a single database can go along way if well designed, since ram today is abundant everywhe
by LoSboccacc 6y ago
I agree against microservices where they aren't in real need, and that a single database can go along way if well designed, since ram today is abundant everywhere and stuff like moving indexes on dedicated disks with dedicated iops is as easy as ever. but why the hate against kubernetes?
even your bog standard java three tier app gets some tangible benefit from being dockerized (repeatability, whole os image versioning) and placed in a node that abstract everything else (load balancing, routing, rolling deployments etc)
at the lowest level, it's just a descriptor for infrastructure, it impacts nothing of your app or business logic unless you want it to.
even single node testing environments are covered one way or another (my fav now is minikube), the only real limit is one having a requirement for self hosting.
- valenterry 6y ago> but why the hate against kubernetes? You seem to equate kubernetes and containerization. Kubernetes is just too complex for most usecases, that's all. There are simpler solutions (in the sense of less powerful) that still allow using containers and scale-out but are less maintenance.
- LoSboccacc 6y agoyou need something to run the containers anyway, and with all the management overhead docker and other systems adds, one can just cut the chase and let an orchestrator do it
- valenterry 6y agoOr one can use a service that does the orchestration in a certain way so that one does not have to care about it, as long as one can live with the constraints of the service. E.g. AWS Fargate or GC Run.
- rualca 6y ago> E.g. AWS Fargate or GC Run. I really can't understand this line of reasoning. How exactly is something like Fargate simpler than Kubernetes? I understand the argument in favour of using Docker Swarm over deploying your own Kubernetes on premises or on heterogeneous cloud, but Fargate? And using GC Run to run containerized apps completely missed the point of containerization. Containers are way more than a simple way to distribute and run isolated apps.
- valenterry 6y agoWell, Fargate is simpler in the way that I define CPU+RAM, give it an image, tell it how many of them to run in parallel and let it run. If something crashes it will be restarted. If I want to deploy I push a new image. That's pretty much it. The container cannot be accessed from the outside except for the defined interfaces like http, the containers cannot discover each other unless I use something else to coordinate between them. That is all restrictive, but it also makes things simple. I still need to do health-check and such - so if I don't really need long running containers, I can make it even simpler by using lambda. (well in theory, I don't like lambda, but that's because of the implementation only)
- rualca 6y ago> Well, Fargate is simpler in the way that I define CPU+RAM, give it an image, tell it how many of them to run in parallel and let it run. Kubernetes allows you to do just that with about a dozen lines of a infrastructure-as-code script. > That's pretty much it. The container cannot be accessed from the outside except for the defined interfaces like http, the containers cannot discover each other unless I use something else to coordinate between them. That is all restrictive, but it also makes things simple. Kubernetes does that out-of-the-box, and allows you to keep your entire deployment in a repository. > I still need to do health-check and such - so if I don't really need long running containers, I can make it even simpler by using lambda. With Kubernetes, health checks are 3 or 4 lines of code in a deployment definition. And it's used to manage auto-scaling. Oh, and unlike Fargate, you can take your Kubernetes scripts and deploy your app on any service provider that offers Kubernetes.
- rualca 6y ago> You seem to equate kubernetes and containerization. Kubernetes is just too complex for most usecases, that's all. Kubernetes is just a way to run containers. You configure your application, specify how your containers are deployed, set the plumbing between containerized application, and that's it. What problems are you experiencing with Kubernetes that make you feel it's too complex?
- LoSboccacc 6y agoI think a lot of people here conflates using kubernetes (not actually more difficult than any other container service) with running a kubernet cluster (a difficult mess and it was even included in the original post)
- dathinab 6y ago> but why the hate against kubernetes? Because it adds a massive account of (to some degree hidden) complexity. Especially it adds a lot of additional (potential subtle) failure modes. And while this is more a property of micro services then of kubernets, there is some demand for a more opinionated simpler alternative. (There had been a HN article about that recently).
- twic 6y ago> even your bog standard java three tier app gets some tangible benefit from being dockerized (repeatability, whole os image versioning) Whole OS apart from the kernel. It's rare that a Java app has a dependency on a particular OS version, but, in my experience, even rarer that the dependency does not include the kernel.
- jfengel 6y agoThat was one of Java's big original selling points: write once, run anywhere. They dropped that kinda fast. With, like, version 1.1.
- twic 6y agoNo, not at all. People routinely develop on OS X and deploy on Linux without issue. Here, though, i just meant that i can develop on Ubuntu 18.04, build on CentOS 6, and deploy on RHEL 7 without issue.
- jfengel 6y agoI mean, they dropped the slogan. The idea still held up, and in a lot of ways, still does, though the jungle of different versions and Maven version hell makes it less universal than the initial hope.
- jpcooper 6y agoReproducibility is great. I would probably employ Docker for that if that were my role. However, this is completely from my own limited personal experience: I've worked with multiple devops people at earlier stage companies who have harped on about how we needed to focus on potential future scale when the company had hardly any customers. This was detrimental to our ability as programmers to understand the domain and requirements due to everything being so much harder to implement and test. It's not that I didn't try. I am also not convinced you need to worry too much about things like load balancing in the beginning. In these contexts, I never saw Kubernetes being used for reproducibility alone.
- LoSboccacc 6y agoMost of the app I write have a sla and a load balancer is a great piece to have ready for simplifying/automating rolling updates, even if the backend has a single node
- jpcooper 6y agoFair enough.