Complex applications require a communication setup in order for their components to exchange messages. Furthermore, even minor changes in the message sequence can hamper the data flow in some instances. As a result, developers seek automated services to help them manage this message-based communication. One such message management solution is Amazon SQS. Using Amazon’s Simple Queue Service, you can easily store, transmit and receive messages between various software components without any loss. Modern application development relies on cloud service providers such as AWS, Azure, and Google Cloud Services, and does not necessitate organizations to set up and maintain infrastructure. Typically, the term Serverless Development is used to describe this paradigm.

This article will introduce you to Amazon SQS and Serverless Framework along with the key features that they offer. It will also provide you with a step-by-step guide on how to create a Serverless SQS Queue using the Serverless Framework. Read along to learn more about Serverless SQS Queue.

What is Amazon SQS?

Amazon SNS Logo
Image Source

Amazon Simple Queue Service (Amazon SQS) is a distributed Message Queuing Service introduced by Amazon that allows for programmatic message sending via web service applications as a means of communicating over the Internet. SQS is designed to provide a highly scalable hosted message queue that addresses issues caused by the common Producer-Consumer problem. There are two types of queues in Amazon SQS: Standard Queues and AWS SQS FIFO Queues. The Standard Queue provides at least one delivery and the highest possible throughput whereas the FIFO Queues ensure that the messages are only processed once and in the first-in, first-out format.

Key Features of Amazon SQS

Some of the key features of Amazon SQS are as follows:

  • Durability: Amazon SQS uses multiple servers to securely store your messages. Furthermore, its Standard Queues and FIFO Queues use an at-least-once and exactly-once message delivery system.
  • Security: You can use Amazon SQS to exchange sensitive data between applications by encrypting each message body with Server-Side Encryption (SSE). The integration of Amazon SQS SSE with AWS Key Management Service (KMS) enables you to centrally manage the keys that protect SQS messages as well as keys that protect your other AWS resources.
  • Scalability: Amazon SQS leverages AWS to dynamically scale in response to demand. SQS scales elastically with your application, eliminating the need for capacity planning and pre-provisioning.
  • Zero Administrative Overhead: All ongoing operations and underlying infrastructure required to provide a highly available and scalable message queuing service are managed by AWS. SQS queues are created dynamically and scale automatically, allowing you to build and scale applications quickly and efficiently.

What is Serverless Framework?

Serverless Framework logo
Image Source

Serverless Framework is an open-source project that is popular among Amazon Web Services (AWS) customers who want to quickly build and deploy serverless applications using services such as AWS Lambda and Amazon API Gateway. An app created using the Serverless framework can be as simple as a couple of lambda functions to complete some tasks or as complex as an entire back-end made up of hundreds of lambda functions. Serverless Framework supports all runtimes provided by the cloud provider of your choice.

How does Serverless Framework work?

Serverless Framework is open-source software that creates, compiles, and packages code for serverless deployment before deploying it to the cloud. Let’s understand the working of Serverless Framework by taking an example of a Python environment. Serverless Framework creates a self-contained Python environment along with all the dependencies. The environment is then packaged into the standardized zip file for AWS Lambda, and all of the associated AWS resources required for deployment in an AWS CloudFormation template are created. Finally, it copies the code to AWS and initiates the stack creation, which enables AWS services for creating the serverless application.

Serverless Framework accomplishes this by providing an Event Queue into which a combination of standard provided packages and templates, as well as additional open-source plugins, can be combined to expand functionality.

Next in this article, you will learn how to create a Serverless SQS Queue

What is AWS Lambda?

Lambda Logo
Image Source

Amazon Web Services Lambda is an event-driven, Serverless Computing Platform provided by Amazon that runs your code in response to events and manages the underlying compute resources for you automatically. These events could include state changes or updates, such as a user adding an item to a shopping cart on an eCommerce website. In AWS Lambda, code is executed in response to events in AWS services such as adding/deleting files in S3 buckets, HTTP requests from Amazon API gateway, and so on. Although Amazon Lambda can only be used to run background tasks, it allows you to concentrate on your core product and business logic rather than managing operating system (OS) access control, patching, right-sizing, provisioning, scaling, etc.

How to create a Serverless SQL Queue?

Follow the steps given below to create a Serverless SQL Queue:

  • Create a new project from aws nodejs template using the following command:
serverless create --template aws-nodejs
  • Once you execute the above command, the following files will be created:
    • Serverless.yml
    • Handler.js: It represents a demo function
  • Once you’ve updated the generated sources for your demo function, they would look like this:
provider:
 name: aws
 runtime: nodejs12.x
 region: us-east-1
 stage: prod
 environment:
   ...
   SQS_QUEUE_URL: { Ref: NewSQSQueue }
 iamRoleStatements:
   - Effect: Allow
     Action:
       - sqs:*
     Resource:
       Fn::GetAtt: [ NewSQSQueue, Arn ]

...

resources:
 Resources:
   NewSQSQueue:
     Type: "AWS::SQS::Queue"
     Properties:
       QueueName: sqs-queue-${opt:stage, self:provider.stage}.fifo
       FifoQueue: true
  • This will create one new first-in-first-out (FIFO) Serverless SQS Queue and the associated IAM roles.
  • The queue name will be sqs-queue-prod.fifo (all FIFO queues must end with the suffix.fifo), and the SQS url will be available as an environment variable in the rest of your application via process env.SQS QUEUE URL.
  • In case you want a lambda function to be triggered when a new Serverless SQS message is received, add a simple lambda function with an event trigger to your Serverless SQS Queue like this:
eventRouter:
 handler: src/handlers/event_router.handler
 events:
   - sqs:
       arn:
         Fn::GetAtt:
           - NewSQSQueue
           - Arn
  • Whenever a message is delivered to the Serverless SQS queue you just created, the lambda function will be called.

What Makes Hevo’s Real-time Data Integration & Modeling Process Unique?

Transforming data can be a mammoth task without the right set of tools. Hevo’s automated platform empowers you with everything you need to have a smooth Data Collection, Processing, and Integration experience. Our platform has the following in store for you!

  • Auto Schema Mapping: Hevo takes away the tedious task of schema management & automatically detects the format of incoming data and replicates it to the destination schema.
  • Data Transformations: Best-in-class & Native Support for Complex Data Transformation at fingertips. Code & No-code Flexibility is designed for everyone.
  • Built to Scale: Exceptional Horizontal Scalability with Minimal Latency for Modern-data Needs.
  • Built-in Connectors: Support for 100+ Data Sources, including Databases, SaaS Platforms, Files & More.
  • Blazing-fast Setup: Straightforward interface for new customers to work on, with minimal setup time.
  • Live Support: The Hevo team is available round the clock to extend exceptional support to its customers through chat, email, and support calls.
  • Exceptional Security: A Fault-tolerant Architecture that ensures Zero Data Loss.
Sign up here for a 14-Day Free Trial!

Serverless SQS Queue: Concurrency Control in AWS Lambda

One of the most common architectural reasons for using a Serverless SQS queue is to relieve stress from another part of your architecture. This could include avoiding database overload or rate limits on a third-party API when processing a large batch of messages. The combination of Lambda’s auto-scaling capabilities and a large volume of messages in your Serverless SQS queue could cause serious problems with your downstream services and this is where Lambda’s concurrency controls come in handy. Concurrency controls allow you to specify the maximum number of instances of a function that can be executed at any given time.

Individual AWS Lambda functions can now have a pre-defined concurrency limit. The concurrency limit you specify will reserve a portion of your account’s concurrency limit for a specific function. This feature allows you to throttle a given function if it reaches a predefined maximum number of concurrent executions. This is useful when you want to control the consumption of Elastic Network Interfaces (ENI) and IP addresses for functions accessing a private VPC or when you want to limit traffic rates to downstream resources called by Lambda (for example, databases).

Conclusion

This blog introduced you to Amazon SQS and Serverless Framework along with the key features that they offer. It also introduced you to the steps required to create a Serverless SQS Queue in a seamless fashion. If you want to integrate data from various data sources into your desired Database/destination for free and seamlessly visualize it in a BI tool of your choice, Hevo Data is the right choice for you! It will help simplify the ETL and management process of both the data sources and destinations.

Visit our Website to Explore Hevo

Hevo Data, a No-code Data Pipeline provides you with a consistent and reliable solution to manage data transfer between a variety of sources and a wide variety of Desired Destinations, with a few clicks. Hevo Data with its strong integration with 100+ sources (including 40+ free sources) allows you to not only export data from your desired data sources & load it to the destination of your choice, but also transform & enrich your data to make it analysis-ready so that you can focus on your key business needs and perform insightful analysis using BI tools.

Want to take Hevo for a spin?

Sign Up for a 14-day free trial and experience the feature-rich Hevo suite first hand. You can also have a look at the unbeatable pricing that will help you choose the right plan for your business needs.

Share your experience of learning about how to create a Serverless SQS Queue in the comments below!

mm
Former Research Analyst, Hevo Data

Rakesh is a Cloud Engineer with a passion for data, software architecture, and writing technical content. He has experience writing articles on various topics related to data integration and infrastructure.

No-code Data Pipeline For your Data Warehouse