AWS vs. Azure – Lambda vs. WebJobs

Difficulty Level:    

Back to one year ago, I started using Microsoft Azure to build my first cloud-first web application. My own application covered:

  • Collecting and storing content from my favorite bloggers, YouTube channels and RSS subscribers.
  • Auto performing searching and tagging information with predefined condition frequently.
  • Supporting to add notes, comment to each article.

I used Azure Websites for web application and WebJobs for all background jobs, they’re fantastic services from Microsoft Azure. I stopped my project because I found better tool for my purposes (I’m using OneNote and feedly now), but I learnt a lot after all.

Two days ago (13 Nov 2014), at AWS re: Invent, Amazon announced to worldwide cloud developers and their partners a similar service named AWS Lambda.

I did my research about AWS Lambda and in this post I would like to compare it to Azure WebJobs from Microsoft.

First of all, AWS Lambda and Azure WebJobs are:

  • Zero-administration compute platforms, they are PaaS.
    • You don’t have to configure, launch, or monitor any virtual machine.
    • You don’t have to install any operating systems or language environment.
    • You don’t need to think about scale or fault tolerance.
    • You don’t need to request or reserve capacity.
  • The services help you implement your background jobs and deploy them to abstract environment.

And the following table shows us what differences between them are:

AWS Lambda Azure WebJobs
Acceptable Languages/ File Types .js (using Node.js) YES YES
.cmd NO YES
.bat NO YES
.exe NO YES
.ps1 (using PowerShell) NO YES
.sh (using Bash) NO YES
.php (using PHP) NO YES
.py (using Python) NO YES
.zip (1) YES YES
Execution Modes On Demand NO YES
Continuously Running Task NO YES
Schedule Task YES (2) YES
Run with Triggers YES YES
Independent Service YES NO (3)
Supported Tools Management Tool AWS Management Console Azure Scheduler
Audit Trail Tool AWS CloudWatch Azure Job History
Deployment Tool AWS Management Console Azure Portal and Visual Studio Publishing Tool
Limitations Allocated memory 128MB to 1GB Depend on Azure Websites subscription plan
Number of threads/ processes 256
Local storage consuming 512 MB or 1024 file descriptors
Cost Cost model Independent cost Included in Azure Websites cost
Impacted factors Allocated memory and total execution time (called GB-s) Number of instances and band width

Here’s some typical scenarios that would be great for the AWS Lambda or Azure WebJobs:

  • Image processing or other CPU-intensive work.
  • Queue processing.
  • RSS aggregation.
  • File maintenance, such as aggregating or cleaning up log files.
  • Data indexing or synchronization
  • Other long-running tasks that you want to run in a background thread, such as sending emails.
  • Etc.

For now, Azure WebJobs is the winner but AWS Lambda is just a preview version, and technologies are changing every day, so I’ll come back and perform my comparison again for next couple months.


NOTES:

(1) Developers can implement their functions then upload compressed package (.zip file) to AWS Lambda or Azure WebJobs.

(2) AWS Lambda functions can be triggered by external event timers.

(3) Azure WebJobs is Azure Websites Component, it must run along with Azure Websites.


Related Links

Son Nguyen

Son Nguyen

Son Nguyen is a Cloud Consultant working for FPT Software’s Cloud Innovation team. With deep knowledge in AWS and MS Azure, Son acts as a cloud consultant in various areas, ranging from assessment to architecture design, supporting customers from Japan, EU to US.

You may also like...

1 Response

  1. aws training says:

    Thank you very much ! You have cleared out the difference between them.

Leave a Reply

Your email address will not be published. Required fields are marked *

*