DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
  1. DZone
  2. Software Design and Architecture
  3. Cloud Architecture
  4. AWS Lambda: A WhatsApp-Like Movement in Serverless Computing

AWS Lambda: A WhatsApp-Like Movement in Serverless Computing

Learn about the functions, components, and use cases of the AWS Lambda environment for microservices architecture and serverless computing.

Dr Rabi Prasad Padhy user avatar by
Dr Rabi Prasad Padhy
·
Oct. 16, 18 · Tutorial
Like (4)
Save
Tweet
Share
6.86K Views

Join the DZone community and get the full member experience.

Join For Free

We are witnessing a paradigm shift in IT architecture evolution and infrastructure provisioning using infrastructure as code. We also know the pain of onboarding physical servers, and how easy it has become with container technology and cloud infrastructure/platforms/software services (IaaS, PaaS, SaaS, etc). The traditional waterfall model to the current agile/DevOps model to the future NoOps Model gives an opportunity to explore next-generation application architecture. Physical servers, Virtual Machines, then containers, and now serverless computing have acted as a game changer for the cloud computing space. In this post, I will give you a big-picture view of the AWS Lambda service.

Serverless computing is a hot topic in cloud computing architecture. The "Big Five" public cloud vendors — Amazon, Microsoft, Google, IBM, and Alibaba — are heavily invested in serverless. Serverless architectures consist of two concepts: Function as a Service (FaaS) and Backend as a Service (BaaS). These two service models, "FaaS and BaaS," fall under Platform as a Service (PaaS).

AWS Lambda is a FaaS (Function as a service)/ It lets developers run code without provisioning or managing servers. The Lambda service is designed to serve microservices (for example, lightweight web server frameworks like Node.js ) instead of resource-intensive frameworks like Apache, Websphere, or .NET. Since the release of AWS Lambda, microservice applications has become a buzzword and starting point for developers to be part of the cloud journey, as serverless computing is a cloud-computing execution model.

Currently, microservice architecture is spreading in large enterprises and is now one of the the driving forces of innovation. Many companies are already using it; some are very actively implementing it and some are trying to use it. If we can focus on the latest trend in the industry — adopting cloud services — "FaaS" services are drastically increasing. The IT industry is witnessing a WhatsApp-like movement in the adoption of serverless architecture, developing microservice applications in the public cloud.

Image title

If we compare Lambda with Docker containers, both have a place in the modern digital enterprise. Both services are used to build microservices, but serve different needs. If we want to eliminate application management and don't care about the architecture, then Lambda (serverless) is the best option. If we want to deploy an application on a specified system architecture and have control over it, then Docker (containers) will be the best option.

Image title

Monolithic vs. SOA vs. Microservice Application Design Approach

There are multiple issues a developer can face while developing and deploying a monolithic application, like storing all application components in one archive (EAR or WAR). The size of the file will keep growing when the application is enhanced. With every new release, there are new functionalities and features added, so the code base keep grows. Initially, we can neglect it, but eventually, it will hamper development teams' productivity, as the IDE cannot handle large amount of code efficiently. A small change in one module of the application demands the deployment of the entire application.

Service Oriented Architecture (SOA) is an architectural pattern that guides a business solution to create, organize, and reuse its computing components. Adopting SOA will help developers separate business process from the application and the latest method of application development, i.e. microservice applications with serverless computing, can solve the problems of monolithic and SOA frameworks. Application functionalities are broken down into small services which talk to each other using HTTP/REST (synchronous or asynchronous). For example, an application might consist of services like the invoice management service, the user administration service, etc. These services can be developed independently and we can deploy them independently with one-to-one or one-to-many mapping between services and the database. This will keep things smooth when we touch one module and we can relax because our other module will still be operational.

There are four ways of running code in AWS cloud:

  1. EC2 as IaaS (infrastructure as a service)

  2. ECS as a hosted container environment

  3. Beanstalk as PaaS (platform as a service) to abstract the infrastructure

  4. Lambda as the Intersection of EC2, ECS, and Elastic Beanstalk

Compute Options

Compute options for AWS lambda include VMs, containers, and serverless.

  • VM: Machine as the unit of scale (abstracts the hardware)

  • Containers: Application as the unit of scale (abstracts the OS)

  • Serverless: Functions as the unit of scale (abstracts the application)

Use Cases

Here are some of the most popular use cases of AWS Lambda:

  • VMs: When you want to configure Storage, Network, OS

  • Containers: When you want to run servers configure applications and control scaling

  • Serverless: To run your code whenever it is needed

Why Use Lambda?

AWS Lambda runs our code in response to events without provisioning or managing servers. It takes an event from an AWS Resource and creates an Instance to execute it. We only need to provide the code. There is no Infrastructure to manage and no startup/shutdown cost. Scalability and monitoring are built in, and there is zero administration needed.

Components of Lambda

  • Lambda functions

  • An Event Source

  • The Lambda service

  • The Function Networking Environment

Lambda Functions

  • Our code (Java, NodeJS, Python, and any other supported languages)

  • The IAM role that the code assumes during execution

  • The amount of memory allocated to our code

Event Source Options

  • S3 Bucket

  • API Gateway

  • DynamoDB

  • SQS

  • Kinesis Streams

  • SNS

  • CloudWatch

  • Amazon AI

AWS Lambda supports Node.js, Python, Java, C#, and Go.

This has been an overview of the AWS Lambda environment for microservices and serverless computing, including its design approach, functions, components, compute options, and use cases.

AWS AWS Lambda Serverless computing Computing application microservice Web Service Cloud computing SOA Docker (software)

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • How To Validate Three Common Document Types in Python
  • Distributed Stateful Edge Platforms
  • Best Practices for Writing Clean and Maintainable Code
  • The Top 3 Challenges Facing Engineering Leaders Today—And How to Overcome Them

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: