CINXE.COM
tech – Engineering Blog
<!doctype html> <html lang="en-US"> <head> <script type="text/javascript" src="https://cdn.cookielaw.org/consent/3959dac5-afc8-4ac6-a2c2-f91a2836f1c6/OtAutoBlock.js" ></script> <script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="3959dac5-afc8-4ac6-a2c2-f91a2836f1c6" ></script> <script type="text/javascript"> function OptanonWrapper() { } </script> <meta charset="UTF-8"> <link rel="profile" href="https://gmpg.org/xfn/11"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <title>tech – Engineering Blog</title> <meta name='robots' content='max-image-preview:large' /> <link rel="alternate" type="application/rss+xml" title="Engineering Blog » Feed" href="https://engineering.zeta.tech/feed/" /> <link rel="alternate" type="application/rss+xml" title="Engineering Blog » Comments Feed" href="https://engineering.zeta.tech/comments/feed/" /> <link rel="alternate" type="application/rss+xml" title="Engineering Blog » tech Tag Feed" href="https://engineering.zeta.tech/tag/tech/feed/" /> <script> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/engineering.zeta.tech\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.6.1"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); </script> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://engineering.zeta.tech/wp-includes/css/dist/block-library/style.min.css?ver=6.6.1' media='all' /> <style id='classic-theme-styles-inline-css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='zetaengnblog-style-css' href='https://engineering.zeta.tech/wp-content/themes/zetaengnblog/style.css?ver=1.0.0' media='all' /> <script id="core-js-js-extra"> var ajax_posts = {"ajaxurl":"https:\/\/engineering.zeta.tech\/wp-admin\/admin-ajax.php","noposts":"No older posts found"}; </script> <script src="https://engineering.zeta.tech/wp-content/themes/zetaengnblog/js/core.js?ver=6.6.1" id="core-js-js"></script> <link rel="https://api.w.org/" href="https://engineering.zeta.tech/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://engineering.zeta.tech/wp-json/wp/v2/tags/54" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://engineering.zeta.tech/xmlrpc.php?rsd" /> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title> Home page </title> <meta name="description" content="Home page"> <meta name="description" content=""> <link rel="alternate" hreflang="en-US" href="" /> <link rel="canonical" href="" /> <meta name="x-sitemap-settings" content="daily,1"> <meta name="google-site-verification" content="Gyg3Spsr-pKlZLcNRhXHV_2X7aHr72bXxNgj-StYLpo" /> <!-- FACEBOOK OG META TAG --> <script src="https://unpkg.com/aos@next/dist/aos.js"></script> <meta property="og:title" content="Launch Next-Gen Credit Cards With Zeta" /> <meta property="og:description" content="Zeta is the world’s first Omni Stack for credit cards. A single stack for Origination, Processing, FRM, Rewards, Loans, APIs, and Apps" /> <meta property="og:image" content="https://s3.ap-south-1.amazonaws.com/zeta-website-images-prod/images/zeta-opengraph-preview.png" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.zeta.tech" /> <meta property="og:site_name" content="www.zeta.tech" /> <base href="/" /> <!-- Google Font --> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@200;400;500;600;700&family=Manrope:wght@400;500;600;700&display=swap" rel="stylesheet"> <!-- Google Font End --> </head> <body class=" main-page is-white-mobi-nav"> <!-- Web Banner View --> <section class="z-banner"> <div class="cover"></div> <div class="header-search"> <div class="z-container"> <form role="search" method="get" id="searchform" class="searchform" action="https://engineering.zeta.tech/"> <div> <label class="screen-reader-text" for="s">Search for:</label> <input type="search" id="search-form" placeholder="Search form" value="" name="s" id="s" /> <!-- <input type="submit" id="searchsubmit" value="Search" /> --> </div> </form> </div> </div> <div class="z-container"> <nav> <a href="/" class="logo-top" aria-label="Brand Logo"> <img src="/wp-content/uploads/2022/11/logo-white-xx.png" alt="Brand logo"/> </a> </nav> <h1 class="title"><a href="/" rel="home">Engineering @Zeta</a></h1> </div> </section> <section class="search-bar"> <div class="z-container text-right"> <button class="search-toggle"> <span></span> </button> </div> </section> <!-- / Web Banner View --> <main id="primary" class="site-main"> <header class="page-header"> <h1 class="page-title">Tag: <span>tech</span></h1> </header><!-- .page-header --> <article id="post-294" class="post-294 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized tag-ci-cd tag-compute tag-data-processing tag-infrastructure tag-messaging tag-mobile-apps tag-mobileinfra tag-security tag-server tag-tech tag-web-applications"> <header class="entry-header"> <h2 class="entry-title"><a href="https://engineering.zeta.tech/zeta-tech-stack/" rel="bookmark">Zeta Tech Stack</a></h2> <div class="entry-meta"> <span class="posted-on">Posted on <a href="https://engineering.zeta.tech/zeta-tech-stack/" rel="bookmark"><time class="entry-date published updated" datetime="2021-09-15T11:24:35+00:00">September 15, 2021</time></a></span><span class="byline"> by <span class="author vcard"><a class="url fn n" href="https://engineering.zeta.tech/author/phani_marpaka/">Phani</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <a class="post-thumbnail" href="https://engineering.zeta.tech/zeta-tech-stack/" aria-hidden="true" tabindex="-1"> <img width="1730" height="874" src="https://engineering.zeta.tech/wp-content/uploads/2021/09/Screenshot-2021-09-15-at-11.22.00-AM.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Zeta Tech Stack" decoding="async" fetchpriority="high" srcset="https://engineering.zeta.tech/wp-content/uploads/2021/09/Screenshot-2021-09-15-at-11.22.00-AM.png 1730w, https://engineering.zeta.tech/wp-content/uploads/2021/09/Screenshot-2021-09-15-at-11.22.00-AM-300x152.png 300w, https://engineering.zeta.tech/wp-content/uploads/2021/09/Screenshot-2021-09-15-at-11.22.00-AM-1024x517.png 1024w, https://engineering.zeta.tech/wp-content/uploads/2021/09/Screenshot-2021-09-15-at-11.22.00-AM-768x388.png 768w, https://engineering.zeta.tech/wp-content/uploads/2021/09/Screenshot-2021-09-15-at-11.22.00-AM-1536x776.png 1536w" sizes="(max-width: 1730px) 100vw, 1730px" /> </a> <div class="entry-content"> <p>Zeta is in the business of providing a full-stack, cloud-native, API-first neo-banking platform including a digital core and a payment engine for issuance of credit, debit, and prepaid products. These products enable legacy banks and new-age fintech institutions to launch modern retail and corporate fintech products. </p> <p>Zeta currently provides its platform and products to BFSI issuers in India, Asia, and LATAM. Zeta’s products are used by banks such as RBL Bank, IDFC First Bank, and Kotak Mahindra Bank, 14000 corporates, and over 2 million users. Zeta is a SOC 2, ISO 27001, ISO 9001:2008, PCI DSS certified company.</p> <p>How does Zeta continuously deliver at these high levels without compromising on security? Let us take a look at Zeta’s tech stack to find out.</p> <h2 class="wp-block-heading">Server Applications</h2> <p>A server application is designed to install, operate, and host applications and associated services for end-users.</p> <h3 class="wp-block-heading">Compute Runtimes</h3> <p><strong>Technology used</strong>: <em>Kubernetes, GitOps, Apache Openwhisk, Apache Flink, and Camunda. </em></p> <p>Following are the runtime applications in Zeta.</p> <ul class="wp-block-list"><li><strong>Atlantis</strong> is a docker runtime container deployed using GitOps based end-to-end orchestration with the help of Kubernetes.</li><li><strong>Aster</strong> is an open-source serverless platform run on Apache Openwhisk that runs various short-lived jobs on-demand. </li><li><strong>Rhea</strong> is an application used to execute BPMN workflows that run on the Camunda platform.</li><li><strong>Perseus</strong> is an adaptation of Apache Flink to run complex event processing tasks. Apache Flink is a framework and processing engine used for computations at any scale.</li></ul> <p>We use <strong>Camunda</strong> to define workflows and automate decision-making. </p> <p>Apache Flink provides a high-throughput, low-latency streaming engine and supports event-time processing and state management. It has allowed us to perform computations at any scale.</p> <h3 class="wp-block-heading">Cluster Management</h3> <p><strong>Technology used</strong>: <em>Kubernetes, Kong, and Calico.</em> </p> <p>A cluster management tool is an essential service used to group the clusters and nodes. This is used to:</p> <ul class="wp-block-list"><li>Monitor nodes in the cluster.</li><li>Configure services.</li><li>Administer cluster services. </li></ul> <p>We prefer using open-source systems in our tech stack. That is why we use Kubernetes as our orchestration system to efficiently manage and deploy containers. </p> <p><strong>Ingress</strong> and API Gateways run using Kong. Kong supports high availability clusters and an extensive range of plugins to address various concerns like authentication, security, and monitoring.</p> <p>We have also developed 2 in-house tools, Sprinkler and Hades. Sprinkler is our Egress gateway and Hades is our file input/output gateway. </p> <p>We use the Calico plugin to manage the container network interface.</p> <p>We are evaluating Istio to adopt it as our open service mesh. A service mesh controls how different parts of an application share data with each other.</p> <h3 class="wp-block-heading">Messaging Infrastructure</h3> <p><strong>Technology used</strong>: <em>Apache Kafka, Apache Nifi, Apache Flink, KSQL, and Kafka.</em></p> <p>A messaging system transfers data from one application to another. We use the following components to seamlessly transfer messages within Zeta’s various applications and clusters.</p> <ul class="wp-block-list"><li><strong>Apache Kafka</strong> is used as a message broker. It allows us to handle high volumes of data and passes messages from one end to the other. </li><li><strong>Atropos</strong> is a message-based integration bus based on Kafka developed by Zeta.</li><li>Apache Nifi is used to implement ETL Pipelines. </li><li><strong>Perseus</strong>, developed by Zeta, uses Apache Flink to process complex events. </li><li><strong>Sinope </strong>uses KSQL and Kafka connectors to bridge the message/event world and the batch/file world. KSQL and Kafka connectors enable rich data integration and streaming.</li></ul> <h3 class="wp-block-heading">Data Stores</h3> <p><strong>Technology used</strong>: <em>Postgresql, Amazon S3, Amazon RedShift, ClickHouse, and Redis.</em></p> <p>Postgresql is used to store transactional data and Amazon S3 is our data lake. We use Amazon RedShift and ClickHouse as our data warehouse and Redis, an open-source memory data structure, to store cache.</p> <p>Application Performance Monitoring (APM) and Business Performance Monitoring (BPM) uses the ElasticSearch engine.</p> <h3 class="wp-block-heading">Data Processing</h3> <p><strong>Technology used</strong>: <em>Presto SQL, Sparta, and Apache Superset.</em></p> <p>The data processing unit is an essential part of any server application. It converts data available in the system (machine-readable data) to a human-readable format. </p> <p>We use the Presto SQL query engine to process big data and Sparta for stream processing. Stream processing allows us to convert data in motion directly to continuous streams. </p> <p>The Power Centre stores various data models and allows us to modify data and enables the reuse of data. The Power Centre is an adaption of Apache Superset.</p> <h3 class="wp-block-heading">CI/CD</h3> <p><strong>Technology used</strong>: <em>Jenkins, ArgoCD, and Sonarqube.</em></p> <p>Jenkins is used for Continuous Integration (CI) and ArgoCD for Continuous Deployment (CD).</p> <p>Our servers use Sonarqube, an open-source platform, for static code analysis.</p> <h3 class="wp-block-heading">Observability</h3> <p><strong>Technology used</strong>: <em>Grafana, Kibana, Fluentd, and Hypertrace.</em></p> <p>Observability is defined as the ability of the internal states of a system to be determined by its external outputs. External outputs can be anything such as alerts, visual representation, and infrastructure tracing.</p> <p>We have developed <strong>Prometheus</strong> as our event monitoring system. Prometheus stores all metrics in the database. </p> <p>We use Grafana for our dashboards and alerts and Kibana for log analysis. The purpose of both these applications is to visualize and navigate data. We also use Fluentd, an open-source data collector, for logs and metrics collection.</p> <p>All applications should have a distributed tracing system. Hypertrace is our tracing system. It helps us debug applications and log information about their execution.</p> <h3 class="wp-block-heading">Security Monitoring</h3> <p><strong>Technology used</strong>: <em>HELK and Jackhammer.</em></p> <p>Security monitoring is another essential unit to analyze data to detect any suspicious behavior or changes to the network. </p> <p>HELK is an ELK (Elasticsearch, Logstash & Kibana) stack with advanced hunting analytic capabilities provided by the implementation of Spark and Graphframes technologies.</p> <p>Kratos, an in-house adaption of Jackhammer, is our Security CI.</p> <p>We are evaluating RockNSM, a premier sensor platform for Network Security Monitoring (NSM) hunting and incident response (IR) operations. </p> <h3 class="wp-block-heading">Hardware Security Module (HSM)</h3> <p><strong>Technology used</strong>: <em>Safenet, Gemalto and nCipher/ Entrust nShield Solo.</em></p> <p>HSM manages digital keys, encryption and decryption, and provides strong authentication. We use the following HSMs:</p> <ul class="wp-block-list"><li>Safenet and Gemalto as Network HSM.</li><li>nCipher/ Entrusy nShield Solo.</li><li><strong>Harpocrates</strong>, developed by Zeta, is our HSM as a service interface. </li></ul> <h2 class="wp-block-heading">Mobile Application</h2> <p><strong>Technology used</strong>: <em>Firebase Hosting, Websockets, HTTPS.</em></p> <p><strong>Languages used</strong>: <em>Kotlin, Java, Objective C, Swift.</em></p> <p>We develop mobile applications as native apps, React Native apps, and web apps.</p> <p>Kotlin and Java are used to develop our Android applications and Objective C and Swift for our iOS applications.</p> <p>Firebase Hosting helps with Analytics and Crash detection in the server. Websockets and HTTPS make it possible for two-way communication between the server and the user.</p> <h2 class="wp-block-heading">Web Applications</h2> <p><strong>Technology used</strong>: <em>Typescript, SCSS transpilers, Vue.js, Bulma, Buefy, Webpack, Rollup, Verdaccio, Lerna, and Sentry.</em></p> <p><strong>Languages used</strong>: <em>HTML, CSS, Javascript, Node JS, and Express JS</em></p> <p>We use HTML, CSS, Javascript, Node JS, and Express JS to develop our web applications.</p> <p>Typescript and SCSS transpilers convert program code from one language to another.</p> <p>Vue.js is our Javascript framework and Bulma is our CSS framework. Buefy is a user interface component and is made using both Bulma and Vue js. Webpack and Rollup are the JavaScript build tools. </p> <p>Verdaccio, an NPM registry, serves the purpose of a Private NPM repository. The repository is managed by Lerna, a workflow optimization tool. Sentry, an Application monitoring tool, is used to monitor errors.</p> <h2 class="wp-block-heading">Cyber Security</h2> <p><strong>Technology used</strong>: <em>Trivy, Clair, CloudSploit, MobSF, ZAP</em></p> <p>The challenge when building a product is how we balance ease of use with security. At Zeta, we use Trivy for CI docker scanning and Clair for CD docker scanning.</p> <p>CloudSploit is our Cloud Security Posture Management. We use MobSF for mobile application security.</p> <p>ZAP for web applications is all in CI/CD.</p> <h2 class="wp-block-heading">Best Tech Stack = Best Performance?</h2> <p>Building a system that can provide these functionalities and process over 1 million transactions per second is not easy. While Zeta uses the best tech stack, building a robust framework to continuously deliver at the highest levels without compromising on security would not have been possible without Zeta’s talented engineers.</p> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="cat-links">Posted in <a href="https://engineering.zeta.tech/category/uncategorized/" rel="category tag">Uncategorized</a></span><span class="tags-links">Tagged <a href="https://engineering.zeta.tech/tag/ci-cd/" rel="tag">CI/CD</a>, <a href="https://engineering.zeta.tech/tag/compute/" rel="tag">compute</a>, <a href="https://engineering.zeta.tech/tag/data-processing/" rel="tag">data processing</a>, <a href="https://engineering.zeta.tech/tag/infrastructure/" rel="tag">infrastructure</a>, <a href="https://engineering.zeta.tech/tag/messaging/" rel="tag">messaging</a>, <a href="https://engineering.zeta.tech/tag/mobile-apps/" rel="tag">Mobile Apps</a>, <a href="https://engineering.zeta.tech/tag/mobileinfra/" rel="tag">MobileInfra</a>, <a href="https://engineering.zeta.tech/tag/security/" rel="tag">security</a>, <a href="https://engineering.zeta.tech/tag/server/" rel="tag">server</a>, <a href="https://engineering.zeta.tech/tag/tech/" rel="tag">tech</a>, <a href="https://engineering.zeta.tech/tag/web-applications/" rel="tag">Web Applications</a></span><span class="comments-link"><a href="https://engineering.zeta.tech/zeta-tech-stack/#respond">Leave a Comment<span class="screen-reader-text"> on Zeta Tech Stack</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-294 --> </main><!-- #main --> <!-- Footer --> <footer class="footer-section custom-footer"> <div class="z-container"> <div class="footer-table"> <div class="footer-table__row"> <div id="footer-sidebar1" class="footer-table__cell1 width__40"> <aside> <h3 class="widget-title">RECENT POSTS</h3> <ul> <li><a href="https://engineering.zeta.tech/prestoprestodb-what-it-offers-and-where-and-how-it-can-be-used/">Presto(PrestoDB)- What it Offers and Where and How it can be used</a> <span class="post-date">January 24, 2023</span></li> <li><a href="https://engineering.zeta.tech/effective-troubleshooting/">Effective Troubleshooting</a> <span class="post-date">September 2, 2022</span></li> <li><a href="https://engineering.zeta.tech/zeta-tech-stack/">Zeta Tech Stack</a> <span class="post-date">September 15, 2021</span></li> <li><a href="https://engineering.zeta.tech/buy-now-pay-later-how-does-it-work/">Buy Now Pay Later: How Does it Work?</a> <span class="post-date">July 26, 2021</span></li> <li><a href="https://engineering.zeta.tech/buy-now-pay-later-the-real-deal-or-just-hype/">Buy Now Pay Later: The Real Deal or Just Hype</a> <span class="post-date">July 26, 2021</span></li> </ul> </aside> </div> <div id="footer-sidebar2" class="footer-table__cell2"> <aside id="nav_menu-4" class="widget widget_nav_menu"><h3 class="widget-title">INTERESTING READS</h3><div class="menu-dummy-container"><ul id="menu-dummy" class="menu"><li id="menu-item-318" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-318"><a href="https://engineering.zeta.tech/bengaluru/">Bengaluru</a></li> <li id="menu-item-319" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-319"><a href="https://engineering.zeta.tech/hot-desking/">Hot Desking</a></li> <li id="menu-item-320" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-320"><a href="https://engineering.zeta.tech/groups/">Groups</a></li> </ul></div></aside></div> <div id="footer-sidebar3" class="footer-table__cell3"> <aside id="nav_menu-3" class="widget widget_nav_menu"><h3 class="widget-title">FOR ZETA EMPLOYEES</h3><div class="menu-general-container"><ul id="menu-general" class="menu"><li id="menu-item-313" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-313"><a href="#">Hotdesk</a> <ul class="sub-menu"> <li id="menu-item-314" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-314"><a href="https://engineering.zeta.tech/bengaluru/">Bengaluru</a></li> <li id="menu-item-315" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-315"><a href="https://engineering.zeta.tech/mumbai/">Mumbai</a></li> </ul> </li> </ul></div></aside></div> </div> </div> </div> </footer> <section class="footer-bar"> <div class="z-container flex"> <p class="footer-bar__left"> © 2022 <a href="#">Engineering @Zeta</a> <span> — © 2021 Better World Technology Pvt. Ltd.</span> </p> <p class="footer-bar__right"> <a class="goto-top" href="javascript:void(0)">Go Up ↑</a> </p> </div> </section> <!-- Footer End --> <script src="https://engineering.zeta.tech/wp-content/themes/zetaengnblog/js/navigation.js?ver=1.0.0" id="zetaengnblog-navigation-js"></script> <script src="https://engineering.zeta.tech/wp-content/themes/zetaengnblog/js/main.9247e6bf2f7c0404c8a7.js?ver=1.0.0" id="zetaengnblog-blog-js"></script> <script src="https://engineering.zeta.tech/wp-content/themes/zetaengnblog/js/styles.e772312fa7689f75b2c1.js?ver=1.0.0" id="zetaengnblog-blog1-js"></script> </body> </html>