 Hello and welcome to the Introduction to Fluvia webinar. I'm Grant Swanson, your host for today's session, and later I'll be joined by Nick Cardin, Principal Software Engineer here at Infineon. We will start with a few introduction to Infineon slides, then go into a live demo, and then finish up with Q&A. Please enter any questions in the chat window. We also have new content in the handout section available for consumption. This slide shows Infineon at a glance. Our founders who built EngineX's open source service mesh started the company in 2019. As companies progress on their journey in digital transformation, we believe that we're perfectly fit to drive the next stage of transformation, which is the use of real-time continuous intelligence to increase business impact. Our engineering team has written over 100,000 lines of code and have built an enterprise grade platform from the ground up that provides horizontal scale and self-healing. Infineon's mission is to accelerate the world's transition to the real-time economy. Fluvia is an open source programmable platform for data in motion that's built on rust. The platform features smart modules with programmable stream processing to clean, transform, correlate, and drive insights from data in real-time. It also features data streams that utilize distributed processing with redundancy and failover to prevent data loss and minimize downtime. The platform also includes a mutable store with a long-lived immutable storage layer that persists data without compromising latency. Excuse me. Fluvia has clients and connectors that include native API support to the most popular programming languages and a connector catalog. The platform allows architects, data engineers, and developers to build intelligent pipelines quickly for a broad set of use cases. Fluvia is modern as it's written in rust, which means it's extremely fast and safe and we'll go into some of those metrics later. And it's cloud-native with Kubernetes integration. Fluvia is powerful with programmable smart modules, event correlation, and hierarchical pipelines. Fluvia is also easy to use with the ability to provision end-to-end pipelines quickly. This is a comparison between Java and Rust. Java is a popular programming language used by developers and is what most of the data streaming products are built on. However, Rust has many advantages when it comes to performance and security. With no runtime or garbage collector, it can power performance critical services, run on embedded devices, and easily integrate with other languages. Latency stays predictable at high throughputs over P99, which means that 99% of the requests should be faster than the given latency. Rust is also completely memory safe, which separates it from Java with its strong security guarantees. While other data streaming platforms use polling to consume messages, Fluvia uses asynchronous processing for significantly lower latency. Fluvia runs in pods and can collect millions of events per second with just a few dedicated servers. Our technology can change servers and can scale up to virtually any number of concurrent connections. This diagram shows common components which are configured with smart modules performing inline computation. The diagram shows five places where smart modules may currently be used, in source connectors and sync connectors, in programmatic producers, consumers, and in the Fluvia OCLI. Smart modules are typically applied to data before the data is sent from one location to another. This is so that any filtering that happens will result in less network traffic and more savings. For example, stream inputs, source connectors, and producers will apply smart modules before sending data to the Fluvia O cluster and stream outputs such as sync connectors and consumers, or the Fluvia OCLI will upload smart modules to the Fluvia O cluster and process data before the stream is sent over the network. This helps to overcome data gravity by moving only the minimal amount of data necessary. We're gonna take a second and give, provide sort of a reference architecture for the before and after Kafka versus Fluvia. Kafka is one of the most popular data streaming open source platforms in the world. And we wanted to just compare what a reference architecture looks like. So in this Kafka versus Fluvia diagram, you will see the complexity of managing the various clusters to build an end-to-end pipeline with Kafka. Now looking at the Fluvia O cluster, we've eliminated the need for ETL, which is basically your extract, transform, and load tools as we're able to perform this function in line with smart modules. So no ETL tools needed. In addition, no Apache Zookeeper is needed, no KStream cluster, no KSQL cluster, or Flink clusters required. So very simplified architecture. Next we're gonna go into a case study for a current beta customer that's running Fluvia. And we have a cost savings case study that we produced that we'll share after the webinar. So this company is building a protocol for creating decentralized applications quickly on Ethereum and IPFS. They recently received $50 million in funding, have thousands of users, and are gaining significant momentum in the market. They reached out to Infineon because they hit a limit with their current Kafka architecture and had difficulty scaling. They did a POC with Fluvia with a use case that required data streaming and smart modules for extensive data transformation. They've estimated that traffic volume would require 22,000 partitions, excuse me, to run their network of users. For an average traffic volume, Kafka needs one gigabit of RAM per partition. With Fluvia, a partition requires 50 megabits of RAM. By moving to Fluvia, they're able to achieve a cost savings of over $41,000 per month. This high level roadmap that we're showing now shows the progress and feature development of Fluvia. We launched Fluvia in 2020 with immutable storage, replication, and APIs. In the early part of 2021, we launched smart modules that included real-time inline filtering and mapping capabilities. This was followed by array maps and aggregates. In 2022, we started to build out our connector catalog with MQTT, HTTP, and Postgres smart connectors now available. We also have Cassandra, Kafka, MongoDB, Redis, Snowflake, and Slack connectors that are in development. As we move into the second half of 2022, we will launch smart pipelines with derived streams. Now I'm gonna pass the controls over to Nick Cardin, our principal software engineer here at Infineon to show a live demo of Fluvia. Give me just one second, Nick. All right, there we go. Okay, and you can see my screen? Yes, we can. Okay, thanks. All right, good morning. So today I'm going to demonstrate creating a Fluvia smart module for removing sensitive information from a data stream. And to clarify, a smart module is a piece of logic that's compiled into WebAssembly and is able to be hooked into various parts of Fluvia to customize functionality. So for this demo, I'm going to produce a set of records with sensitive fields in a Fluvia cluster. Then I'll write a smart module to transform the records to remove fields and mask sensitive data. And I'll apply this while consuming the records to show the transformation. And like Grant said earlier, like these smart modules can be hooked in at any point data intros or exits Fluvia or moves between topics. And the sample data is going to look like this. It's going to have some fields and some of them will be sensitive and need to be redacted. Okay. In this scenario, I'm going to store some user accounts and they're going to have phone numbers and social security numbers. And we want to omit the social security number and mask the phone number. And for this, I'm going to be using our Infineon cloud. And you're able to perform these same steps by signing up for a free account. But for the demo, I'm going to use my demo account. And you can interact with your Fluvia cluster and Infineon cloud with either the web UI, Fluvia CLI, or any of the client libraries. I think Grant already mentioned that we have libraries for Rust, Python, Node.js, Java and Golang. But for the demo, I'm only going to need the web UI and the Fluvia CLI. Okay. So first thing I need to do is create a topic to hold the user accounts. Okay. And then I'm going to switch back to the Fluvia CLI to populate the sample data. Well, first I need to log into my cloud account. So I'm going to use the Fluvia CLI cloud login command and just use the same credentials as I used when I first signed up. And now my Fluvia CLI is synced up with my cloud account. And now I want to just produce the one record I'm showing you above. And just did Fluvia produce to the user accounts topic and the sample data file you see above. Okay. I'm going to switch back over to the web UI and in the records tab for the user accounts topic, you're going to see that what I just produced. And I'm going to write my smart module in the editor, smart module editor tab right here in the web UI. And the web UI currently only supports writing in wrestling, but other language support is planned. So I'm going to select the type smart module to be map. And here I need to write my map function that's going to do the transformation. I'm going to be pasting code snippets into the editor to save some time during this demo. And so I'll point out that Fluvia records are just arbitrary bytes, allows you to store any kind of data that you need. In this case, we're using JSON and we need to deserialize it. So first thing I'm going to do is define a struct here, user account that represents the data that I just produced earlier. And we need to bring in a serialization library. In RustLang, we have Serde, which is the most popular one. And then we need to decorate the struct with a deserialize procedural macro. And then we also need some modules from end types from the Fluvia smart module library. And then we're just going to define our function. And so it's just going to be a map function and it's going to take in a reference to our record and the output is going to be a tuple of key value and the key is optional. And the explanation around what is a, how keys work in Fluvia is a little bit out of scope for this demo, but the information's on the Fluvia website at fluvia.io. Okay, and the first thing we need to do is actually do the deserialization in this function. So we're going to deserialize and store the record, the account, deserialized account in this account variable of type user account. This is the struct we defined above. We're just using Serde JSON of passing in a reference to the record value. Okay, and now what we wanted to create here is a redacted version of the account. And we're just going to define this as a directly like a JSON object. It's going to have full name, email, phone, and we're going to omit SSN because we don't want that to be in the output. And we also want to mask the phone number. So we need to define another variable that's going to hold the last four of your phone number. And we're just going to do this the quick way. I'm going to take the phone number from the account, reverse split on the hyphen and then just get the first item which will be the last four of the phone. And we need to update the JSON output to instead use format like this where all the stuff that's been masked out is replaced with asterisks and we're going to inject the last four. So look how you expect. And then all we need to do is serialize it back into the JSON string. And we're using Saturday again. And then we just need to return bytes from this function. So we're going to convert that string. Since the output of this function is record data, and by calling dot int to on the JSON string, it's going to automatically convert it to bytes and that's what's going to be sent out from this function. And I think that should be it. And so let's apply this. And what that's going to do is it's going to compile this code using the REST compiler, but in our cloud backend. So that usually takes a few seconds at least. And here you see that the data has been transformed. So let's look at it again. So this is what went in. I guess I can actually show you that in the records tab. So that's what went in. And with this smart module I just written, this is what came up. No SSN and the phone number has been masked. Okay, so the smart module will be applied to any future record that's been being produced. And I can best demonstrate that using our CLI. So I have the same code that we wrote in the editor. I'll be prepared this here. And I'm just going to compile it and I'm going to upload it to the full view cluster under the name redact. So that's just the path to the wasm binary that was just built. And now I'm going to consume using that smart module. I'm sorry, Grant, can you let me know if you're seeing the right side of my screen or if it's being blocked? We can see it. Okay, thanks. All right. So now I'm going to produce a few thousand records from a prepared JSON file. Like I just have 5,000 pre-generated records here of user accounts. And I'm just going to produce it. You can see as a producer, the consume was active. And with the smart module automatically transformed everything I just produced. But to kind of give you a better feel of this happening and that this actually happens in real time, I want to do this in slow motion. So I'm going to use a Node.js script that I wrote that's going to produce records slowly so you can kind of just better visualize what's happening. So it's going to produce random new user accounts. As it's being produced, you can see that it's being redacted and displayed here in the consume output. Okay, and that concludes the demo. And Grant. Excellent. Thank you, Nick. That was awesome. So if anybody has any questions, please type them into the question window. Nick, we have a couple that have just come in. The first question is, can Fluvia run in public clouds like AWS? Absolutely. Our Infinion cloud is actually running in AWS. And with the open source Fluvia repository has scripts to help you deploy that in EKS on AWS. And since it runs on Kubernetes, it should run in any other cloud platform that supports Kubernetes. Excellent. We just had another question come in. They're asking what other kinds of smart modules can be written? Sure. Yeah, I think you went over it earlier. So we also support filter and array map and aggregate. And filter, and I can quickly explain those, like filter is just where you have right logic to make a decision as whether to consume this record or not. And aggregate is a little more powerful, allows you to look at multiple records in the stream and then aggregate some sort of value based on it, much like in relational database systems with aggregate functions. Awesome. I don't see any other questions. So I would just like to let the audience know you're welcome to go to www.infinion.com. There's a Try Now button if you'd like to start your own Infinion cloud account and test out the real-time data streaming. This is the most modern platform available written on Rust. As you can see, the performance metrics, the memory metrics are far better than any other data streaming platform out there. And we're really excited to show this. So if anybody's available on March 24th, we have our Kafka versus Fluvio event streaming for high performance data pipelines webinar. Feel free to register for that. We also have some great content in the handout section. And we appreciate you joining us for the webinar today and this concludes our session. Thank you so much. Bye.