13 ms·
Apache OpenWhisk – A serverless, open-source cloud platform
- faizshah 9y agoIf anyone else was wondering, this seems to originate from IBM in collaboration with Adobe. More information on the architecture here: https://thenewstack.io/behind-scenes-apache-openwhisk-serverless-platform/ https://thenewstack.io/behind-scenes-apache-openwhisk-server...
- aisofteng 9y agoOpenWhisk is what runs IBM Cloud Functions: https://console.bluemix.net/openwhisk/ https://console.bluemix.net/openwhisk/
- rabbah 9y agoAlso Adobe I/O runtime https://www.adobe.io/apis/cloudplatform/runtime.html https://www.adobe.io/apis/cloudplatform/runtime.html.
- rabbah 9y agoOpenWhisk started entirely from IBM Research. It was open sourced in Feb 2016. Adobe came on board as part of the induction to Apache Incubator.
- polskibus 9y agoExcellent, more competition in serverless means increased adoption. Even better if it is open source, in contrast to GOOG/AMZN/MSFT offerings! Seems like an undercutting attempt on the IBM side? Could someone with production-level serverless experience share his insights on OpenWhisk capabilities and roadmap? What's missing from the G/A/M stacks?
- thomasj 9y agoApache OpenWhisk has a number of differences to other serverless platforms (as well as being open-source) including... - Excellent "out of the box" runtime support including Node.js, Java, PHP, Swift, Python, any binary runtime (Go, Rust, etc..). - Custom runtime support using Docker images. Allowing custom images as the execution environment makes it easy to use (almost) anytime on the platform without needing this to come built-in. Custom images can be used to add large libraries or other resources. - Integrated API Gateway. Makes it simple to expose custom routes to functions. - Multiple built-in event sources including HTTP events, CouchDB, Kafka and more. Platform supports registering custom event providers to add any external data feed or event source. - Higher-order function composition patterns including sequences. There are numerous open-source serverless platforms but OpenWhisk is the most mature and one of the only open-source platforms powering commercial serverless offerings, being used by IBM Cloud Functions, Adobe and Red Hat. It has used by IBM's offering with customers since early 2016. Development is all public with the project being in the Apache incubation phase. Upcoming features being worked on include Swift 4 support, on-going k8s integration and better higher-order functional composition patterns. Check out the Github PRs and issues for details. (Disclosure: OpenWhisk committer and IBMer).
- jacques_chester 9y agoI'd point out that supporting languages "out of the box" and having extensibility via docker images is more or less table stakes at this point. A lot of the other things you listed are present in other FaaSes too in varying degrees. No questioning that OpenWhisk was the first major opensource project in this space, though.
- thomasj 9y agoDocker extensibility is common in the open-source faas projects but not in any(?) of the commercial serverless offerings (Google, Amazon or Microsoft). Runtime support (upload code not a container) is more common in the commercial offerings that most of the Docker-based faas frameworks, which use a container as the packaging. OpenWhisk is more flexible than most of the platforms with respect to packaging IMO (Wanna deploy code? Great. Prefer containers? Sure. Wanna use code and a custom image? No problem!) Event support is more common in the commercial offerings (as they have cloud services for you to use), whereas the "faas" framework seem more bare bones. You'll have to configure event integration manually. Same goes for API gateways. OpenWhisk supports numerous open-source event providers with a extensible API for integrating new providers. This is more complete that lots of the other projects in this respect. Over time these features will become default in all projects but there does seem a split in focus between the commercial offerings and "faas" frameworks at the moment. I'm biased :) but I think OpenWhisk has a comparible feature set to Lambda (having been around for over two years) whilst still benefiting from the open-source docker story.
- CodeM0nkey 9y ago> Even better if it is open source, in contrast to GOOG/AMZN/MSFT offerings! Most of the Azure Functions codebase is actually open source under the MIT License: https://github.com/Azure/Azure-Functions https://github.com/Azure/Azure-Functions
- polskibus 9y agoThat's great but it would be good to know what's missing? Can I take that repo, deploy it and start selling FaaS?
- CodeM0nkey 9y agoI don't know the answer to that myself unfortunately. I know the entirety of the runtime itself is OSS and when you do local run/debug of a Function it's the same runtime that Azure uses. It's not an apples to apples comparison though since OpenWhisk is intended to be self deployed. I mentioned Functions here just because many folks don't know that most Azure SDKs, runtimes, tooling, etc are OSS by default.
- polskibus 9y agoThat's the problem though. It doesn't matter much that it's open source if it is not usable in a sense that you can't easily deploy it yourself or repurpose, without committing (and paying) for the rest of Azure stack.
- goliatone 9y agoI have been interested in running a serverless setup for a while now, so I’ve been looking at different open source alternatives to AWS lambda. I considered OpenWhisk but felt IronFunctions would be quicker to setup and easier to run. Anyone has experience deploying/using both? Would anyone that is running OpenWhisk comment on the process to get it running?
- friendly_chap 9y agoSelf plug but https://github.com/1backend/1backend https://github.com/1backend/1backend literally needs just 4 docker containers to run. They are in the ReadMe, let me know what you think of it. It contains a bunch of unique features, so it's not your typical serverless platform, but the core is the same if you don't want to go crazy with the web framework like features.
- rabbah 9y agoIt's great to see so many functions platform - in some ways it shows there's increasing interest, awareness, and adoption. The field is still quite young and there will be a lot of experimentation and exploration. There's also a difference between deploying rapidly for local development (less is better) and actually running a functions platform at scale. AWS lambda reportedly handles over 2B lambdas a day (this was a year ago). Not every platform needs that kind of scale, but it does put things in perspectives.
- friendly_chap 9y agoHi there! Thanks for the encouragement. To be fair we at 1backend don't consider the field that new at all. It's just the old PaaS concept with some twists and reworded marketing! I personally spent years building microservices platforms at various places and after years of not implementing my insights I decided now the time is right and people might adopt it given the current hype cycle =)
- rabbah 9y ago
- amelius 9y agoSince it's serverless, I assume it runs on the client. How does it scale then? And is the client really the right place to run these functions, in view of performance, and perhaps battery use?
- tomatoman 9y agoserverless means that the server is abstract it away from you, you just have scripts that run and if it needs to run grow to more servers it will do by itself
- rabbah 9y agoAn emerging market for functions is also in IoT and edge use cases. See https://aws.amazon.com/greengrass/ https://aws.amazon.com/greengrass/ if interested.
- jacques_chester 9y ago"Serverless" is a marketing term invented by Amazon for what might in retrospect have been better described as mini-PaaS. It doesn't literally mean "without servers". It means that the developer doesn't care about them. AWS have energetically pushed the line that in The One True and Holy Definition of Serverless operators don't care either. Which, gee whiz, what a coincidence, distinguishes Lambda from opensource projects like this. Disclosure: I work on a FaaS, Project Riff, for Pivotal. So I guess we're kinda competing with AWS? -ish?
- zokier 9y ago> "Serverless" is a marketing term invented by Amazon for what might in retrospect have been better described as mini-PaaS. Almost. Imho "serverless" describes more the architecture of applications, in contrast to "mini-PaaS" which would then describe the platform on which such applications are deployed.
- jacques_chester 9y agoWhat about the architecture is different, in your view?
- retr0grad3 9y agoIf you're run k8s on your infrastructure there's a pretty slick alternative called Open FaaS: https://github.com/openfaas/faas https://github.com/openfaas/faas
- jacques_chester 9y agoThere are a number of alternatives targeting Kubernetes. I work on one - Project Riff. Others I've peeked at are Kubeless, Fission and Fn. Some are pure k8s systems (like Riff) and others like OpenFaaS aim to be portable across orchestrators. I believe OpenWhisk is being steered towards running on Kubernetes at some point, but I am not qualified to say. When we looked at it last year as part of the research which led to Riff, we were struck mostly by how many moving parts are involved. Disclosure: As I noted, I work on one of these things for Pivotal.
- thomasj 9y agoOpenWhisk supports Kubernetes as a "first-class" deployment platform. Red Hat have been doing lots of work on this since adopting the project (https://developers.redhat.com/blog/2017/06/07/red-hat-and-apache-openwhisk/ https://developers.redhat.com/blog/2017/06/07/red-hat-and-ap...). See here for more details: https://github.com/apache/incubator-openwhisk-deploy-kube https://github.com/apache/incubator-openwhisk-deploy-kube (Disclosure: I'm a committer on Apache OpenWhisk).
- alexellisuk 9y agoThanks for the mention of OpenFaaS
- dzimine 9y agoTo be fair with other solid "on-top-of-K8S" frameworks: - Fission by Platform 5 https://platform9.com/fission https://platform9.com/fission - Kubeless http://kubeless.io/ http://kubeless.io/ - Nuclio by https://github.com/nuclio/nuclio https://github.com/nuclio/nuclio Not to mention few newer ones (there are over 30 serverless frameworks for any taste and size).
- alexellisuk 9y agoProbably a good time to mention the CNCF Serverless Workgroup and the Serverless landscape. It lists all the Kubernetes-native Serverless frameworks as well as the proprietary ones. OpenWhisk was one of the first projects in this space and is written entirely in Scala. Good to see a Kubernetes integration emerging. https://medium.com/memory-leak/serverless-cloud-native-landscape-new-from-redpoint-ventures-and-the-cloud-native-computing-181711d885f7 https://medium.com/memory-leak/serverless-cloud-native-lands... Other notable projects: Oracle's Fn, Bitnami's Kubeless, Platform 9's Fission, Iguazio's Nuclio and OpenFaaS (community project). (there are more)
- lima 9y agoRed Hat is participating as well: https://developers.redhat.com/blog/2017/06/07/red-hat-and-apache-openwhisk/ https://developers.redhat.com/blog/2017/06/07/red-hat-and-ap... They're really invested in Kubernetes with their open source OpenShift PaaS.
- rabbah 9y agoYou can except more commitment to Kube from OpenWhisk.
- nzpopa 9y agoFor JS developers looking for a Backend-as-a-Service, Hoodie(http://hood.ie/ http://hood.ie/) deserves a mention: <Hoodie is an Offline First, noBackend architecture. Its Dreamcode API gives you user signup and administration, data storage, loading, synchronisation and shares, emails and payments and can be extended with plugins. Hoodie is written in JavaScript and Node.JS and relies on CouchDB.>
- andybak 9y agoSo serverless is essentially a return to the PHP/CGI execution model... What's changed to turn a bad idea into a good idea again?
- alexellisuk 9y agoIt's less of CGI (some projects only support that) Think of it like FastCGI where most of the issues with CGI are fixed up (i.e. throughput isn't an issue) and then combine that with containerisation features from Kubernetes etc to make packaging easier (again not all projects use a Docker image format). If you're wondering whether Serverless is catching on then see also: AWS Lambda.
- anewhnaccount2 9y agoBut isn't "serverless" fundamentally a restart-the-world model, which would make it more like CGI than FastCGI which is a application server type model which isn't fundamentally that different to putting a reverse proxy in front of a HTTP speaking application server?
- deleted 9y ago[deleted]
- ryanworl 9y agoNo. In AWS Lambda at least, the container your application runs in lives through multiple requests until some period of inactivity passes and it is shut down. It isn’t “running” in the sense that your code is in control, but long-lived things like database connections do not need to be re-established on every request.
- paulgb 9y agoWas it ever a bad idea, or did it just go out of fashion? I'm not a PHP fan, but I miss the simplicity of low-end deployments on a LAMP stack by literally dragging files over FTP. It seems like something has been lost with the total embrace of more modern web frameworks.
- alpb 9y ago"an open source cloud platform" is probably an overstatement.
- dzimine 9y agoIt's what OpenStack has been - "opensource cloud platform". But yes, I agree, overstatement for OpenWhisk.
- elvinyung 9y agoIs there something to bridge the gap between serverful and serverless? Is there a good enough framework that lets me write Rails-like code and have it compile into a bunch of serverless jobs?
- Willson50 9y agoI don't know about rails, but there's a good Flask -> Lambda project called Zappa https://github.com/Miserlou/Zappa https://github.com/Miserlou/Zappa
- elvinyung 9y agoClose enough -- I'll look into it, thanks!
- dfee 9y agoI found Zappa to be a bit peculiar - so I’ve been toying with `serverless`, which isn’t without its faults either. However, with Zappa, you begin by downloading a bunch of wheels (pre-compiled python packages) as dependencies for your project - I guess this helps with the packaging / deployment problem, but it’s also bloat that you have to think about - and quite frankly a bizarre introduction to a framework that made me feel less than confident that it’s not duct tape app the way through. With serverless, the wsgi plugin, and the python packaging plugin, you’re compiling wheels on a rocker container which means you’re requirements remain “yours”, you compile only and exactly what you need, and it looks a bit more like “normal Python”. The downside of `serverless` is that you don’t get the “task” integration built in - so you pretty much need to wrap boto3 with your own api that mimics celery/rq/etc. Also, as is the case with any solution I’ve found is that they’re peculiar to work with if you write your python code as a package - i.e. with a setup.py. You end up in a strange place with “-e .” not behaving well in a requirements.txt or a Pipfile that is used to package for Zappa.
- rabbah 9y agoContribute on GitHub https://github.com/apache/incubator-openwhisk https://github.com/apache/incubator-openwhisk
- masukomi 9y agoCan someone explain to me WHERE the servers exist for this "serverless" platform? Is this code i run on lamda and lamda competitors? Is apache hosting it? Do i have to set up my own servers to run the code? All the intro docs and FAQs seem to assume that "serverless" is literally no servers, just magical cloud fairies or something. I get that it uses docker containers, but where can i / am i expected to run those?
- qmarchi 9y agoThe goal of the project is to give an Operations Team the ability to not have to manage the platform and software stacks being utilized and to give developers the luxury of not worrying on how to scale their application so long as they follow some basic constraints.
- cnj 9y agoThis is open source, so "someone" has to run it. This someone could be e.g. IBM or RedHat, it could also be someone like Adobe that wants to offer a FaaS integrated into their main product. It could also be your own company, e.g. you could have an infrastructure team that provides it for all other teams.
- doppel 9y agoI find mentions of “deployments”, but unlike a platform like Kubernetes I can’t seem to find any mention of how to set up the “serverless servers” anywhere. And until then it’s just a really neat local CLI
- masukomi 9y agoyeah that was my take too. I have zero clue what's involved with the hosting of this and as it's an open source serverless product that's the most important bit. How easy or hard it is to use is irrelevant if i don't know _where_ to point things or what to do to make there be something to point things at.
- bri3d 9y ago
- softinio 9y agoI am excited about this project especially as its built using AKKA which I am a big fan of.
- tmikaeld 9y agoI'm new to serverless, but I've wondered what happens if: - The function get stuck and run forever? - It causes a request to loop? And you have hundreds or thousands of these "functions" deployed? Couldn't that cause sky-high costs if it goes undetected or even unwanted DDOS against other's infrastructure?
- jccooper 9y agoSystems like this must have an extensive quota-and-limits system. It will disallow overlong runtimes or excessive memory use, and if you keep doing that will run out of quota (which is usually attached to billing.)
- slow_donkey 9y agoFor now, when adopting FaaS, you must be vigilant to adopt rigorous monitoring and alerting for how your system is behaving so that you can detect situations and correct them before they become significant problems. Of course, the complexity introduced by monitoring flies somewhat in the face of the simplicity of deploying to FaaS, which is friction that your developers must overcome. - Designing Distributed Systems by Brendan Burns
- jedberg 9y agoThe first one is easy, you just have a hard limit on runtime per invocation. The second is harder. Last I checked, AWS Lambda for example would allow a loop between two functions to run forever. You have to build loop detection into your software.
- cavisne 9y agoLambda recently added customizable concurrency limits per function which was partly to address the "function cycle" issue, ie at least your costs wont blow out too quickly. The classic example of this is a function subscribed to S3 events which in turn creates an s3 object itself :P
- djhworld 9y agoIs anyone actually using this (and other open source solutions that do similar things) for anything? The cloud providers offer "serverless" billing for AWS Lambda/GCP Functions/Azure Functions in the sense that you pay just for the compute time and don't manage the underlying infrastructure. Outside of vendor lock in, what advantage does running a service like this really offer? To make a system like this usable you'll probably need at least a couple of boxes available 24/7
- thomasj 9y agoIBM offers that open-source platform as a managed service, IBM Cloud Functions (https://console.bluemix.net/openwhisk/ https://console.bluemix.net/openwhisk/).
- tedmiston 9y agoRun on top of k8s it, and similar projects like Riff, allow you to run Lambda-style FaaS outside of clouds / on bare metal. That's the main benefit I see currently, besides that many companies what to abstract their code to be as cloud agnostic as possible. Also, if you're running lots of function iterations, it can be cheaper to run this way than Lambda etc.
- cocktailpeanuts 9y agoNowadays when someone claims to be "serverless", there can be two interpretations: 1. It's a server actually. It's just that the server serves up functions, without state. So a more correct terminology would be "stateless servers" 2. Truly P2P (Like blockchain), therefore there truly are no "servers". Used to think Amazon did a great job coming up with the jargon that's great for marketing, but lately as we see more and more option 2s which are TRULY "serverless", the option 1s increasingly sound like imposters. After all in option 1, there ARE servers. To be able to claim you're "serverless", you really shouldn't have servers.
- MrFurious 9y agoI think that the best name is "server for dummies".
- cocktailpeanuts 9y agoAs far as I know, all the projects that promote themselves as "serverless" are stateless functions and not designed to store states, which means if you want a database you will need to store it elsewhere and utilize it from the "serverless" container. So no DB for you out of the box if you want to use serverless architecture. So I don't think it's for "dummies". Dummies want an all-in-one server.
- CharlesW 9y ago> As far as I know, all the projects that promote themselves as "serverless" are stateless functions… Any normal PHP app is just a collection of stateless functions, but that doesn't automatically make all PHP apps "serverless" apps. What makes something "serverless" is the FaaS[1] execution model. [1] https://martinfowler.com/articles/serverless.html https://martinfowler.com/articles/serverless.html
- cocktailpeanuts 9y agoMost PHP apps are run by DBs. They are not stateless.
- mwea 9y agoDoes anyone have informations about the scalability of FaaS models ? Despite the monitoring part that must be quite hard.. I wonder about the network saturation in case of services that get millions of requests per minutes and having, in this model, function interactions going through the network
- tw1010 9y agoTo anyone who has a good feel for this space. Where do you think all this is heading in a 3-5 year time period? What is the medium-term vision like? I'm just curious.
- TuringNYC 9y agoI'm currently migrating to Kubernetes. Hard to tell where things go in 3yrs (the pace of change is so high, a year seems like forever)...BUT...a couple of things that drove me to the migration: 1 - Less stickiness to AWS since the serverless architecture would abstract away the provider and i could theoretically even grab the cheapest spot instances across providers (AWS, Google Cloud, SoftLayer, Azure) 2 - Lower compute bills (due to better usage and being able to more tightly pack stuff into nodes) 3 - Lower HR bills due to a lot of stuff just scaling up without effort rather than dozens of deployment/babysitting staff Hard to know for sure, but these are the three things that drove me to Kubernetes.
- BatFastard 9y agoBut I find some type of persistence of data usually figures into my serverless calls. And those tend to lock you into a vendor. Especially when you want to start analysing the data you have. Even if you could separate them it would add latency. Now if it JUST compute... and I can see that as a possibility for some CV applications.
- manigandham 9y agoConsolidation. There are way too many frameworks right now and they offer nothing different, especially for something so commodity as packaging and running a single function. The major cloud vendors are also rapidly evolving with Azure Functions being the most integrated and useful with AWS second and GCP far behind. The next few years will see 1-2 open-source frameworks along with all the cloud vendors getting to parity of running almost any language in response to almost any event source. Templated data pipelines and other processing should also become common and as easy to run as a docker container is today.
- 9y ago
- deleted 9y ago[deleted]
- deepnotderp 9y agoAny way to compute in HPC clusters using FaaS?
- shaunray 9y agoNot where you can bring your own image as of yet. Although Thomasj above mentions you can do this in OpenWhisk. The closest to scientific HPC I have used personally is pywren https://github.com/pywren/pywren https://github.com/pywren/pywren Which is attempting to add more cloud backends. It's out of Berkley University.
- stochastician 9y agoHi! Pywren project lead here, we're working on more and more fun HPC-style projects! We're also interested in expanding to more and more backends, so please feel free to reach out if there's something you'd like to see.
- deepnotderp 9y agoI meant more like the opposite, where you can do parallel computing in a cluster by using a simple serverless FaaS paradigm. The idea is to remove the headache of manually setting up an MPI cluster, worrying about MPI communications, etc.
- ausjke 9y agoso, serverless is (fastcgi + container) these days? at least fastcgi website is down for long time, and seems abandoned already along with cgi.
- BraveNewCurency 9y agoYes, FastCGI would work, as long as you don't mind wasting money. But what happens when you have billions of scripts, each executed infrequently? You need some way of fetching the scripts dynamically (they are changing constantly), and way to time-multiplex their execution so you don't waste RAM on inactive scripts. Oh, and load-balancing suddenly becomes non-trivial because you prefer to route to one script spun up on one box (as long as the usage doesn't justify multiple boxes), instead of accidentally spinning up that script on every box. What's new is the layer that is managing fetching, starting, and stopping the scripts. For developers, it's 'kinda the same'. But for operators, it's a massive change in how things work that enables a different paradigm.
- ralusek 9y ago"Um, how is this SERVERLESS? Clearly it's running on a SERVER. I'm so sick of this marketing jargon." - HackerNews, every time.
- dominotw 9y agoEverytime
- maniacalrobot 9y agoPeople hear server-less, and go straight to thinking about hardware … in my mind, server-less apps are missing the "application server" software, or it's extracted away so far as to appear to be the operating system from the server-less functions point of view.
- bontoJR 9y agoI am somewhat confused about this product. I think the Function as a Service approach has really some good advantages on more classic approaches sometimes, but if I want to go that path, what is the advantage to actually use an open source product and maintain the server with all the maintenance required (security updates, platform updates, handling scale, etc...)? Wouldn't be an out of the box solution provided by AWL Lambda, Google Cloud Functions, etc... a better and more straightforward option on this space? I am just wondering if I am the only one with this opinion, what is your experience on this topic?
- themihai 9y agoFreedom to deploy anywhere is quite important to some people. One can truly appreciate it only after gets burned by one of these "cloud" provides(i.e. Google appengine/cloud).
- thomasj 9y agoIBM offers that open-source platform as a managed service, IBM Cloud Functions (https://console.bluemix.net/openwhisk/ https://console.bluemix.net/openwhisk/).