{"id":22380,"date":"2023-12-19T14:13:06","date_gmt":"2023-12-19T08:43:06","guid":{"rendered":"https:\/\/blogrevamp.cashfree.com\/?p=22380"},"modified":"2023-12-19T14:17:19","modified_gmt":"2023-12-19T08:47:19","slug":"real-time-success-rate-analytics-with-apache-flink","status":"publish","type":"post","link":"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/","title":{"rendered":"How Cashfree Payments built real-time Success Rate analytics with Apache Flink"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #005c31;color:#005c31\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #005c31;color:#005c31\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#Earlier_System_Architecture\" >Earlier System Architecture&nbsp;<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#What_is_the_solution_to_the_above_problems\" >What is the solution to the above problems?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#Apache_Flink_Architecture_and_Components\" >Apache Flink: Architecture and Components<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#Building_Realtime_Success_Rate_System_in_Cashfree_Payments\" >Building Realtime Success Rate System in Cashfree Payments<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#Architecture\" >Architecture<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#Flink_Application_Components\" >Flink Application Components<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#Challenges_faced\" >Challenges faced<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#Restrictions_on_the_number_of_windows\" >Restrictions on the number of windows:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#Flink_Application_Deployment\" >Flink Application Deployment<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#The_current_state_of_the_SR_system_at_Cashfree_Payments\" >The current state of the SR system at Cashfree Payments<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#The_impact_of_using_Apache_Flink\" >The impact of using Apache Flink<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/#What_next\" >What next?&nbsp;&nbsp;<\/a><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\">At Cashfree Payments we keep a sharp eye on transaction Success Rates. We do our best to ensure that our Success Rate (SR) consistently exceeds 90%. Monitoring our transaction Success Rate helps us make the right decisions at the right time by rerouting transactions to stable channels. We also contact affected banks and notify customers in case of SR drop.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Earlier_System_Architecture\"><\/span>Earlier System Architecture&nbsp;<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cashfree Payments had built an SR analytics system using SQL-exporter where we run SQL-exporter every 10 seconds and push transaction details to the time series database VictoriaMetrics. We were using <a href=\"https:\/\/docs.victoriametrics.com\/operator\/quick-start.html#vmrule\">VMRule<\/a> (Victoria Metrics Rule) to create a ruleset that was used to trigger <a href=\"https:\/\/docs.victoriametrics.com\/operator\/quick-start.html#vmalert\">VMAlert<\/a> (VictoriaMetrics Alert).&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, there were some challenges with this system as mentioned below:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SQL queries were intermittently getting timeout errors when transaction volume and cardinality increased and scaling up SQL was not cost-effective.<\/li>\n\n\n\n<li>The current system had to go through multiple components like an S3 bucket, MySQL database, SQL-exporter, VMRule, VictoriaMetrics TSDB, VMAlert etc. It was very difficult to debug issues since it didn\u2019t have a rich logging system.<\/li>\n\n\n\n<li>The minimum transaction threshold configuration was not working due to the behaviour of Prometheus metrics and VM storage.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_is_the_solution_to_the_above_problems\"><\/span><strong>What is the solution to the above problems?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We need a solution which can solve the following requirements:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A scalable framework which can compute SR for high transaction volume.<\/li>\n\n\n\n<li>A system which can process transaction data in real time.<\/li>\n\n\n\n<li>Low latency and high throughput system for calculating the transaction SR<\/li>\n\n\n\n<li>A system with better rule configurations, and better logging.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">We explored frameworks which can support the above use cases. Apache Spark and Apache Flink are both open-source, distributed data processing frameworks used widely for big data processing and analytics. Apache Spark is the third-generation data processing framework which processes data in micro batches. Apache Flink is the fourth-generation data processing framework which does data processing in near real-time. We used Apache Flink because of its advanced features and it fits our use cases.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Apache_Flink_Architecture_and_Components\"><\/span><strong>Apache Flink: <\/strong>Architecture and Components<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Apache Flink is a distributed processing engine for stateful computations over <em>unbounded and bounded<\/em> data streams. The Flink application runs on a cluster which has a job manager and a bunch of task managers. A job manager is responsible for the effective allocation and management of computing resources. Task managers are responsible for actually doing the computation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The client system submits the job graph to the job manager. The JobGraph represents a Flink dataflow program, at the low level that the JobManager accepts. The job graph is converted to an execution graph by the job manager. Also, it submits execution tasks to task managers. Task managers do computation and sync back the result with the job manager.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/MULtcX7nFcqQx-KcH1IGe5UuVu_rjiEhCeai69396HgUdK2hzx80p--q_-G8gx0nlfLUapxJiyfWObeP2BXQChgbZc3cEsRBzk86BA_Ov6Z2KBEHeQWanTvYgCn9PmPwJdOIBorXg2_nErfkEHKIULk\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Building_Realtime_Success_Rate_System_in_Cashfree_Payments\"><\/span>Building<strong> <\/strong>Realtime Success Rate System in Cashfree Payments<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Architecture\"><\/span>Architecture<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After we decided to use Apache Flink as our stream processing framework, there were other choices to be made for source of input, caching etc.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maxwell CDC pipeline: All the transaction events are pushed to Maxwell pipeline from the payment service and we chose Maxwell Kafka as our source of input for calculating transaction SR.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Redis: We wanted to store all SR rules in the cache and fetch rules quickly to the Flink application to apply them in real-time.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kafka: Once we identify that the SR is less than the configured threshold, an alert message is put into the Kafka topic which is sent to our merchants and internal teams.&nbsp;&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/TCxacA4w1YdhaSnJkltmT_flRn6sP8b6u-ncLbVNQGR-8BSX_3nTxZTn0wE9NJc3x9bIQrNj2yamAOEvLZzLGfs0UoW0cICyiwHl_D9GnZuHha1cBj9UdnFSDNtvnS3wntgDrNsizikECaK6wKtHoRw\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Flink_Application_Components\"><\/span>Flink Application Components<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Flink Kafka Consumer:<\/strong> Consumes stream of transactions data from Kafka topic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Watermark Strategies:<\/strong> Out-of-order transactions are handled by configuring a watermark strategy. The time notion considered here is <em>Event time<\/em> (transaction time<em> <\/em>which is attached to each record<em>)<\/em>. This allows for consistent results even in the case of out-of-order events or late events.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>DynamicKeyFunction: <\/strong>This performs data enrichment with a dynamic key. The subsequent keyBy hashes this dynamic key and partitions the data accordingly among all parallel instances of the following operator.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Flink Aggregator:<\/strong> This uses the Flinks keyBy operator to do group by on fields like payment gateway, payment mode, merchant identifier etc and computes aggregate transaction count to calculate SR in real-time.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How DynamicKeyFunction works:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/231FVH9zIIF4K-LS2sgnsvXfwMNk2DSYQ_gJje4XS6fm7OT2ha_SzoVcfuq552ZgymwumV74BvOl0WrAMnizdcaHI8jE4fFJo_LpZcU94c95wngQDT0GMvpXiscruI5FCObK_60RIcsc6FUu0KoQKM8\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Rule Executor:<\/strong> The rule executor calculates SR by using the formula <em>SR = success transaction count \/ total transaction count<\/em>. Then checks if any rule threshold is breached. If yes, alert deduplication is done and a valid alert is pushed to Kafka.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Challenges_faced\"><\/span>Challenges faced<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Building a production-ready application with a new framework comes with its challenges. We were able to overcome all of these challenges and completed the production-ready system.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Restrictions_on_the_number_of_windows\"><\/span>Restrictions on the number of windows:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Flink Windows splits the stream into \u201cbuckets\u201d of finite size, over which we can apply computations like aggregation. More details are <a href=\"https:\/\/nightlies.apache.org\/flink\/flink-docs-release-1.17\/docs\/dev\/datastream\/operators\/windows\/\">here<\/a>.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We can\u2019t have many sliding windows with different window sizes. This is because the same transaction will be present in all of these windows and we will be processing events under all these windows. Since all processing happens in memory, we can\u2019t hold more Windows states.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, we have restricted the number of sliding windows for real-time to support only 15m, 30m, 1h and 12h window sizes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Flink_Application_Deployment\"><\/span>Flink Application Deployment<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apache Flink is an adaptable framework and it allows multiple deployment options to deploy an application. Flink on Amazon EKS, AWS Managed service Kinesis Data analytics and EMR with EC2 are some of them. Based on our requirements and cost feasibility we decided to deploy the Flink application in Amazon EKS using Flink Kubernetes Operator. Flink Kubernetes Operator acts as a control plane to manage the complete deployment lifecycle of Apache Flink applications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_current_state_of_the_SR_system_at_Cashfree_Payments\"><\/span>The current state of the SR system at Cashfree Payments<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_impact_of_using_Apache_Flink\"><\/span>The impact of using Apache Flink<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A real-time system: We built a better system that works in subsecond latency for finding SR for customers. It reduced a lot of noise and false alerts.<\/li>\n\n\n\n<li>A more scalable system: Apache Flink is a highly scalable system, with horizontal scaling. The system can scale to a high number of transactions. We did load testing by creating ~20k rules across multiple merchants with 15m, 30m, 1h, and 12h&nbsp; sliding windows enabled. The system was scalable and didn\u2019t face any scale issues.<\/li>\n\n\n\n<li>A better logging system to debug issues: Multiple components are reduced to a single Flink component. Flink comes with rich logging configurations and we can add more custom logs for getting more information. We are pushing logs to Kibana(info logs) and Datadog (warn and error logs).<\/li>\n\n\n\n<li>A better Monitoring and Alert system: Flink supports an inbuilt dashboard and alerting system to track system health. It also provides custom metrics and alerting. We have integrated with Prometheus for pushing metrics, Grafana for visualisation, and Grafana-oncall for getting alerts.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_next\"><\/span>What next?&nbsp;&nbsp;<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Currently, we are working on Merchant-level SR analytics of our APIs using Apache Flink.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Did this post intrigue you? If so, get in touch with us! We have some exciting opportunities in store for excellent engineers just like you!<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.cashfree.com\/careers\/\"><img decoding=\"async\" src=\"https:\/\/lh7-us.googleusercontent.com\/6ru7pkEr2AK7pNxwldJJOsfxRKYJs8XLoUhWE-OVoB46nOO3KQZMVtKCoIeSs_qZ9VHO909oXOjOjWQiErgxLZesmLexCNERTQWXacSIaH2knXbcTorYomU2EzhpWdfB2zUoy6YkpxRCuW662nF0P2U\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.cashfree.com\/careers\/\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>At Cashfree Payments we keep a sharp eye on transaction Success Rates. We do our best to ensure that our Success Rate (SR) consistently exceeds 90%. Monitoring our transaction Success Rate helps us make the right decisions at the right time by rerouting transactions to stable channels. We also contact affected banks and notify customers<\/p>\n","protected":false},"author":98,"featured_media":22381,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_themeisle_gutenberg_block_has_review":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1497],"tags":[],"class_list":["post-22380","post","type-post","status-publish","format-standard","has-post-thumbnail","category-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How Cashfree Payments built real-time Success Rate analytics with Apache Flink<\/title>\n<meta name=\"description\" content=\"Discover seamless transactions with Cashfree Payments, where our dedicated focus on success rates ensures reliability.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Cashfree Payments built real-time Success Rate analytics with Apache Flink\" \/>\n<meta property=\"og:description\" content=\"Discover seamless transactions with Cashfree Payments, where our dedicated focus on success rates ensures reliability.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/\" \/>\n<meta property=\"og:site_name\" content=\"Cashfree Payments Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-19T08:43:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-19T08:47:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/blogrevamp.cashfree.com\/wp-content\/uploads\/2023\/12\/TN.jpg?fit=1203%2C810&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1203\" \/>\n\t<meta property=\"og:image:height\" content=\"810\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kiran Kumar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kiran Kumar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How Cashfree Payments built real-time Success Rate analytics with Apache Flink","description":"Discover seamless transactions with Cashfree Payments, where our dedicated focus on success rates ensures reliability.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/","og_locale":"en_US","og_type":"article","og_title":"How Cashfree Payments built real-time Success Rate analytics with Apache Flink","og_description":"Discover seamless transactions with Cashfree Payments, where our dedicated focus on success rates ensures reliability.","og_url":"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/","og_site_name":"Cashfree Payments Blog","article_published_time":"2023-12-19T08:43:06+00:00","article_modified_time":"2023-12-19T08:47:19+00:00","og_image":[{"width":1203,"height":810,"url":"https:\/\/i0.wp.com\/blogrevamp.cashfree.com\/wp-content\/uploads\/2023\/12\/TN.jpg?fit=1203%2C810&ssl=1","type":"image\/jpeg"}],"author":"Kiran Kumar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kiran Kumar","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/#article","isPartOf":{"@id":"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/"},"author":{"name":"Kiran Kumar","@id":"https:\/\/blogrevamp.cashfree.com\/#\/schema\/person\/827fa615c39f2636bc51bbd7e07ccbdb"},"headline":"How Cashfree Payments built real-time Success Rate analytics with Apache Flink","datePublished":"2023-12-19T08:43:06+00:00","dateModified":"2023-12-19T08:47:19+00:00","mainEntityOfPage":{"@id":"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/"},"wordCount":1180,"commentCount":0,"image":{"@id":"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blogrevamp.cashfree.com\/wp-content\/uploads\/2023\/12\/TN.jpg?fit=1203%2C810&ssl=1","articleSection":["Engineering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogrevamp.cashfree.com\/real-time-success-rate-analytics-with-apache-flink\/","url":"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/","name":"How Cashfree Payments built real-time Success Rate analytics with Apache Flink","isPartOf":{"@id":"https:\/\/blogrevamp.cashfree.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/#primaryimage"},"image":{"@id":"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blogrevamp.cashfree.com\/wp-content\/uploads\/2023\/12\/TN.jpg?fit=1203%2C810&ssl=1","datePublished":"2023-12-19T08:43:06+00:00","dateModified":"2023-12-19T08:47:19+00:00","author":{"@id":"https:\/\/blogrevamp.cashfree.com\/#\/schema\/person\/827fa615c39f2636bc51bbd7e07ccbdb"},"description":"Discover seamless transactions with Cashfree Payments, where our dedicated focus on success rates ensures reliability.","breadcrumb":{"@id":"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/#primaryimage","url":"https:\/\/i0.wp.com\/blogrevamp.cashfree.com\/wp-content\/uploads\/2023\/12\/TN.jpg?fit=1203%2C810&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blogrevamp.cashfree.com\/wp-content\/uploads\/2023\/12\/TN.jpg?fit=1203%2C810&ssl=1","width":1203,"height":810},{"@type":"BreadcrumbList","@id":"https:\/\/www.cashfree.com\/blog\/real-time-success-rate-analytics-with-apache-flink\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogrevamp.cashfree.com\/"},{"@type":"ListItem","position":2,"name":"Engineering","item":"https:\/\/blogrevamp.cashfree.com\/category\/engineering\/"},{"@type":"ListItem","position":3,"name":"How Cashfree Payments built real-time Success Rate analytics with Apache Flink"}]},{"@type":"WebSite","@id":"https:\/\/blogrevamp.cashfree.com\/#website","url":"https:\/\/blogrevamp.cashfree.com\/","name":"Cashfree Payments Blog","description":"Cashfree Payments- Payment Gateway for India","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogrevamp.cashfree.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blogrevamp.cashfree.com\/#\/schema\/person\/827fa615c39f2636bc51bbd7e07ccbdb","name":"Kiran Kumar","url":"https:\/\/blogrevamp.cashfree.com\/author\/kiran-kumar\/"}]}},"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9MjXo-5OY","jetpack_likes_enabled":false,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blogrevamp.cashfree.com\/wp-content\/uploads\/2023\/12\/TN.jpg?fit=1203%2C810&ssl=1","_links":{"self":[{"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/posts\/22380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/users\/98"}],"replies":[{"embeddable":true,"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/comments?post=22380"}],"version-history":[{"count":5,"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/posts\/22380\/revisions"}],"predecessor-version":[{"id":22389,"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/posts\/22380\/revisions\/22389"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/media\/22381"}],"wp:attachment":[{"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/media?parent=22380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/categories?post=22380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogrevamp.cashfree.com\/wp-json\/wp\/v2\/tags?post=22380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}