Amazon MSK Backup for Archival, Replay, or Analytics
AWS Architecture BlogAmazon MSK Backup for Archival, Replay, or Analyticsby Rohit Yadav, Daniel Pinheiro, Johny Duval, and Shawn Sachdev | on19 FEB 2021| inAmazon EMR,Amazon Managed Streaming for Apache Kafka (Amazon MSK),Architecture,AWS Glue,AWS Solutions Implementations,Kinesis Data Firehose|Permalink|ShareAmazon MSKis a fully managed service that helps you build and run applications that useApache Kafkato process streaming data. Apache Kafka is an open-source platform for building real-time streaming data pipelines and applications. With Amazon MSK, you can use native Apache Kafka APIs to populate data lakes. You can also stream changes to and from databases, and power machine learning and analytics applications.Amazon MSK simplifies the setup, scaling, and management of clusters running Apache Kafka. MSK manages the provisioning, configuration, and maintenance of resources for a highly available Kafka clusters. It is fully compatible with Apache Kafka and supports familiar community-build tools such asMirrorMaker 2.0,Kafka Connectand Kafka streams.IntroductionIn the past few years, the volume of data that companies must ingest has increased significantly. Information comes from various sources, like transactional databases, system logs, SaaS platforms, mobile, and IoT devices. Businesses want to act as soon as the data arrives. This has resulted in increased adoption of scalable real-time streaming solutions. These solutions scale horizontally to provide the needed throughput to process data in real time, with milliseconds of latency. Customers have adopted Amazon MSK as a top choice of streaming platforms. Amazon MSK gives you the flexibility to retain topic data for longer term (default 7 days). This supports replay, analytics, and machine learning based use cases. When IT and business systems are producing and processing terabytes of data per hour, it can become expensive to store, manage, and retrieve data. This has led to legacy data archival processes moving towards cheaper, reliable, and long-term storage solutions likeAmazon Simple Storage Service (S3).Following are some of the benefits of archiving Amazon MSK topic data to Amazon S3:Reduced Cost– You only must retain the data in the cluster based on your Recovery Point Objective (RPO). Any historical data can be archived in Amazon S3 and replayed if necessary.Integration with Enterprise Data Lake– Since your data is available in S3, you can now integrate with other data analytics services likeAmazon EMR,AWS Glue,Amazon Athena, to run data aggregation and analytics. For example, you can build reports to visualize month over month changes.Optimize Machine Learning Workloads– Machine learning applications will be able to train new models and improve predictions using historical streams of data available in Amazon S3. This also enables better integration withAmazon Machine Learningservices.Compliance– Long-term data archival for regulatory and security compliance.Backloading data to other systems– Ability to rebuild data into other application environments such as pre-prod, testing, and more.There are many benefits to using Amazon S3 as long-term storage for Amazon MSK topics. Let’s dive deeper into the recommended architecture for this pattern. We will present an architecture to back up Amazon MSK topics to Amazon S3 in real time. In addition, we’ll demonstrate some of the use cases previously mentioned.ArchitectureThe diagram following illustrates the architecture for building a real-time archival pipeline to archive Amazon MSK topics to S3. This architecture uses anAWS Lambdafunction to process records from your Amazon MSK cluster when the cluster is configured as aneventsource. As a consumer, you don’t need to worry about infrastructure management or scaling with Lambda. You only pay for what you consume, so you don’t pay for over-provisioned infrastructure.To create anevent source mapping, you can add your Amazon MSK cluster in a Lambda functiontrigger. The Lambda service internally polls for new records or messages from the event source, and then synchronously invokes the target Lambda function. Lambda reads the messages in batches from one or more partitions and provides these to your function as an event payload. The function then processes records, and sends the payload to anAmazon Kinesis Data Firehosedelivery stream. We use Kinesis Data Firehose delivery stream because it can natively batch, compress, transform, and encrypt your events before loading to S3.In this architecture, Kinesis Data Firehose delivers the records received from Lambda in Gzip file to Amazon S3. These files are partitioned in hive style format by Kinesis Data Firehose:data/year = yyyy/month = MM/day = dd/hour = HHFigure 1. Archival ArchitectureLet’s review some of the possible solutions that can be built on this archived data.Integration with Enterprise Data LakeThe architecture diagram following shows how you can integrate the archived data in Amazon S3 with your Enterprise Data Lake. Since the data files are prefixed in hive style format, you can partition and store the Data Catalog in AWS Glue. With partitioning in place, you can perform optimizations like partition pruning, which enables predicate pushdown for improved performance of your analytics queries. You can also use AWS Data Analytics services like Amazon EMR and AWS Glue for batch analytics. Amazon Athena can be used to run serverless SQL-like interactive queries on visualization and data.Data currently gets stored in JSON files. Following are some of the services/tools that can be integrated with your archive for reporting, analytics, visualization, and machine learning requirements.Figure 2. Analytics ArchitectureCloning data into other application environmentsThere are use cases where you would want to use this data to clone other application environments using this archive.These clusters could be used for testing or debugging purposes. You could decide to use only a subset of your data from the archive. Let’s say you want to debug an issue beyond the configured retention period, but not replicate all the data to your testing environment. With archived data in S3, you can build downstream jobs to filter data that can be loaded into a new Amazon MSK cluster. The following diagram highlights this pattern:Figure 3. Replay ArchitectureReady for a Test DriveTo help you get started, we would like to introduce anAWS Solution: AWS Streaming Data Solution for Amazon MSK(scroll down and see Option 3 tab). There is a single-clickAWS CloudFormationtemplate, which can assist you in quickly provisioning resources. This will get your real-time archival pipeline for Amazon MSK up and running quickly. This solution shortens your development time by removing or reducing the need for you to:Model and provision resources using AWS CloudFormationSet upAmazon CloudWatchalarms, dashboards, and loggingManually implement streaming data best practices in AWSThis solution is data and logic agnostic, enabling you to start with boilerplate code and start customizing quickly. After deployment, use this solution’s monitoring capabilities to transition easily to production.ConclusionIn this post, we explained the architecture to build a scalable, highly available real-time archival of Amazon MSK topics to long term storage in Amazon S3. The architecture was built using Amazon MSK, AWS Lambda, Amazon Kinesis Data Firehose, and Amazon S3. The architecture also illustrates how you can integrate your Amazon MSK streaming data in S3 with your Enterprise Data Lake.TAGS:Apache Kafka,Architecture,data lake,data streaming,SQLRohit YadavRohit Yadav is a Sr. Technical Account Manager based out of Atlanta. He enjoys learning new technologies and helping customers in their cloud adoption journey. He specializes in Containerization, Big Data, and AI/ML technologies.Daniel PinheiroDaniel Pinheiro is a builder working for the AWS Solutions team based out of Ottawa, Canada. Since joining AWS in 2019, he's built AWS Solutions that offer quick, easy to deploy reference architectures for complex technical and business problems.Johny DuvalJohny Duval is the AI/ML Product Manager for the AWS Solutions team. He leads a team of Solution Builders in bringing to market Well-Architected end-to-end products leveraging AI & ML services and technologies. He has worked many years leading startup teams of various sizes through different stages, integrating mobile technology to higher education institutions, launching analytics products to enterprise clients, and operationalizing AI technology to Fortune 500 companies.Shawn SachdevShawn is a Senior Technical Account Manager at AWS. He works with Enterprise customer, and provides technical guidance to help them innovate and build a secure, scalable cloud on the AWS platform. Before AWS, he worked in several Analytics and System Engineering roles. Outside of work, he loves watching sports, is an avid foodie and a craft-beer enthusiast.
Amazon MSK is a fully managed service that helps you build and run applications that use Apache Kafka to process streaming data. Apache Kafka is an open-source platform for building real-time streaming data pipelines and applications. With Amazon MSK, you can use native Apache Kafka APIs to populate data lakes. You can also stream changes to […]
Rohit Yadav
Amazon EMR Amazon Managed Streaming for Apache Kafka (Amazon MSK) Architecture AWS Glue AWS Solutions Implementations Kinesis Data Firehose