Paulo De Mitri@paulogdm
Show previous messages
clarify future support of docker on now platformNovember 8, 2018 at 6:21pm
It seems zeit is moving away from allowing customers to utilize Docker as a common 'primitive'; would you kindly clarify this?
Show more messages
November 8, 2018 at 8:07pm
November 8, 2018 at 8:07pm
I apologize for the "aggressiveness" of the warnings/banners – they give a wrong impression.
To clarify a bit: we have no intention of shutting Now v1 down any soon. We will only start thinking about deprecation plans once we are able to accommodate the most common and critical use cases of v1 on v2. We'll be writing a lot more on the upgrade path, on how to adapt different use cases to the lambda world and so on.
Thanks for the reply. Any motivations regarding "not" supporting Docker in v2 (right away), I'm curious.
I'm far from being a dev op specialist.. I'm really wondering.
We will only start thinking about deprecation plans once we are able to accommodate the most common and critical use cases of v1 on v2.
This is rather unfortunate. It sounds like the writing is on the wall here... Docker support is going away and everything is moving to a Lambda based model. This seems too prescriptive to me... For ex, an express application to either:
- be fully wrapped in a Lambda (would anyone really do this in production?)
- have each route converted to a lambda (what's the story around shared middleware here, seems like a lot of new overhead is introduced)
Not to mention all the other use cases that don't fit in Lambda. :/
yes, ultimately we do plan to remove Docker support. We thought a lot about containers for the past 3 years, analyzed thousands of use cases and spoke with thousands of customers, and we concluded that functions/lambdas are superior to containers for the vast majority of workloads.
We're already writing a blogpost with more details on our thinking, reasoning and conclusions 👍
I'm very interested to hear the proposed solution for loops/jobs that is hinted at in the new Now v2 docs. It's hard for me to judge this new direction until "the rest" of the features are released. I would be open to the idea of refactoring my projects into this new approach but will have to wait and stay on v1 for now.
you're not alone – we have multiple workloads on Now v1 that rely on cronjobs :)
That's what I mean above with the fact that there's absolutely no rush to upgrade: we will only start thinking about deprecating v1 once we have a clear path for the most common and critical usecases that we see on v1. We already have something in mind for cronjobs and we believe it's going to be very nice.
Once again, I apologize for how aggressive/blunt the warnings/banners are. It wasn't our intention to make it sounds like we're going to shut v1 down any soon or that it's considered a "legacy" system – it's not!
My beef with serverless is vendor lock-in, I am forced to change my application, install sdk or configs to be able to use Zeit/Azure/AWS, Dockerfiles + HTTP was 100% portable. I see serverless/function as a service as an optimization for high frequency stuff, but a lot of businesses (SMBs) still need automation around deployments, IMO the reason Zeit's now got popular in the first place was first-class Docker support with minimal config and 0 code change
I want to second the issue of vendor lock-in. I love now because I can just throw a simple node process or a docker file for more sofisticated use cases at it and it will run. But I can just as easily run it anywhere else that runs node or docker. An application built for the v2 can be run only on now v2 with the proprietary builds and routing and only until the paradigme gets changed again in v3.
plus you get a managed CDN on top of it that respects Cache headers, that was a big plus for me
I usually use vanialla cloudflare which in it self is proprietary but could be swapped with any other cdn and gives me more control than the now integration. Having burned myself with parse.com back in the day I avoid proprietary stuff which I can not easily substitute like the plague
Hm, a use case I ran into last week seems like it would be much more difficult in v2: Generating pdfs dynamically using puppeteer. Forking pptraas.com and applying some customizations means we get an easy-to-deploy docker instance with simple upstream updates that is pretty much click-to-deploy on v1 (or anywhere else).
I'm genuinely interested in seeing where this goes. I was preparing to build a product with Elixir/Absinthe using the Docker support of v1, but to be totally honest, this announcement gave me a bit of a reality check with regards to my infrastructure decisions. I think that Zeit is totally correct in its reasoning why lambdas are better — but I'm a little disappointed that I might not be able to take what makes me happy today into the future on Zeit's platform.
I'll be blunt, if you remove support for Docker you will lose us as a customer. I have explicitly NOT chosen a Lambda model for our products, precisely because of vendor lock-in. I will not be harassed into 6 weeks of "oh this dependency isn't installed on the lambda... what do". Docker's whole existence is designed to solve that problem. You're going backwards.
Only and if I do not have to use lambda (e.g. I can even deploy my apps raw using only yarn/npm install and start), I will stick around. Otherwise, again I'm on the hunt.
This is why clarity is needed.
The Now 2.0 PHP builder is simply useless for modern PHP development. We don't do "one file per endpoint" for years and this practice is extremely discouraged in the PHP community nowadays due to the difficult to share common behavior (e.g middlewares) between multiple entrypoints.
Even if you add support for multiple PHP files by doing static analysis, it won't be able to detect dynamic dependencies that are resolved in runtime (e.g command handlers).
Also, with this new PHP builder we don't have any control over the language extensions that are installed and the php.ini config. We have zero control over the environment, this is like getting back to 2000s shared hosting providers.
I think the biggest flaw here was the naming of Now 2.0 and how you presented it. You could simply name it "now lambdas" or something that does not imply that it is going to replace Now 1.0 Docker deployments, because it is far from being a good replacement the way it is.
Given v2, what now is the recommended way to deploy a starlette.io application or a Flask app? If I understand things correctly, Docker support is going bye-bye ... so where does that leave us folks who enjoyed the ease of deploying such dockerized application with a single command in the terminal?
So this means after
1. coming from now without docker support, where i could not build ELM projects (because the used container had problems)
2. I got into the happy land of configuring my own docker container and finally being able to build ELM projects
3. We are back to no control over the container and we also got a lock in...
This is frustrating to hear. I have spent so much time trying to get my projects running on Zeit. There are still some issues left, but now all that work seems wasted. Will there ever be possible to deploy stuff like Craft CMS on Zeit? Or will this purely be for custom apps where you can control everything?
Uh... my first thought when I read "Now 2.0" was: "I really hope they do not drive it against a concrete wall...". After reading into it I'm in fear that this might really happen for me. "cloudified Docker" support was one of the key points for me. I've even used Now in examples of several of my print articles to easily deploy some Docker-ized stuff. I planned to convert some JAMstack projects over to Now... but without Docker I do not see how I could run this Rust-code. I really hope that this isn't the end of "Now" as we know it.