Choosing an AWS application integration service - Choosing an AWS application integration service

Choosing an AWS application integration service

Taking the first step

Purpose

Help determine which AWS application integration services are the best fit for your workloads.

Last updated

June 25, 2024

Covered services

Introduction

Application integration is a suite of services that enables communication between decoupled components within microservices, distributed systems, and serverless applications. Amazon Web Services (AWS) offers more than half a dozen application integration services to support a diverse set of workloads running in the cloud.

Choosing an integration service that is the best fit for your organization and workloads can become difficult. This decision guide will help you ask the right questions to discover your requirements and provides clear guidance on how to evaluate and choose the right integration services for your workloads.

This 8½-minute clip is from a one hour recording of a presentation by AWS director of enterprise strategy Gregor Hohpe at AWS re:Invent 2022. It provides an overview of available AWS application integration services.

Understand

One of the key benefits of modernization is the ability to shift operational responsibilities, allowing you to free up resources to do more value-add and innovation-led activities.

There is a spectrum of shared responsibility options across different levels of modernization, ranging from hosting your message broker on Amazon Elastic Compute Cloud (Amazon EC2)—where you are managing scaling, security configurations, provisioning, patching, and more—to serverless offerings where all of the underlying infrastructure is managed.

Diagram showing operational responsibility between AWS application integration services.

As you start to explore and understand your criteria, environment, and the suite of integration services that AWS offers, we recommend that you review some best practices. These best practices are applicable regardless of which service (or suite of services) you choose.

Understand integration in your environment

It's common that some organizations spend more time than they would like on maintaining open-source integrations. We recommend that you consider community sources, and/or backing from enterprises or foundations when making these investments. An investment in these projects is not just financial, but also an investment in knowledge capital and potentially technical debt, as these components and associated integrations will typically need updating. For more information, see the AWS Open Source blog.

Understand your architecture characteristics

The ability to support a wide range of architectures is important. We recommend that you use the AWS Well-Architected Framework as a guide to help you understand the decisions you make when building architectures on AWS. Additionally, using the Well-Architected Framework allows you to learn architectural best practices for designing and operating reliable, scalable, secure, efficient, and cost-effective systems in the Cloud.

Use a combination of integration services

If you are using purpose-built services, a combination of services may be the best fit for your use case. The following lists out a few common ways AWS customers are using a combination of services.

  • Routing Amazon EventBridge or Amazon Simple Notification Service (Amazon SNS) events to an Amazon Simple Queue Service (Amazon SQS) queue as a buffer for downstream consumers.

  • Pulling events directly from a stream (Amazon Kinesis Data Streams or Amazon Managed Streaming for Apache Kafka (Amazon MSK)) or a queue (Amazon SQS or Amazon MQ) with EventBridge Pipes and sending events to an EventBridge bus to push out to consumers.

  • Routing EventBridge or Amazon SNS events to a Kinesis Data Streams or Amazon MSK for gathering and viewing analytics.

Define

Once you have a clearer picture of your criteria, environment, strategic direction, and available services (including both deployment hosted and managed modalities), you need to identify your integration requirements. You might already know some of your requirements if you are migrating to an existing integration platform or message broker. However, you need to establish how these requirements would change if you move to a cloud environment, if at all.

Messaging or streaming platforms

These platforms are expected to fulfill a certain business functionality. Use the following example use cases when considering which functionalities you will need.

Example 1:

Consider an insurance company which receives different claims as messages for different claim types (auto, home, or life) with different business rules. It may mean that the message consumer should have the functionality to route claims to a different destination based on header properties in the message.

Example 2:

Consider an airline in which a flight status update needs to notify all connected systems such as baggage or gate operations using a protocol such as Advanced Messaging Queuing Protocol (AMQP). The big question with functional and business use case primitives is what constitutes a best fit messaging platform. We have multiple choices that can determine the suitability of the platform based on the use case.

  • Market adoption: This platform is widely adopted by a huge customer community and a good enough fit for most use cases. It is tried and tested with a vibrant support community for any issues that may be encountered. It is a low-risk decision with enough training available for the development resources.

  • Best fit for use case: These platforms will be tailored for specific industry use cases such as airlines, logistics, or healthcare. They may be the best fit for those use cases with ready-made templates available for adoption. These platforms can be easy to get started but can lack the level of adoption in the market as well as flexibility. Adopting this type of platform may require extensive time and resources for validation and building in house expertise.

  • Modern: These platforms are built with the next generation architecture to address cloud-scale deployments, multi-tenancy, disaster recovery, and serverless type of pricing. Using this type of platform may require some refactoring of workloads for long-term viability. It uses a cloud-native platform and focuses on using the well-architected principles of modern applications.

Example 3:

If the messaging platform is part of a bigger loan processing workflow which needs to be multi-region, the messaging platform also needs to support the same business requirements. If the business needs the ability to recover and rollback to a previous state in rainy day situations, the underlying messaging or streaming platform also needs capability to have some snapshotting or replay capability to recreate the state of the system.

The integration platform you choose should facilitate asynchronous processing of loan applications or act as the store and forward channel for a multi-step media processing workflow. The criticality of the business process would determine the capabilities needed from the messaging or streaming platform.

Consider

When considering a major application integration architecture in the cloud, there are different ways to determine the functional requirements for each of the integration points.

The following is some of the criteria to consider when choosing an application integration service.

Managed service and operation overhead

Consider moving to the cloud to reduce operational cost by standardizing on managed services that shift the operational burden to AWS. Higher levels of abstraction allow developers and operators to focus on their own unique value-add activities, instead of undifferentiated tasks.

Open source

Consider standardization on open source technologies. Open source can enable an organization to find the right skills—and avoid some risk around lock-in.

Making the wrong choices in an open-source ecosystem can lead to being locked into abstractions and homegrown integrations. Additionally, the responsibility for making different open-source components work together often sits with the organization making the choice. This can lead to organizations to spending significant time maintaining open-source integrations.

Workload characteristics

When choosing the right integration service, it is important to understand the characteristics of the messages that need to be sent between the applications. Key characteristics like the message format, size, retention and priority can drive the decision of the integration service.

Some integration services are better suited for small text based messages whereas some are designed to support multiple formats such as text and binary and offer bigger message sizes. The need to have a replay capability can also be an important factor alongside ordering of messages in some scenarios.

For example, message ordering can be implemented by using the FIFO functionality offered by Amazon SNS and Amazon SQS. There is also a consideration of having a pull or push based architecture, such as EventBridge or Amazon SNS invoking a Lambda function asynchronously.

A pull based architecture could use services such as Amazon SQS or Kinesis Data Streams, where messages are stored on a queue or a stream and then can be retrieved by a consuming system. Messaging services like Amazon MQ offer capabilities around bigger message payloads and have unlimited retention. However, they do not offer replay capability.

Rapid iteration and feature velocity

If your primary focus is building and iterating quickly, serverless services may provide the best value. Serverless services let you build applications without managing infrastructure. They provide managed functionality and integrations to reduce time spent writing boiler plate code.

Another benefit of serverless when testing new ideas is that these services offer usage based pricing. Your code only runs when the service is invoked, so an experiment does not require an upfront investment.

Application portability

Many applications use certain protocols - such as Advanced Message Queuing Protocol (AMQP) or MQ Telemetry Transport (MQTT) - to connect to a messaging service. Alternatively, they have some library dependency which uses a certain messaging protocol. Examples of such libraries or frameworks include Spring Boot, Celery, or MassTransit.

You may want to preserve such applications for different reasons. In these cases, the choice of your integration service also depends on the support of the required protocols to have portability with your applications.

Automation portability

You might need to have a service that provides compatibility with your infrastructure and deployment tools - and run the same integration system that you host on-premises (such as Apache ActiveMQ, RabbitMQ, and Apache Kafka).

Managed open source services (such as Amazon MQ and Amazon MSK) provide the benefits of the cloud, while being compatible with many popular deployment tools used for on-premises deployments.

If refactoring the application is an option, you can benefit from using serverless services for providing this capability natively, as well as rich integration with a variety of AWS services.

Organization size and skills

The skills of your organization are a major factor when deciding on the right integration service. If your teams are familiar with a self managed product and it meets your needs, then having a managed service for the same provides the path of least impact. Doing so, can help you apply the best practices for the service and focus on value add activities.

Choose

Now that you know the criteria you will use to evaluate your application integration needs, you are ready to choose which AWS service or services are right for your workloads in your environment.

Service type When would you use it? What is it optimized for? Associated services

Capacity

Use when you need to decouple publishers and subscribers and send events to multiple subscribers simultaneously.

Optimized for asynchronous, loosely coupled communication between publishers and subscribers. Events provide flexibility in message routing and delivery and are well-suited for event-driven architectures where events play a central role in initiating actions or workflows.

Amazon EventBridge

Amazon SNS

Messaging

Use when you need either pub/sub messaging to broadcast messages to multiple recipients simultaneously, or point-to-point messaging when you need reliable and asynchronous communication between components.

Optimized for high-throughput, scalable, and reliable asynchronous pub/sub and point-to-point messaging between distributed components.

Amazon SNS

Amazon SQS

Amazon MQ

Streaming

Use streaming services such as Amazon Kinesis Data Streams and Amazon Managed Streaming for Apache Kafka (MSK) in scenarios that involve handling and processing real-time streaming data.

Optimized for ingesting, processing, and analyzing large volumes of real-time streaming data for use cases that require real-time analytics, real-time monitoring, data exploration, and other applications that demand the processing of high-velocity data streams.

Amazon Kinesis Data Streams

Amazon MSK

Workflows

Use when you need to design, coordinate, and manage workflows or sequences of tasks in an organized and scalable manner.

Optimized for use cases such as business process management, application orchestration, data pipeline automation, and microservices coordination. Workflows abstract the underlying infrastructure complexity, allowing you to focus on designing and managing your workflows effectively. They are capable of handling dependencies and sequencing, allowing for parallelism and conditional branching while providing fault tolerance, error handling, and retries to ensure reliable workflow execution.

AWS Step Functions

Amazon MWAA

Scheduling

Use scheduling when you need to automate routine tasks such as data processing, backups, or system health checks. Tasks often need to be run at specific times or intervals, such as every night, hour, or minute.

Optimized for reliable, time-based tasks with built-in retry logic. Suitable for workflows requiring precise scheduling and integration with various AWS services.

Amazon EventBridge

Use

You should now have a clear understanding of what each AWS application integration service does—and which one might be right for you. To explore how to use and learn more about each of the available AWS application integration services—we have provided a pathway to explore how each of the services work. The following section provides links to in-depth documentation, hands-on tutorials, and resources to get you started.

Amazon SNS
Amazon SNS icon

Getting started with Amazon SNS

We show you how to manage topics, subscriptions, and messages using the Amazon SNS console.

Explore the guide

Amazon SNS icon

Filter Messages Published to Topics with Amazon SNS and Amazon SQS

Learn how to use the message filtering feature of Amazon SNS.

Get started with the tutorial

Amazon SNS icon

Introducing message data protection for Amazon SNS

This blog post explains what message data protection is and how it works.

Read the blog post

Amazon SNS icon

Amazon SNS - Troubleshooting

Learn how to view configuration information, monitor processes, and gather diagnostic data about Amazon SNS.

Explore the guide

Amazon SNS icon

Build a turn-based game with Amazon DynamoDB and Amazon SNS

Learn how to build a multiplayer, turn-based game using Amazon DynamoDB and Amazon Amazon SNS.

Get started with the tutorial

Amazon SNS icon

Building event driven architectures

Learn how to build on a simple pub/sub implementation using Amazon SNS as our publishing service and Amazon SQS as a subscriber.

Explore the guide

Amazon SNS icon

Archiving and replaying messages with Amazon SNS FIFO

Learn how to archive and replay messages published to Amazon SNS FIFO, which can be useful in failure recovery and state replication scenarios.

Read the blog post

Amazon SQS
Amazon SQS icon

Getting started with Amazon SQS

This guide shows you how to manage queues and messages using the Amazon SQS console.

Explore the guide

Amazon SQS icon

Send Fanout Event Notifications

Learn how to implement a fanout messaging scenario using Amazon SNS and Amazon SQS.

Get started with the tutorial

Amazon SQS icon

Orchestrate Queue-based Microservices

Learn how to design and run a serverless workflow that orchestrates a message queue-based microservice.

Get started with the tutorial

Amazon SQS icon

Send Messages Between Distributed Applications

Use the Amazon SQS console to create and configure a message queue, send a message, receive and delete that message, and then delete the queue.

Get started with the tutorial

Amazon EventBridge
EventBridge icon

Get started with Amazon EventBridge

The basis of EventBridge is to create rules that route events to a target. In this guide, you create a basic rule.

Explore the guide

EventBridge icon

Amazon EventBridge get started tutorials

These tutorials will help you explore the features of EventBridge and how to use them.

Get started with the tutorials

EventBridge icon

Integrating with other AWS services

The following tutorials show you how to integrate EventBridge with other AWS services.

Get started with the tutorials

EventBridge icon

Build event-driven architectures

Learn the basics of event-driven design, how to choose the right AWS service for the job, as well as how to optimize for both cost and performance.

Get started with the tutorial

EventBridge icon

Building event-driven applications with Amazon EventBridge

Learn how to build event-driven applications by connecting multiple applications, including SaaS applications and AWS services, using the serverless event bus provided by Amazon EventBridge.

Get started with the tutorial

Amazon MQ
Amazon MQ icon

Create a connected message broker

Learn how to set up an Amazon MQ message broker and connect a Java application without rewriting your code.

Get started with the tutorial

Amazon MQ icon

Migrate to a message broker in the cloud

Amazon MQ makes it easy to migrate to a message broker in the cloud, such as Apache ActiveMQ and RabbitMQ.

Read the guide

Amazon MQ icon

Creating and connecting to a RabbitMQ broker

Learn how you can use the AWS Management Console to create a RabbitMQ broker and attach your application to it.

Get started with the tutorial

Amazon MQ icon

RabbitMQ workshop

This workshop is a collection of labs covering different aspects and patterns of messaging using RabbitMQ.

Get started with the workshop

Amazon MQ icon

Creating and connecting to an ActiveMQ broker

Learn how you can use the AWS Management Console to create a basic broker.

Get started with the tutorial

Amazon MQ icon

ActiveMQ workshop

Explore messaging concepts such as queues, topics and features of Amazon MQ such as failover, network of brokers.

Get started with the workshop

Amazon MQ icon

Deploy and publish to an Amazon MQ broker using AWS serverless

We walk you through deploying a serverless backend and an Amazon MQ broker in one step using the AWS SAM.

Read the blog post

Amazon Kinesis Data Streams
Kinesis Data Streams icon

Getting started with Amazon Kinesis Data Streams

Learn fundamental Kinesis Data Streams data flow principles and the steps necessary to put and get data from an Kinesis data stream.

Explore the guide

Kinesis Data Streams icon

Build highly available streams with Amazon Kinesis Data Streams

We compare and contrast different strategies for creating a highly available Kinesis data stream in case of service interruptions, delays, or outages in the primary Region of operation.

Read the blog post

Kinesis Data Streams icon

Example Tutorials for Amazon Kinesis Data Streams

These tutorials are designed to further assist you in understanding Amazon Kinesis Data Streams concepts and functionality.

Get started with the tutorials

Kinesis Data Streams icon

Using AWS Lambda with Amazon Kinesis

Learn how to create a Lambda function to consume events from a Kinesis stream.

Get started with the tutorial

Kinesis Data Streams icon

Real Time Streaming with Amazon Kinesis

Explore a series of lab exercises which help users build a streaming analytics application on AWS.

Get started with the tutorials

Amazon MSK
Amazon MSK icon

Getting started using Amazon MSK

This tutorial shows you an example of how you can create an MSK cluster, produce and consume data, and monitor the health of your cluster using metrics.

Get started with the tutorial

Amazon MSK icon

Getting started using MSK Serverless clusters

This tutorial shows you an example of how you can create an MSK Serverless cluster, create a client machine that can access it, and use the client to create topics on the cluster and to write data to those topics.

Get started with the tutorial

Amazon MSK icon

Amazon MSK Labs

These labs can either be run on personal or corporate AWS accounts or accounts provisioned by AWS Account teams for events that use workshop studio.

Get started with the labs

AWS Step Functions
Step Functions icon

Getting started with AWS Step Functions

These tutorials walk you through creating a basic workflow for processing credit card applications.

Get started with the tutorials

Step Functions icon

Introduction to Step Functions

This course introduces the key components of Step Functions to help you get started managing workflows within an application.

Get started with the course

Step Functions icon

Large-scale data processing with AWS Step Functions

Learn how large-scale data processing applications can be built using Step Functions.

Get started with the workshop

Step Functions icon

Design Patterns for AWS Step Functions

Learn how to implement design patterns in your Step Functions state machines and why to use each one.

Get started with the course

Step Functions icon

Schedule a Serverless Workflow with AWS Step Functions and Amazon EventBridge Scheduler

We show you how to invoke a state machine using EventBridge Scheduler based on the schedule you define.

Get started with the tutorial

Step Functions icon

AWS Step Functions Workshop

Learn how to use the primary features of AWS Step Functions through a series of interactive modules.

Get started with the workshop

Amazon MWAA
Amazon MWAA icon

Get started with Amazon Managed Workflows for Apache Airflow

This guide describes the prerequisites and the required AWS resources needed to get started with Amazon MWAA.

Explore the guide

Amazon MWAA icon

Configuring the aws-mwaa-local-runner in a CD pipeline

This tutorial guides you through the process of building a continuous delivery (CD) pipeline in GitHub using Amazon Managed Workflows for Apache Airflow's aws-mwaa-local-runner to test your Apache Airflow code locally.

Get started with the tutorial

Amazon MWAA icon

Restricting an Amazon MWAA user's access to a subset of DAGs

We show how you can restrict individual Amazon MWAA users to only view and interact with a specific DAG or a set of DAGs.

Get started with the tutorial

Amazon MWAA icon

Amazon MWAA for Analytics Workshop

Learn to build and orchestrate data and ML pipelines that include many of the above mentioned services, and with that you will gain familiarity and a better understanding of the hooks and operators available as part of Airflow to manage your pipelines/workflows on AWS.

Get started with the workshop

Explore

Once you have determined which approach best fits your workload for your environment, we recommend that you review these resources to help you begin implementing your approach. You can find service-specific resources in the previous section, and general event-driven architecture resources in the following section.

Architecture diagrams

Explore reference architecture diagrams to help you create a highly available, secure, flexible, and cost effective architectures.

Explore architecture diagrams

Whitepapers

Explore whitepapers to help you get started, and learn best practices around event driven architectures.

Explore whitepapers

Blogs

Explore blogs to help you stay up to date on the latest technologies, and modernize your applications.

Explore blogs