News for hackers. Stuff that matters.
Re:Why Kubernetes Is the New Application Server by taeric on Thursday July 12, 2018 @02:07PM (#17517130)
It is hard not to build this impression of containers. Worse, it seems that the docker image format is massive compared to what most war files were like. This is annoying not just in terms of raw bytes to move around, but in taking stock of what is getting moved around.

My team originally pitched how docker solved much of the dependency upgrade management by having layers for each major set of dependencies. That ignored the fact that upgrading a layer is not really something you do.

So, then you can go around the path of coordinating many containers communicating with each other. That works, but in that world, things really don't seem any easier than the earlier alternatives. Harder, in many ways.

Don't get me wrong, the momentum and raw money being put into containers certainly paints it as the future. It just feels like lying to say that they have even come close to parity with what we were capable of not that long ago.

Re:Why Kubernetes Is the New Application Server by dnomad on Thursday July 12, 2018 @02:34PM (#17517351)
Exactly. Docker files are worse than war files in pretty much every way.

The economics are interesting though. Computing resources are super cheap and getting more cheap everyday. (Well except for RAM!) The waste produced by containers means says, yeah, give each application its own app server. Its own web server, its own JDBC driver, even its own JDK. We'll throw it all on the cloud and run it for a few cents each hour.

The problem is that testing isn't cheap. This is where microservices and containers and the all this craziness will fall down. Now you've got dozens and dozens of applications all running with their own application servers, JDBC drivers, and their own JDK. This is a combinatoric explosion in your testing surface.

The true value of the application server approach is that it forced applications to conform to a clear contract. Once your application conformed to this contract it could be thrown over the wall into a full-time ops organization that could transparently deploy, monitor and manage the app.

The container madness will come to an end. People will realize that giving developers the keys to the kingdom and total freedom over their application is a terrible idea. (And smart developers don't want total freedom.) What will emerge will be something much more interesting: a hybrid approach where applications can be bundled into into artifacts that fully express their dependencies and containers can be annotated in a way that fully express their capabilities.

Containers provide isolation and immutable infrastructure and this is good. Appservers provide standardization, specialization and separation of responsibilities and this is also good. There's no reason why we can't enjoy both.

Re:Why Kubernetes Is the New Application Server by tyldum on Thursday July 12, 2018 @02:46PM (#17517471)
We use containers to reduce the testing surface and enforce standards. And if course to ease testing as we now transition the same build through dev, staging and prod.

The devs just have a single base container to work off from and we use CICD to further enforce whatever we need to.

It also makes it easier for devs to propose changes, as we know we can consistently apply them.

Re:Why Kubernetes Is the New Application Server by haskellandchill on Thursday July 12, 2018 @03:12PM (#17517681)
You can use them to do that but is it working? That was the point, I also agree that no, it is not working and has rather introduced several layers with painful and hard to debug failure modes.
Re:Why Kubernetes Is the New Application Server by taeric on Thursday July 12, 2018 @04:13PM (#17518221)
A problem comes down to answering questions such as "exactly what versions of X are installed in our beta stack?" Usually trivial if X is part of your application. Much more complicated if X is some lib that is on the system/image.
Re:Why Kubernetes Is the New Application Server by mmt on Thursday July 12, 2018 @10:37PM (#17520127)
> People will realize that giving developers the keys to the kingdom and total freedom over their application is a terrible idea. (And smart developers don't want total freedom.)

Sadly, I don't think it's actually developers that were pushing for this "freedom" (with which comes responsibility, hence it makes sense that it would be unwanted), as such.

Rather, I place the blame with managers and with (fellow) sysadmins for not embracing, empowering, or forcing (whatever it takes) the aspects of the original DevOps cultural movement to have Ops bring the equivalent [1] of a production environment to every developer.

> Containers provide isolation and immutable infrastructure

I thought they weren't even (necessarily) immutable. If not, then maybe they're merely immutable-through-practice, but that's as unsatisfying as configuration management systems creating reproducible deployments that lack traceability [2].

[1] In terms of tooling for things like builds, deployment, and management (especially of dependencies), not necessarily full hardware capacity, although at one place I did provide each developer with a copy of yesterday's production database on their own, personal bare-metal database server, less "beefy" than the production hardware.

[2] is that the right word? something like chain-of-custody for code and/or configuration.

Re:Why Kubernetes Is the New Application Server by kinghajj on Thursday July 12, 2018 @02:39PM (#17517407)
Nothing prevents one from having a container with many WAR files, so that there's only a single JVM for multiple applications.
Re:Why Kubernetes Is the New Application Server by dnomad on Thursday July 12, 2018 @03:06PM (#17517624)
The entire exercise is about expressing dependencies. (The real third hard problem in computer science. Only idiots fall for off-by-1 errors.)

Containers are one way to force an application to explicitly declare all of its dependencies. The problem is the application then also bundles those dependencies. There's not much room for control or intermediation. Developers have total freedom to do all sorts of wackiness. (And oh the wackiness I've seen in containers. When the cat is away...) What's needed is a richer (and much more compact) mechanism for applications to express all their dependencies.

Another way to understand the issue to understand the underlying economics at work here. Container economics proposes that computing resources are so cheap that, sure, let the developers go crazy and do whatever they want. But those same developers must be on the hook for all operational concerns hence "DevOps." And this will scale until one day you look around and you realize that anarchy never works, not even a little bit.

Now there's a lot of room to fall here. RedHat is in the business of selling compute and storage resources. It's not clear that even if they could make their products more efficient they would. But as long as compute resources are cheap and getting cheaper you can let people go wild and RedHat will make a lot of money and everybody will be happy. For an organization the true costs will emerge in a very subtle manner: the productivity of the developers (already hard to measure) will ultimately fall. That's because instead of actually solving actual business problems their devs are deploying dozens and dozens of polyglot microservices and trying to figure out why on earth microservice #28 that Bob, who left the company a year ago, decided to write in a version of lisp that he invented crashes every day at noon.

But hey, at least Kubernetes makes it easy to deploy everything!

Re:Why Kubernetes Is the New Application Server by parasubvert on Thursday July 12, 2018 @05:00PM (#17518558)
> There's not much room for control or intermediation.

FWIW there are container-based app platforms that do allow you to swap out filesystem layers to update dependencies and to remove control from developers by having a standardized containerizer that has extension hooks but can't be mucked with at the lowest levels. This is how Cloud Foundry works for example, or Heroku.

Re:Why Kubernetes Is the New Application Server by smarterclayton on Thursday July 12, 2018 @06:35PM (#17519189)
For example, OpenShift (Kubernetes + stuff also from Red Hat) exposes this pattern like both heroku and cloud foundry by

A) focusing on having standard base images controlled by ops

B) encouraging combining source code / built artifacts as a layer on those base images

C) giving controls to ops so that the only images users could build or run must be built with A/B above.

In that mode containers are less wasteful because you can share the base image across every host (or rebuild everything centrally), and all that gets downloaded to a host is the source code top layer. Which is roughly indistinguishable from the lambda runtime and how it accesses the code to execute.

Re:Why Kubernetes Is the New Application Server by taeric on Thursday July 12, 2018 @07:18PM (#17519412)
Don't most virtualized hosts already solve the "less wasteful" point? I get that hypervisors and friends aren't bulletproof, either; but I have fewer ways to shoot yourself with those than I have with containers.

More, you have to worry about the container host anyway, so you haven't removed the need to maintain a host. You've just added to it the need to maintain the rest of the container infrastructure as well as your application stuff.

For places that have not solved the "virtual hosts should be virtually free" problem, containers are quite welcome. You can get going with them quite quickly. If you have already solved that problem, they can look an awful lot like just more work.

Re:Why Kubernetes Is the New Application Server by smarterclayton on Thursday July 12, 2018 @08:01PM (#17519601)
Agree, virtual hosts are ubiquitous. But I don’t know that anyone loves their virtual machines the same way they love the smaller, faster, and simpler alternatives (unikernels included).

This is a somewhat pessimistic viewpoint, but lowest common denominator solutions tend to acquire the most network effects. A VM requires more touch points to manage for the person who has to set up a machine - despite ten years of solid progress, they still tend to be pretty annoying to configure and build and manage. The platform as a service approach (whether lambda, nodejs on cloudflare, various functions as a service approaches, heroku, cloud foundry, or dokku) on the other hand take away a lot more hassle by abstracting pain points out, but get accused of being too rigid. Both extremes benefit specific use cases, but have disadvantages in general purpose use.

Containers sit in the ugly, dirty, practical middle. They can do both (VMs are just processes). So the network effects they accrue just like Linux did of being “good for everything, not great” help mitigate some of the disadvantages.

The public cloud providers change this calculus a bit by offering these things as a service, but internally they are just managing the container runtimes for you.

I’m obviously biased, but I tend to see containers as “good enough” to build other abstractions on top, with specific areas where VMs and heavy PaaS abstractions clearly win.

Re:Why Kubernetes Is the New Application Server by jacques_chester on Thursday July 12, 2018 @09:53PM (#17519989)
What's been interesting to watch from the Cloud Foundry POV is the circular migration of the boundary between development and operations.

CF built container technology before Docker or Kubernetes -- two generations of it -- because it was seen as the right primitive by people with experience of Borg. But containers were not touted as ends in themselves.

So the contract boundary given was: sourcecode. Buildpacks.

Docker comes along, then Kubernetes, and the container goes from being a hidden detail to a central concept around which a lot of other stuff orbits. And containers are a step forward on a lot of axes. Developers begin to want to use containers as their shipping unit.

So the contract boundary became: images.

Later ops realises that while opaque running containers are awesome for reducing their management complexity, it doesn't reduce all categories of risk. After all: what's in the damn containers? And so various tools have emerged from the container-oriented ecosystem to take sourcecode and turn it into a container image, so that developers and operators have a consistent handoff point.

So the contract boundary becomes: sourcecode.

It sounds like a nice story, and it might seem like we'll go in circles hereafter. But we're not doomed to do poetic laps: what's happened in the middle has been the rise of CI/CD tools, sitting between the container boundary and the sourecode boundary. Good fences make good neighbours and it turns out that fences made of helpful robots make even better neighbours.

As a Pivot with a long association with Cloud Foundry, I have enjoyed in the past few months getting to compare notes with Red Hatters and others in the k8s community.

Re:Why Kubernetes Is the New Application Server by taeric on Thursday July 12, 2018 @04:11PM (#17518205)
To be fair, it is more likely that random microservice #28 is running fine, but folks don't like it and are uncomfortable modifying it to add a variation to one of its rules. Thus giving birth to microservice #28'. :) (Please read this tongue in cheek.)
Re:Why Kubernetes Is the New Application Server by parasubvert on Thursday July 12, 2018 @04:57PM (#17518531)
> Exactly. Docker files are worse than war files in pretty much every way.

They focus at far too low level a problem.

> The problem is that testing isn't cheap. This is where microservices and containers and the all this craziness will fall down. Now you've got dozens and dozens of applications all running with their own application servers, JDBC drivers, and their own JDK. This is a combinatoric explosion in your testing surface.

I fail to see how this more difficult from 95% of existing enterprise systems that run various JDK versions, various WebSphere versions, JDBC drivers etc.

The difference with containers is that vendoring your dependencies makes all that explicit. Whether you choose to stay on old versions is a mistake you can still make (and will make if you leave container creation and patching in the hands of dev teams).

That said, since when does any organization build horizontal testing libraries, like, "test X version of JDBC", so they can standardize on a single driver across all projects? It's never done. Projects are all over the place with their dependencies unless there is institutionalized forcing through Maven repos or what not to block the download of old/insecure versions.

There is no combinatorial problem here, each test suite needs to unit test the individual service and then test the API contract of the service. If you let your dependencies decay you're accepting major security and maintenance risk, but you were in the WAR file world too.

> The true value of the application server approach is that it forced applications to conform to a clear contract. Once your application conformed to this contract it could be thrown over the wall into a full-time ops organization that could transparently deploy, monitor and manage the app.

LOL, I really think you're exaggerating. I've worked with WebLogic, WebSphere, IIS, JBoss, Tomcat, Django, Rails, Node, you name it over the years, and while some orgs got close in the Java world, this was mostly a pipe dream that never happened in any cost effective manner as a standard practice.

> The container madness will come to an end. People will realize that giving developers the keys to the kingdom and total freedom over their application is a terrible idea. (And smart developers don't want total freedom.)

This I agree with. It's all far too low level.

This really was Docker, Inc.'s fault IMO, their marketing message was to empower developers to get ops out of the way by building these containers that would magically just be run as opaque lego blocks. That was the hype everyone on HN was drooling over in 2013. Turns out it's not quite that simple.

Re:Why Kubernetes Is the New Application Server by dionian on Thursday July 12, 2018 @02:37PM (#17517380)
So just reuse the common layers and only have your WAR file layer changing
Re:Why Kubernetes Is the New Application Server by taeric on Thursday July 12, 2018 @02:39PM (#17517406)
The problem is when there is a vulnerability in some part of an earlier layer. You have to rebuild the entire stack.

I honestly don't think this is necessarily a terrible thing. But, the idea that your common layers are stable is a dangerously bad assumption.

Re:Why Kubernetes Is the New Application Server by cpuguy83 on Thursday July 12, 2018 @05:39PM (#17518849)
What are you defining as stable? Never changing? That's not something that should even hinted at.

The fact that you can login to a VM and update a package does not make the system stable either (and of course you can actually do this with running containers as well). Add to that you still need to restart running applications to take advantage of the package update (assuming the packages is a shared lib).

Meanwhile you can push new base images, automatically trigger rebuilds and roll out the update when ready.

Re:Why Kubernetes Is the New Application Server by taeric on Thursday July 12, 2018 @07:15PM (#17519399)
I suspect we mostly agree with each other. My experience with folks in containers so far has proven to be that this is often hoped, though.

Specifically, we had devs talking about how we wouldn't have to worry about system patching anymore, because the containers would take care of that. With no answer for how we trace versions and patches through our systems.

If you are already tooled enough such that you can completely redeploy a full stack easily without worrying about some in place modifications, the difference between a VM and a container are relatively minimal, all told. Especially since you have to be ready to pull down the host of the containers anyway.

Re:Why Kubernetes Is the New Application Server by cpuguy83 on Thursday July 12, 2018 @07:20PM (#17519424)
The main difference is the container is focused on an application and a VM is focused on a machine.

Generally the patching problem can be solved with image scanning, of which there are tools out there to deal with this, both FLOSS and pay for.

Re:Why Kubernetes Is the New Application Server by xj9 on Thursday July 12, 2018 @02:14PM (#17517170)
the linux world is slowly (and badly) recreating technology that has existed in FreeBSD and Solaris/Illumos for decades.
Re:Why Kubernetes Is the New Application Server by grapeli23 on Thursday July 12, 2018 @02:42PM (#17517433)
You probably never heard or used - Linux VServer. Available from the later version of the 2.4 kernel.

https://en.wikipedia.org/wiki/Linux-VServer

Re:Why Kubernetes Is the New Application Server by xj9 on Thursday July 12, 2018 @03:30PM (#17517833)
Re:Why Kubernetes Is the New Application Server by grapeli23 on Thursday July 12, 2018 @04:20PM (#17518288)
2003 http://linux-vserver.org/Overview#History

In the Linux distribution that I used (PLD), the first vserver support took place in january 2004. https://github.com/pld-linux/kernel/commit/5be58c1bcc5568676...

Maybe a little earlier because the util-vserver showed in Nov 2003. https://github.com/pld-linux/util-vserver/commit/c4036d6e748...

Re:Why Kubernetes Is the New Application Server by taeric on Thursday July 12, 2018 @02:21PM (#17517237)
Be fair here. The software world is slowly recreating technology. Being even more fair, they do often add to it. Usually UX capabilities, but sometimes full on features. Yes, often the features require more resources than were available before. Such that previous versions couldn't have offered some of these things.

That said, it is not limited to any one set of our industry. It is likely not even limited to our industry.

Re:Why Kubernetes Is the New Application Server by redbeard0x0a on Thursday July 12, 2018 @05:36PM (#17518834)
Software getting recreated, sometimes without the security promises (linux containers as they started vs. solaris zones) the previous solution had. To be fair, Google didn't really need the security in linux containers, they didn't run multi-tenant workloads, so it wasn't their top concern when submitting code to the linux kernel...

We like building new things, from different angles, but in the end it seems like everything cycles through the same ideas.

Re:Why Kubernetes Is the New Application Server by taeric on Thursday July 12, 2018 @07:19PM (#17519419)
Completely agreed. It is hilarious because we all preach "don't reinvent the wheel" at the same time that our interviews are basically "can you implement this ridiculously low level wheel" on top of "come here where we are simply using the latest rims!" :)
Re:Why Kubernetes Is the New Application Server by tomsthumb on Thursday July 12, 2018 @02:21PM (#17517239)
Which technologies were those?

I’m only vaguely familiar with FreeBSD, and not at all with Solaris.

Re:Why Kubernetes Is the New Application Server by devonkim on Thursday July 12, 2018 @02:27PM (#17517295)
FreeBSD has had jails and Solaris has had zones (with a Linux compatible zone as well aka branded zone). Given Illumos takes a lot of its roots from Solaris, it also has LX branded zones.
Re:Why Kubernetes Is the New Application Server by pjmlp on Thursday July 12, 2018 @02:52PM (#17517515)
And HP-UX/Tru64 before them.

We were deploying into HP Vaults in 2000.

Re:Why Kubernetes Is the New Application Server by ecnahc515 on Thursday July 12, 2018 @08:35PM (#17519718)
Yeah, except even jails has gaps, like for example; shared memory isn't jailed.
[dead]
Re:Why Kubernetes Is the New Application Server by mmt on Thursday July 12, 2018 @11:10PM (#17520230)
(I, like sibling comments, feel that greater restraint in tone and wording, such as avoid "name calling" would amplify, or at least keep the focus on your point, which I believe has at least enough merit to discuss.)

Being in Ops, and having first been paid to do sysadmin work 30 years ago, and having been raised by semiconductor industry veterans, it's pretty safe to say I know tech history.

Having experienced plenty of that history first-hand, including learning to "know better" the hard way, has resulted in a certain amount of conservatism and skepticism toward any new technology, especially one that gains popularity with particular speed.

However, "skepticism" isn't a synonym for "summary dismissal", but, rather, actual skepticism in the sense of asking uncomfortable questions and paying attention to the answers, even they end up being uncomfortable to hear. That's how we grow and, ultimately, know even better.

I've also learned that I enjoy working in smaller companies and/or startup environments far more than the alternative and this has, inevitably, required adapting to some amount of the "move fast and break things" method. Even if its genesis is with leads that can legitimately be labeled as "immature", it merely increases risk, and risk is inherent in startups anyway.

As it applies to my evaluation of new tech, it usually means I get to evaluate it already in operation, instead of merely asking questions. Often, that empirical data is far more valuable, even in forming an argument to stop using that tech.

All that said, so far, I can't help but agree with your assessment of "boondoggle" when all the layers of abstraction, complexity, and cost are included in, languages, ci/cd, virtualization/containers, orchestration, and cloud.

Re:Why Kubernetes Is the New Application Server by trav4225 on Thursday July 12, 2018 @02:28PM (#17517306)
I disagree with the tone of your message, but +1 for bringing up the fact that the software world's lack of knowledge of history dooms them to endlessly repeat it (I witness this on a daily basis).
Re:Why Kubernetes Is the New Application Server by zzzcpan on Thursday July 12, 2018 @03:42PM (#17517969)
It's not that. The tech is not a solution for everyone's problems to begin with. It's a purely commercial tech made in an attempt to compete with Amazon and sell you stuff. It's very lock-iny, expensive to leave and is crippled on purpose, to make you buy services from Google. Barrier of entry for competition is high too, so it will be pricey.
Re:Why Kubernetes Is the New Application Server by moondev on Thursday July 12, 2018 @11:20PM (#17520263)
Kubernetes is the absolute opposite of everything you said. Open source, cloud agnostic, cloud optional..., it literally abstracts the hardware so you are not locked in. You can run it anywhere.
Re:Why Kubernetes Is the New Application Server by pageald on Thursday July 12, 2018 @08:38PM (#17519731)
What features of Kubernetes are only available for a price? Since Kubernetes is fully open source and self hosted/available from any cloud provider now, how is it crippled?
Re:Why Kubernetes Is the New Application Server by zzzcpan on Saturday July 14, 2018 @10:49AM (#17530540)
What I meant is you can't get GKE/GCP level experience on bare metal.
Re:Why Kubernetes Is the New Application Server by mirceal on Thursday July 12, 2018 @02:40PM (#17517420)
be polite and drop the hard language and maybe the stupid fucks..... aaah.... the people will be open to a discussion.
Re:Why Kubernetes Is the New Application Server by toomuchtodo on Thursday July 12, 2018 @02:22PM (#17517249)
You have a point about hype, tech cycles, and solutions being pushed out of ignorance vs tech superiority if you change the language to be more civil.
Re:Why Kubernetes Is the New Application Server by bsenftner on Thursday July 12, 2018 @02:24PM (#17517274)
You're right.
Re:Why Kubernetes Is the New Application Server by jrs95 on Thursday July 12, 2018 @02:28PM (#17517309)
Although it's a bad point without any concrete examples. Without that, it just seems like a baseless emotional reaction to not liking something new. I might even be inclined to agree if there was a bit more detail given.
Re:Why Kubernetes Is the New Application Server by toomuchtodo on Thursday July 12, 2018 @02:29PM (#17517319)
Containers are a solution looking for a problem, used more for organizational reasons than technical.

Disclaimer: Infra/DevOps engineer previously, 20 years total in tech

Re:Why Kubernetes Is the New Application Server by jrs95 on Friday July 13, 2018 @07:49AM (#17522067)
I hear things like this a lot but I never hear how you could accomplish the same things as Kubernetes (or any other orchestrator) without containers. Even if there were good solutions available for this, and the only advantage of containers was an organizational advantage rather than a technical one, I think that would still be a win.
Re:Why Kubernetes Is the New Application Server by toomuchtodo on Friday July 13, 2018 @10:49AM (#17523373)
The same way we orchestrated before containers: VMs, config management, and APIs at the control plane
Re:Why Kubernetes Is the New Application Server by megaman22 on Thursday July 12, 2018 @02:34PM (#17517349)
There is a certain level of saltiness that is well deserved, and I'm not sure that the GP came close to strong enough. We're swirling around in circles, rediscovering the same thing every five years, leaving a blasted wasteland of half-baked abandoned technologies behind, endlessly chasing the shiny - and overwhelmingly, it's the extreme ignorance and illiteracy of the profession that is to blame.
Re:Why Kubernetes Is the New Application Server by abledon on Thursday July 12, 2018 @02:45PM (#17517458)
“””it's the extreme ignorance and illiteracy of the profession that is to blame.”””

I’m imagining a thought experiment... the requirements to understand and operate in this industry... for example this article that was posted . Imagine giving it out at a family reunion and asking each relative if it makes any sense at all. Even the ones who are developers might only get a small gist of it if they program java code. For humans to digest decades of information written by 1000s of other humans in terse code ... it’s a daunting task which is married to the side effect of accidentally repeating past mistakes. Maybe if we had an Oracle to help us... oh wait that’s a terrible joke