Microsoft Azure: Functions
azure.microsoft.com
azure.microsoft.com
But, why no F#? Seems like an obvious language to support.
Edit: realized in hindsight that many of the posts in this thread are/may be about "do you support X" (as for any shiny new feature like this), I imagine you guys may have a doc to describe this so feel free to just drop a link and not waste time explaining (to me at least) if I missed it when reviewing the primary docs. :)
Check out this article for a good overview: https://azure.microsoft.com/en-us/documentation/articles/fun...
Ideally it'd be cool to provide some sort of custom designed function in Excel that is hosted in Azure. So I could write some C#(Eventually F#! Woot!) and then link it into a worksheet I have. So I could write a function like: getTheWeatherByZip and then in excel call it and get say a string back with the weather.
Hopefully that makes sense.
We don't have any official plans, but because we're open source, you can take a look at how we're doing things and think about adding it yourself later on.
We'll have some contributor guidelines up soon. We're going to try to clean up the code and write down a bunch of dev/test guidance this month.
It might even be possible to do this with a Batch script today. Just upload the Haskell binary, and have it load a particular file in your functions directory. There's are some Batch templates you can get started with.
We don't have phatomjs working out of the box today, but it's something I'd like to see. Not sure where it will fall on our roadmap. Feel free to file and issue and we can track it there. https://github.com/Azure/azure-webjobs-sdk-script
Why can't you use simple pricing like VMs or storage?
We actually have TWO options (even simpler right? :)). You can just buy a dedicated instance to run on and it will always be hot and running your code. You have to manage scale for that though.
You can, more interestingly, also use our "dynamic compute" model where we manage scaling and provisioning everything and we only charge you for the time your CPU was running. This is great for folks who have highly elastic workloads.
We don't have any current plans for that. Feel free to file a feature request. https://github.com/Azure/azure-webjobs-sdk-script
[1] documented here, e.g. https://forums.aws.amazon.com/thread.jspa?threadID=181348
For background: I maintain OneBusAway for iOS, and am investigating options for sidecar data (e.g. how delayed is a bus, is there still room on it, etc.). Ideally, this would all be part of the core OBA API, but that may not be an option. I'd just use Apple's CloudKit, but I want to be able to process incoming data and share the data between iOS and Android. Hence my interest in your product :)
FYI - You can reserve a VM, if you want, but then you're paying until you turn it off. It will always stay hot, though.
Edit: typos/ punctuation
1. Scaling up 2. Scaling down 3. Actually managing the box itself
If what you're making is compute focused, then this kind of thing is a godsend. I want to write code to do some processing and have a team of magic elves handle all the hardware related stuff.
The other advantage is that I can price things really easily. One call == 23s processing time on average. How much do 100 users making an average of 100 calls each day cost me? Running my own boxes means I need to consider reasonable waiting times, peak usage, speed of scaling, etc. With something like this/lambda/google's version I just go cost_per_second multiplied by 23 multiplied by 10,000.
And predictably won't earn you magnitude more than $120/yr.
Thanks for the feedback!
Hopefully everyone who ever writes anything on the Internet about this refers to it as "Azure functions", which will make it possible to find information. This seems unlikely however.
Microsoft would have helped out everyone-with-a-question by giving it a slightly more distinctive name to search by, such as PureFunctions or something.
Search Bing for:
"problem with functions"
"functions won't initialize"
"how to write functions with functions"
"what sort of language can I use functions with"
"getting started with functions"
"error with functions"
"how to write lambda functions with functions"
"my functions function is not functioning"
The pain begins instantly.
Honestly, you're right that we're going to run into fun search engine issues, but Stack Overflow tags should hopefully help.
We opted for making it obvious what our product was doing and Functions was an logical evolution of our WebJobs SDK Functions concept, which is essentially what our product is - this is just a WebJobs SDK-as-a-Service.
Time will tell; I hope we don't have to rebrand someday just to show up in the search engines, but we'll do what we hope is best for the customer.
Don't underestimate the critical importance of being able to effectively search to resolve problems with any given technology. Programming is the process of using Google to find why some thing isn't working as expected, interspersed with writing the occasional line or three of code. Your product name "functions" breaks this process.
You know already its a problem you should fix it now and consider it not a software bug but a branding bug - the beta program has revealed the defect, how you should fix it early before polluting the search engine space with this ill considered product name.
You guys.... so corporate. It's like a Dilbert cartoon.
https://en.wikipedia.org/wiki/Omicron
Alright, any opensource lambda/functions clone can now take this name I guess!
A lot of what I do in my app is write file to the local system, and upload it via FTP to somewhere else. Now, there's no requirement to write the file to anywhere locally (i do it more as a backup, and I could back it up in a database table i suppose), but its super convenient... how does the file system work in a system like this? Would it require Azure Storage?
2. You can access the file system and all your functions share the same files because we're using a network file share.
Is there any information on pricing? Links in various places say to visit the pricing page but the pricing page just says what's free and how it's billed with no actual prices.
What are the limitations? I assume there's some limit to the size of what I upload (data/code/dependencies). Is there a maximum runtime?
Edit - Given this is in the early stages, I'd love to request a manageable runtime limit. I understand why you don't want to have people complaining that they started 10k infinite loops, but I'd like to be able to limit things to either short periods for things I know really should complete in < 10s or longer ones as I've got a bunch of stuff that might take 10 minutes or more I'd also like to do.
This might be an issue on your side though, I can see it being an issue starting 10k long running requests rather than knowing you just need to schedule 10k 1 minute requests.
You should have at least a GB of disk space to work with.
We don't have a maximum runtime, yet, but we're likely add a "timeout" feature in the near future so you can optionally time it out.
> Our pricing is either the dedicate App Service pricing which is GA'd already or the new Dynamic tier which is FREE (as in beer) until beginning of May. We'll have pricing come out sometime this month.
Sounds good, I'll keep an eye out for it. After seeing somewhere else in the thread that this took you < 3 months I would have been very surprised if you'd also settled on pricing already!
> You should have at least a GB of disk space to work with.
That's fantastic, a huge step up from lambda.
> We don't have a maximum runtime, yet, but we're likely add a "timeout" feature in the near future so you can optionally time it out.
Very nice. These two bits of information make functions useful for far more tasks, thank you!
Great job guys
Could I connect to a database on a socket, or is this for 'pure' functions without side effects?
> Write any function under a minute - either when you need a simple job to cleanse a database or to build functionality that processes millions of messages from connected devices. Use your development language of choice (C#, Node.JS, Python and more). Pay only for the time your code runs and trust Azure to scale as needed.
Sounds like you'll be able to connect to other stuff.
IMO functions without side-effects are useless in many contexts, I'd guess that this is one of them, as you probably want to use the results of your computation somehow.
We're built around WebJobs SDK and App Service, so much of the core work was done already and I had a plan in the works for a few months to bring Node support (I'm a Node.js nerd) to WebJobs. WebJobs has been and is increasingly popular, so it was a no brainer for our team to go and expand and promote it. It was still a lot of work to deliver a WebJobsSDK-as-a-service, but we knew we had a solid core and a great PaaS platform before we even got started.
2. Are you going to support Amazon API Gateway style Swagger API routing?
3. How monitoring and tracing is done?
1. We have experimental support for a few other languages (F#, Python, PHP, Batch, etc.). We'll be improving those as we get more customer input on how it should work and we have time to do it. You can track our progress and post issues here: https://github.com/Azure/azure-webjobs-sdk-script
2. We have a service known as Azure API Management which can do that and we're working to integrate first class support for Functions into it. Today, you can manually construct a Swagger with Functions for API Management, but we want to make it even easier in the near future.
3. Monitoring can be done via the Monitoring tab in the portal. We have logs and a streaming realtime view. They are VERY early and you'll see big progress for those views in the next two months.
One feature I'm particularly proud of is our code-less integration that lets you output to various services without writing against their SDK, saving lots of boilerplate code.
I have only played around with Lambda (so I'm not an expert), but I find Azure Functions to be much more streamlined. Lambda had a lot of really confusing options for URL rewrite, and I got really hung up with the fact that even site configuration is not saved until you redeploy. I can understand that behavior for reliability reasons, but they didn't show anything in the UI that showed that either the site or the config was dirty.
Obviously Lambda is more mature at the moment, but there are interesting aspects of Functions compared to them. For instance, is it possible to host a Lambda function on your own hosting plan (or the AWS equivalent?). I couldn't figure this out though the console, but I'm not an AWS expert.
We also have support for hosting Functions on an App Service Environment (ASE), which is your own dedicated set of VMs.
But, I'd like to from you what you like about Lambda and what you think of Functions once you have used it! What are your top 3 favorite features of Lambda?
Cory is in the middle of a great talk where he helps "demystify" these services. (Which I can't find a link to right now...)
1. How does Windows sandboxing implemented in WebJobs?
2. Do I understand correctly that all functions of the same Azure a/c may run in the same sandbox. I.e. you only sandbox users, but not individual Functions?
As mentioned, we'll be working to enhance the local dev scenarios over the next coming months, which goes beyond just being able to run functions locally.