Azure Functions is a new cloud solution from Azure that would let you execute small pieces code or “functions” in the cloud. This means you do not have to worry about the infrastructure or environment to execute your little piece of code to solve any of your business problems.
Functions can make development even more productive, and you can use your development language of choice.
- Pay only for the time your code runs and trust Azure to scale as needed.
- Azure Functions lets you develop serveries applications on Microsoft Azure.
- Supports wide variety of development language choices , such as C#, F#, Node.js, Python or PHP.
- Bring your own dependencies – you can bring any of your Nuget/NPM dependencies for your functional logic.
What can we do with Azure Functions?
Azure Functions is a very good solution for processing data, integrating systems, working with the internet-of-things (IoT), and building simple APIs and micro services.
Functions provides templates to help you get started with some useful scenarios, including the following:
- BlobTrigger – Process Azure Storage blobs when they are added to containers. You might use this function for image resizing.
- EventHubTrigger – Respond to events delivered to an Azure Event Hub. Particularly useful in application instrumentation, user experience or workflow processing, and Internet of Things (IoT) scenarios.
- Generic Webhook – Process webhook HTTP requests from any service that supports webhooks.
- GitHub Webhook – Respond to events that occur in your GitHub repositories.
- HTTPTrigger – Trigger the execution of your code by using an HTTP request.
- QueueTrigger – Respond to messages as they arrive in an Azure Storage queue.
- ServiceBusQueueTrigger – Connect your code to other Azure services or on-premises services by listening to message queues.
- ServiceBusTopicTrigger – Connect your code to other Azure services or on-premises services by subscribing to topics.
- TimerTrigger – Execute cleanup or other batch tasks on a predefined schedule.
Integration Support with other Azure Services:
Following are the services integration supported by Azure Functions app.
- Azure Cosmos DB
- Azure Event Hubs
- Azure Mobile Apps (tables)
- Azure Notification Hubs
- Azure Service Bus (queues and topics)
- Azure Storage (blob, queues, and tables)
- GitHub (webhooks)
- On-premises (using Service Bus)
- Twilio (SMS messages)
Azure functions will be charged based on two pricing plans below:
- App Service Plan – if you already have an Azure App Service running with Logic, Web, Mobile or Web Job, you can use the same environment for your Azure functions execution without needing to pay for extra resources. You will be charged based on regular app service rates.
- Consumption plan – with this plan you only need to pay for how long and how many times your functions runs and computational needs/resource usage during that execution time. Consumption plan pricing includes a monthly free grant of 1 million requests and 400,000 GB-s of resource consumption per month.
You can find further pricing related info here
Support and SLA:
- Free billing and subscription management support
- Flexible support plans starting at $29/month. Find a plan
- 99.95% guaranteed up time. Read the SLA
October 1, 2016
Architecture, Azure, Cloud Computing, Cloud Services, Horizontal Scaling, Performance, Reliability, Resilliancy, Scalability, Scale Down, Scale In, Scale Out, Scale Up, Software/System Design, Vertical Scaling, Virtualization
When you work with Cloud Computing or normal Scalable highly available applications you would normally hear two terminologies called Scale Out and Scale Up or often called as Horizontal Scaling and Vertical Scaling. I thought about covering basics and provide more clarity for developers and IT specialists.
What is Scalability?
Scalability is the capability of a system, network, or process to handle a growing amount of work, or its potential to be enlarged to accommodate that growth. For example, a system is considered scalable if it is capable of increasing its total output under an increased load when resources (typically hardware) are added.
A system whose performance improves after adding hardware, proportionally to the capacity added, is said to be a scalable system.
This will be applicable or any system such as :
- Commercial websites or Web application who have a larger user group and growing frequently,
- or An immediate need to serve a high number of users for some high profile event or campaign.
- or A streaming event that would need immediate processing capabilities to serve streaming to larger set of users across certain region or globally.
- or A immediate work processing or data processing that requires higher compute requirements that usual for a certain job.
Scalability can be measured in various dimensions, such as:
- Administrative scalability: The ability for an increasing number of organizations or users to easily share a single distributed system.
- Functional scalability: The ability to enhance the system by adding new functionality at minimal effort.
- Geographic scalability: The ability to maintain performance, usefulness, or usability regardless of expansion from concentration in a local area to a more distributed geographic pattern.
- Load scalability: The ability for a distributed system to easily expand and contract its resource pool to accommodate heavier or lighter loads or number of inputs. Alternatively, the ease with which a system or component can be modified, added, or removed, to accommodate changing load.
- Generation scalability: The ability of a system to scale up by using new generations of components. Thereby, heterogeneous scalability is the ability to use the components from different vendors.
Scale-Out/In / Horizontal Scaling:
To scale horizontally (or scale out/in) means to add more nodes to (or remove nodes from) a system, such as adding a new computer to a distributed software application.
- Load is distributed to multiple servers
- Even if one server goes down, there are servers to handle the requests or load.
- You can add up more servers or reduce depending on the usage patterns or load.
- Perfect for highly available web application or batch processing operations.
- You would need additional hardware /servers to support. This would increase increase infrastructure and maintenance costs.
- You would need to purchase additional licenses for OS or required licensed software’s.
To scale vertically (or scale up/down) means to add resources to (or remove resources from) a single node in a system, typically involving the addition of CPUs or memory to a single computer.
- Possibility to increase CPU/RAM/Storage virtually or physically.
- Single system can serve all your data/work processing needs with additional hardware upgrade being done.
- Minimal cost for upgrade
- When you are physically or virtually maxed out with limit, you do not have any other options.
- A crash could cause outages to your business processing jobs.
We discussed in detail about the both approach in Scalability, depending on the need you will have to choose right approach. Nowadays high availability of cloud computing platforms like Amazon AWS/Microsoft Azure etc., you have lots of flexible ways to Scale-Out or Scale-Up on a Cloud environment, which provides you with virtually unlimited resources, provided you are being capable to pay off accordingly.
Hope this information was helpful, please leave your comments accordingly if you find any discrepancies or you have any queries.