Confluent
Confluent
  • 876
  • 10 298 444
Microservice Pitfalls: Solving the Dual-Write Problem | Designing Event-Driven Microservices
► LEARN MORE: cnfl.io/microservices-101-module-1
When building a distributed system, developers are often faced with something known as the dual-write problem. It occurs whenever the system needs to perform individual writes to separate systems that can't be transactionally linked. This situation creates the potential for data loss if the developer isn't careful. However, techniques such as the Transactional Outbox Pattern and Event Sourcing can be used to guard against the potential for data loss while also providing added resilience to the system.
To learn more about Microservices, check out my Designing Event-Driven Microservices course on Confluent Developer: cnfl.io/microservices-101-module-1
RELATED RESOURCES
► The Dual-Write Problem - ua-cam.com/video/FpLXCBr7ucA/v-deo.html
► The Transactional Outbox Pattern - ua-cam.com/video/5YLpjPmsPCA/v-deo.html
► Event Sourcing - ua-cam.com/video/wPwD9CQAGsk/v-deo.html
► Microservices course playlist: bit.ly/designing-event-driven-microservices-playlist
CHAPTERS
00:00 - Intro
00:24 - How the system was supposed to work.
01:18 - Why didn't the system work properly?
02:31 - How to use the transactional outbox pattern to fix it.
04:19 - Why event sourcing might be a better fit.
05:08 - How the transactional outbox and event sourcing can improve reliability.
05:52 - Closing
--
ABOUT CONFLUENT
Confluent is pioneering a fundamentally new category of data infrastructure focused on data in motion. Confluent’s cloud-native offering is the foundational platform for data in motion - designed to be the intelligent connective tissue enabling real-time data, from multiple sources, to constantly stream across the organization. With Confluent, organizations can meet the new business imperative of delivering rich, digital front-end customer experiences and transitioning to sophisticated, real-time, software-driven backend operations. To learn more, please visit www.confluent.io.
#microservices #apachekafka #kafka #confluent
Переглядів: 1 237

Відео

Tabs or spaces? Merge vs. rebase? Let’s settle it with confluent-kafka-javascript
Переглядів 4432 години тому
Tabs or spaces? Merge vs. rebase? Flink SQL vs. KStreams? Lucia Cerchie wanted to settle these debates once and for all, so she created a website to let the internet decide: www.lets-settle-this.com/ Let’s Settle This is powered by a new Kafka JavaScript client from Confluent: confluent-kafka-javascript (early access). Find out how Lucia used it to make the website in the video above. RELATED R...
What is a Headless Data Architecture?
Переглядів 7 тис.16 годин тому
The headless data architecture. Is it a fad? Some marketecture? Or something real? In this video, Adam Bellemare takes you through the basics of the headless data architecture and why it’s beginning to emerge as its own respective pattern. Driven by the decoupling of data computation from storage, the headless data architecture provides the basis for a modular data ecosystem. Stream your data f...
Using Asynchronous Events to enrich Fraud Detection | Designing Event-Driven Microservices
Переглядів 1,3 тис.День тому
► LEARN MORE: cnfl.io/microservices-101-module-1 In this video, you will see an example of how Tributary bank uses asynchronous events to enrich its domain and protect its fraud detection system from failures. To learn more about Microservices, check out my Designing Event-Driven Microservices course on Confluent Developer: cnfl.io/microservices-101-module-1 Relying purely on synchronous reques...
Extracting a Fraud Detection Microservice from a Bank System | Designing Event-Driven Microservices
Переглядів 91614 днів тому
► LEARN MORE: cnfl.io/microservices-101-module-1 In this video, we discuss one way a business can approach decomposing a monolith using a series of clearly defined steps and robust monitoring. To learn more about Microservices, check out my Designing Event-Driven Microservices course on Confluent Developer: cnfl.io/microservices-101-module-1 Decomposing a monolith into a set of microservices wh...
Ignite Series
Переглядів 18014 днів тому
Introducing the Ignite Series! We sat down with some of our inspiring female leaders to get their insights on topics ranging from effective leadership development for women in tech to strategies for re-entering the workforce after a break. ABOUT CONFLUENT Confluent is pioneering a fundamentally new category of data infrastructure focused on data in motion. Confluent’s cloud-native offering is t...
How to Analyze Data from a REST API with Flink SQL
Переглядів 1,2 тис.14 днів тому
Join Lucia Cerchie in a coding walkthrough, bridging the gap between REST APIs and data streaming. Together we’ll transform the OpenSky Network's live API into a data stream using Kafka and Flink SQL. To see more data streaming in action, check out the demos on Confluent Developer: cnfl.io/3X9niaV Not only do we change the REST API into a data stream in this walkthrough, but we clean up the dat...
Defining Asynchronous Microservice APIs for Fraud Detection | Designing Event-Driven Microservices
Переглядів 1,5 тис.21 день тому
► LEARN MORE: cnfl.io/microservices-101-module-1 In this video, Wade explores the process of decomposing a monolith into a series of microservices. You'll see how Tributary bank extracts a variety of API methods from an existing monolith. To learn more about Microservices, check out my Designing Event-Driven Microservices course on Confluent Developer: cnfl.io/microservices-101-module-1 Tributa...
Confluent Data Portal: Data Discovery Made Easy
Переглядів 47921 день тому
Learn how the Data Portal and Apache Flink® in Confluent Cloud can help developers and data practitioners find the data they need to quickly create new data products. Try Data Portal now without worrying about the setup or configuration in Confluent Cloud: cnfl.io/45hx3WN RELATED RESOURCES ► Data Portal on Confluent Cloud - cnfl.io/3R5lADI CHAPTERS 00:00 - Intro 00:21 - Data Portal Overview 02:...
Retrieval Augmented Generation (RAG) with Data Streaming
Переглядів 2 тис.28 днів тому
How do you prevent hallucinations from large language models (LLMs) in GenAI applications? LLMs need real-time, contextualized, and trustworthy data to generate the most reliable outputs. Kai Waehner, Global Field CTO at Confluent, explains how RAG and a data streaming platform with Apache Kafka and Flink make that possible. RESOURCES ► GenAI hub: www.confluent.io/generative-ai ► Webinar: Build...
Event-Driven Microservices in Banking and Fraud Detection | Designing Event-Driven Microservices
Переглядів 3,9 тис.Місяць тому
► LEARN MORE: cnfl.io/microservices-101-module-1 How do we know whether Event-Driven Microservices are the right solution? This is the question that Tributary Bank faced when they looked at modernizing their old fraud-detection system. They were faced with many challenges, including scalability, reliability, and security. Some members of their team felt that switching to an event-driven microse...
Q&A: Events, Eventing, and Event-Driven Architectures | The Duchess & The Doctor Show
Переглядів 1,2 тис.Місяць тому
For their inaugural episode, Anna McDonald (the Duchess), Matthias J. Sax (the Doctor), and their extinct friend, Phil, wax rhapsodic about all things eventing: you’ll learn why events are a mindset, why the Duchess thinks you’ll find event immutability relaxing, and why your event streams might need some windows. To learn more about fundamentals across the Apache Kafka and Flink ecosystems, yo...
Kafka Summit Bangalore 2024 Keynote | Jay Kreps, Co-founder & CEO, Confluent
Переглядів 2,7 тис.Місяць тому
Join the Confluent leadership team as they share their vision of streaming data products enabled by a data streaming platform built around Apache Kafka. Jay Kreps, Co-creator of Apache Kafka and CEO of Confluent, will present his vision of unifying the operational and analytical worlds with data streams and showcase exciting new product capabilities. ABOUT CONFLUENT Confluent is pioneering a fu...
Exactly-Once Processing in Apache Flink
Переглядів 2,5 тис.Місяць тому
Learn how Apache Flink® can handle hundreds or even thousands of compute nodes running 24/7 and still produce correct results. Try Flink without worrying about the setup or configuration in Confluent Cloud: cnfl.io/4bhZZiQ RELATED RESOURCES ► Apache Flink 101: cnfl.io/4b206zA ► Streaming Joins in Apache Flink: ua-cam.com/video/ChiAXgTuzaA/v-deo.html ► Original paper on state management in Apach...
Event-Driven Architecture (EDA) vs Request/Response (RR)
Переглядів 118 тис.2 місяці тому
Event-Driven Architecture (EDA) vs Request/Response (RR)
Confluent Connectors | Fast, frictionless, and secure Apache Kafka integrations
Переглядів 5172 місяці тому
Confluent Connectors | Fast, frictionless, and secure Apache Kafka integrations
confluent investor testimonials
Переглядів 3562 місяці тому
confluent investor testimonials
How to Unlock the Power of Event-Driven Architecture | Designing Event-Driven Microservices
Переглядів 8 тис.2 місяці тому
How to Unlock the Power of Event-Driven Architecture | Designing Event-Driven Microservices
Introducing Gitpod for Confluent Developer
Переглядів 1,1 тис.2 місяці тому
Introducing Gitpod for Confluent Developer
Set your Data in Motion with Confluent on Google Cloud
Переглядів 5703 місяці тому
Set your Data in Motion with Confluent on Google Cloud
Streams Forever: Kafka Summit London 2024 Keynote | Jay Kreps, Co-founder & CEO, Confluent
Переглядів 9 тис.3 місяці тому
Streams Forever: Kafka Summit London 2024 Keynote | Jay Kreps, Co-founder & CEO, Confluent
The Confluent Q1 ‘24 Launch
Переглядів 5033 місяці тому
The Confluent Q1 ‘24 Launch
Confluent Cloud for Apache Flink | Simple, Serverless Stream Processing
Переглядів 7703 місяці тому
Confluent Cloud for Apache Flink | Simple, Serverless Stream Processing
Apache Flink 1.19 - Deprecations, New Features, and Improvements
Переглядів 1,1 тис.3 місяці тому
Apache Flink 1.19 - Deprecations, New Features, and Improvements
4 Key Types of Event-Driven Architecture
Переглядів 11 тис.3 місяці тому
4 Key Types of Event-Driven Architecture
How to Evolve your Microservice Schemas | Designing Event-Driven Microservices
Переглядів 3,5 тис.3 місяці тому
How to Evolve your Microservice Schemas | Designing Event-Driven Microservices
What is a Kafka Consumer and How does it work?
Переглядів 3,4 тис.3 місяці тому
What is a Kafka Consumer and How does it work?
What are Kafka Producers and How do they work?
Переглядів 2,8 тис.3 місяці тому
What are Kafka Producers and How do they work?
What is the Listen to Yourself Pattern? | Designing Event-Driven Microservices
Переглядів 7 тис.3 місяці тому
What is the Listen to Yourself Pattern? | Designing Event-Driven Microservices
Apache Kafka 3.7: Official Docker Image and Improved Client Monitoring
Переглядів 4 тис.3 місяці тому
Apache Kafka 3.7: Official Docker Image and Improved Client Monitoring

КОМЕНТАРІ

  • @nroelandt
    @nroelandt 22 хвилини тому

    Hi Adam, this sounds great in theory and in 'full' load scenario's. What about CDC workloads, where full loads and delta's are separate. The logic and needed compute power (credits) will skyrocket..

  • @darwinmanalo5436
    @darwinmanalo5436 Годину тому

    So instead of manually sending events to Kafka, we save the events to the database first. Then, there is a CDC tool that detects updates and automatically sends them to Kafka? Another tool adds another layer of complexity. Event Sourcing is quite complex, so people should carefully consider if it's the right tool for the project before implementing it. I wish these inconsistencies/issues were already solved in Kafka itself, not by us. P.S. The presentation is well-explained though. Wade is a good teacher.

  • @MrGoGetItt
    @MrGoGetItt 8 годин тому

    Exceptional content delivery! Not only were you articulate, but the visuals were an excellent aid. Great work

  • @petermoskovits8470
    @petermoskovits8470 11 годин тому

    At 1:25 you cover in great detail how to address the problem when the Kafka write fails and the DB write succeeds. How about the other way around? What if the Kafka write succeeds, and the DB write fails?

  • @xxXAsuraXxx
    @xxXAsuraXxx 16 годин тому

    Nice. Outbox will do

  • @user-ev9jg6ts6e
    @user-ev9jg6ts6e 18 годин тому

    Nice one. Thanks Wade.

  • @ConfluentDevXTeam
    @ConfluentDevXTeam День тому

    Wade here. This is my second video on the Dual-Write Problem. The previous video generated a lot of interesting comments and discussions. I'd love for the same to happen here. If you haven't watched the previous video, you can find it linked in the description. But if you are still confused about the Dual-Write problem, drop me a comment and I'll do my best to try and clarify.

    • @marcom.
      @marcom. Годину тому

      Hi Wade. Thanks a lot for your videos. I think I have one thing that you probably could address. I read somewhere that, if you use CDC (i.e. Debezium), there is no need to store the events in the outbox table at all. It is sufficient to save and immediately delete them, because CDC only sees the changelog of the db, reacts to the insert and ignores the delete. Right?

  • @shinypants2204
    @shinypants2204 3 дні тому

    Great content! Thanks for putting this together

  • @thisismissem
    @thisismissem 3 дні тому

    The most impressive thing about this video is he's writing everything backwards on that glass board he's behind 😮

  • @ConfluentDevXTeam
    @ConfluentDevXTeam 4 дні тому

    Hey there, it’s Lucia! If you’re a JavaScript developer who’s new to Kafka, I highly recommend checking out the confluent-kafka-javascript client! It’s in early access, and you can find resources on getting started with it here: github.com/confluentinc/confluent-kafka-javascript

  • @jarrodhroberson
    @jarrodhroberson 5 днів тому

    congratulations you rediscovered client server architecture and just confusingly rename it headless. by your definition ever RDBMS is “headless”

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 4 дні тому

      Adam here. It seems you're missing some key elements: 1) A traditional RDBMS bundles processing with storage.In headless, the storage is completely separate from the processing and query. I do not know of any RDBMS systems that let you access their underlying storage (Eg: a B-tree) directly, but if there is, I would be keen to find out. 2) You don't have the risk of one query saturating your data layer and stalling other queries, like you do in an RDBMS. However, this relies on the fact that most data layers will be served via massive cloud compute storage (R2, GCS, Azure Blob, S3, etc), and not you running your own data layer on an in-house HDFS. 3) Client-server embeds business logic inside the server for the client to call. There is a tight coupling between the two. In HDA, there are no smarts in the data layer. It's just data that has been created by the upstream services. IF your server only provided raw data via a GET, and writes via a PUT/POST, but had absolutely no other functionality whatsoever, then you could equate it to a headless model. That's pretty much what Iceberg and Kafka do, with a bit of cleanup optimizations sprinkled in.

  • @maf_aka
    @maf_aka 5 днів тому

    how can I model branched state though? for example if I add a payment flow between Ride Requested and Ride Scheduled events, and the payment results can either trigger a Ride Scheduled if successful or Ride Cancelled otherwise. if the decider function only throws an error without evolving the state how would the system know if the ride is no longer needed to be scheduled?

  • @puneetbhatia2326
    @puneetbhatia2326 6 днів тому

    So basically, the system would allow at least one fraudulent transaction to go through per account before it can mark the account as compromised. That can be an expensive proposition for the bank if these fraudulent transactions are high $$ value. Thoughts?

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 6 днів тому

      Wade here. Depends on the final implementation details of the system. They certainly could have an initial layer of basic checks that run synchronously (see other comments). This would be looking for obvious things that can be detected on a single transaction. But, the reality is that most fraud doesn't show up on a single transaction. A lot of fraud detection happens over multiple transactions. As a result, the nature of the problem dictates that they have to let through some fraudulent transactions because they can't detect it until they have seen a pattern develop. And yes, if the $$ amount is high, that could be a problem. That is why many banks have transaction limits. They have decided what level of risk they are willing to take and set the limit accordingly. There's a balance to be struck. The bank has to decide where they want to strike that balance. Would they rather have valid transactions fail (or timeout) or potentially let through more fraud? Both situations are costly. But which one costs more?

  • @puneetbhatia2326
    @puneetbhatia2326 6 днів тому

    I don’t understand the proposed asynchrony in the fraud detection system with Kafka in the middle. What good is the fraud detection system if it doesn’t stop/prevent fraud on the transaction being serviced? I would have expected it to be synchronous request-response framework. No?

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 6 днів тому

      Wade here. You probably want to take some time and watch the rest of the video series here: developer.confluent.io/courses/microservices In particular, you might find the most recent video helpful (and the comments below it): developer.confluent.io/courses/microservices/case-study-asynchronous-events/ But the gist of it is that Fraud Detection takes time. You generally can't look at a single transaction and say "oh, that's fraud." You have to look at patterns of transactions over time. Eventually, you develop enough information that you can start to say "Ah, something weird is happening here" and at that point, you lock the account and prevent future transactions.

  • @an2ny2100
    @an2ny2100 7 днів тому

    good explanation though in terms of a bank transaction as a customer i'd prefer if the transaction was detected as a fraud rather than pushing through but hey, everything comes down to preference which is why we have a lot of software accomplishing the same thing in a different way :-)

    • @WadeWaldron-Confluent
      @WadeWaldron-Confluent 6 днів тому

      Wade here. The thing is, it may not be as simple as detect fraud or don't detect fraud. It's a balance. Yes, you obviously want to detect fraud as accurately as possible. But your bank also needs to be able to give people money when they ask for it. Financial systems, payment processors, etc, have very strict limits on how long they can take. If running fraud detection exceeds those limits, all transactions will be rejected, whether they are fraudulent or not. If that happens, the fraud detection is going to be largely irrelevant because the bank won't have any customers left. Having said that, in a real system, they can definitely have layers of fraud detection. Do the fast stuff in real-time, and leave the slower stuff for an async process.

    • @an2ny2100
      @an2ny2100 6 днів тому

      @@WadeWaldron-Confluent alright. now i know a bit more about banking system

  • @uchechukwumadu9625
    @uchechukwumadu9625 7 днів тому

    Why not just call it a data lakehouse architecture like others are doing?

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 6 днів тому

      Adam here. I covered that here: ua-cam.com/video/dahs6jpCYQs/v-deo.html Headless is the full decoupling of data access from processing _of all forms_, providing reusable data assets for anywhere in the company - not just for analytics use cases. To emphasize - a data lake, or lakehouse, or lake-like warehouse, are all analytics constructs first and foremost. They're also predicated on the notion that you must copy all the data into the data lake's bronze layer "as-is". From there, you add schemas, formatting, and structure, leading to a silver layer (another copy). Then you can start doing work on it. The problems: 1) You don't own the data. The source breaks, your pipeline breaks, and then you're forced to react to it, determine impact / contamination, reprocess data sets, etc. (Did this for 7-8 years myself, no thanks). 2) It's stuck in your data lake. All that work you did to convert it Source->Bronze->Silver is only usable if you use the data lake. _Historically_, leading data lake providers have been happy to provide you with the best performance ONLY if you use their query engines. Using an external engine (if even compatible) would lead to far worse performance. Data lakehouse/warehouse/househouse providers were more than happy to lock you in on the data front, because they made big $$$ on it. But happily, this is starting to change due to the adoption of open-source formats that you can run yourself in house - you can see it with the growing adoption of Iceberg (Databricks bought Tabular, Iceberg cocreators - Snowflake is investing heavily in Iceberg, open sourcing their Polaris catalog). Data lake providers _could_ decide NOT to adopt these open formats, but then they risk losing their business to those who have - so the result is that most players are letting go of their control over storage so that they can adopt Iceberg/Delta/Hudi compatible workloads that they may not have had access to before. If you want a quick mental shortcut for how this is different - a headless data architecture lets you plug your data into your data lake _at the silver layer_. The data is well-formed, controlled, schematized, and has designated ownership. But you can also plug that same data into a DuckDB instance, or you can plug it into BigQuery, or Flink, or any other Iceberg-compatible / Kafka compatible consumer endpoint. The idea is that you've decoupled the creation of the data plane from "analytics-only" concerns, and instead focused on building modular reusable building blocks that can power any number of data lakes, warehouses, or swamps, in addition to operational systems.

  • @marcom.
    @marcom. 7 днів тому

    I don't get the point of this video, I must admit. If we build modular architectures with bounded contexts, each with its own data, loosely coupled with EDA - why should I want something that sounds like the exact opposite?

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 6 днів тому

      Adam here. I'm not advocating removing bounded contexts, putting all the data into a big mixed pile, and tightly coupling all your systems together. A headless data architecture promotes the data that should be shared into an accessible format - in this version, the stream or the table. If you already have EDA with well-formed and schematized streams you're halfway there. The table component is an extension, where you take business data circulating in your streams and materializing it into an Iceberg table - but note that we didn't shove it into some data lake somewhere for just the lake to use. It remains outside the lake, and is _pluggable_ into whatever lake, warehouse, operational system, SaaS app, or client that needs it. This pluggability forgoes copying, so that you don't need to build pipelines and copy data. The gist is that you focus on building a data layer that promotes access and reuse - something that comes for free with a Kafka-based EDA, but that has historically struggled for tables due to the general approach of dumping it all in a data lake to sort it out later.

  • @danielthebear
    @danielthebear 7 днів тому

    I love Iceberg but probably I would not apply this architecture when data is distributed in different cloud providers because each query that goes across cloud providers will incur great latency and generate egress costs - costs that will be difficult to predict. Furthermore CAP theorem applies when data is distributed. What are you thoughts about those 3 points?

    • @LtdJorge
      @LtdJorge 7 днів тому

      Well, the team building your architecture could abstract it below the public API. If you query data from BiqQuery, make the system do all processing on GCP and so on. However, if you're trying to join/aggregate data from different clouds, then yeah, I guess you're out of luck. Or you could make a query engine that is architecture aware and takes into account where the data is, the potential egress/ingress, etc as cost for the query planner and then try to push down as many operations as possible, so that you only send through the internet the most compact and already processed data, instead of the entire projection.

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 6 днів тому

      Adam here. Inter-cloud costs remain a factor, but typically I wouldn't expect to see a single query federated across clouds WITHOUT taking into consideration data locality. For example, issue separate queries for each cloud, aggregate locally, then bring those results to a single cloud for final aggregation (basically a multi-cloud Map-Reduce - thanks Hadoop!). Speed also remains a factor, as you pointed out, due to CAP theorem. There is no free lunch, so if you're going with a global, multi-cloud, distributed data layer, then yeah, you should probably invest in some tooling to prevent your users from shooting themselves in the foot with a $50k per query bill.

  • @BUY_YOUTUB_VIEWS.986
    @BUY_YOUTUB_VIEWS.986 7 днів тому

    This needs to be in a museum.

  • @ConfluentDevXTeam
    @ConfluentDevXTeam 7 днів тому

    Hey, Adam here. Plugging your data into the processing and query heads of your choice is a significant benefit of the headless data architecture. Let me know what heads you make the most use of, and what pain points you have!

  • @ConfluentDevXTeam
    @ConfluentDevXTeam 8 днів тому

    Try www.confluent.io today, the cloud-native Data Streaming Platform to set your data in motion.

  • @Mahi47XI
    @Mahi47XI 8 днів тому

    Too much theory and less explanation

  • @ericsphone6915
    @ericsphone6915 8 днів тому

    I believe it's "All that glitters is not gold".

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 7 днів тому

      That's the common quote, yes. However, in this case, Danica is correctly quoting from J.R.R. Tolkien. www.goodreads.com/quotes/229-all-that-is-gold-does-not-glitter-not-all-those

  • @GamingAmbienceLive
    @GamingAmbienceLive 8 днів тому

    i call crows kafkas cute name

  • @samwei51
    @samwei51 8 днів тому

    Thanks for the explanation. I would like to point out a few points where it sounded vague and unclear to me. 1. The arrows at 3:09 are intertwined and are hard to comprehend easily. 2. 8:12, it sounds like the P0 P1 P7 messages are enqueued into the coordinator queue all at once. But I wonder if they are progressively enqueued as the transaction process steps forward. 3. 10:21, "the broker also returns a little bit metadata (for message #57) so the consumer can ignore the aborted record". But the Abort message (#61) has not been read yet. It's kind of unclear to me how Kafka includes the info "message #57 has been aborted" in the metadata. Maybe I'm just being ignorant as I'm not experienced with Kafka. Any illuminations would be appreciated.

  • @himanshuthakur8635
    @himanshuthakur8635 9 днів тому

    Great information!

  • @tomasselnekovic
    @tomasselnekovic 10 днів тому

    I dont understand why are you in such a hurry when explaining something like this. This video could be really good but should be redone because the pace of explanation makes it unfortunately useless.

  • @cu7695
    @cu7695 11 днів тому

    How to add business domain metadata ? Is it supported via Terraform

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 9 днів тому

      Hi, Gilles from Confluent here. You can add business domain metadata via the UI or the API, or you can use our Terraform provider. Check out my video to see how to do that: ua-cam.com/video/Vg7k_3vlC3Q/v-deo.html.

  • @YoyoMoneyRing
    @YoyoMoneyRing 12 днів тому

    Its a 1.25 speed video already.

  • @Zmey5656
    @Zmey5656 12 днів тому

    Thank you, very interesting explanation about using asynchronous events

  • @chalequin
    @chalequin 12 днів тому

    Great video , enjoying this series When it comes to transaction approval , there is the transactional part ( no pun intended ) where the system has to decide within ~100 milliseconds if it goes through or not . Here we must pack a a rule-based solution inside the monolith . Then for higher-latency ML models , the micro service takes over . I haven't seen or implemented the async approach myself but it feels like the right system design to me

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 11 днів тому

      Wade here. Yeah, that's more or less my thinking as well. Simple rules that can be executed fast can be used for a quick sanity check on the transaction. Async events for a more detailed analysis. The key is to recognize that sometimes things need to be done synchronously, but that doesn't mean everything needs to be synchronous.

  • @user-ev9jg6ts6e
    @user-ev9jg6ts6e 12 днів тому

    The problem with event-driven architecture is that business almost always wants things to be strongly consistent. In the example, transaction processing is not strongly consistent with fraud detection. I mean a transaction can be processed, but detected as fraud after several milliseconds. So a compensation mechanism needs to come into play and business people usually do not like this :)

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 12 днів тому

      Wade here. Absolutely. Within our industry, there is a tendency to assign strong consistency to processes that aren't actually strongly consistent and don't really require it. That is a hurdle to overcome. And it's not to suggest that you can always overcome it. Sometimes, the business wants strong consistency, and you can't do anything to change their mind. However, we should avoid assuming that everything must be strongly consistent. Start with async events. Fallback to other techniques if required. And make sure the business understands the consequences. If making the operation strongly consistent results in a 10x increase in latency (as an example), is that really what the business (or customer) wants?

    • @user-ev9jg6ts6e
      @user-ev9jg6ts6e 12 днів тому

      ​@@ConfluentDevXTeam Totally agree

  • @user-ev9jg6ts6e
    @user-ev9jg6ts6e 12 днів тому

    Excellent as always. Thanks, Wade.

  • @ConfluentDevXTeam
    @ConfluentDevXTeam 13 днів тому

    Wade here. This is an interesting topic for me. Having built applications that use Async messages as their foundation, I'm sold. I've seen so many amazing benefits from it. But it's sometimes hard to explain those benefits to people who haven't tried it. So I am curious. Have you used async events? Have you seen some of the benefits I outline in the video? Have you seen challenges? Have you encountered issues in synchronous communication that you think might be solved using these techniques?

  • @dswork-wh2yf
    @dswork-wh2yf 13 днів тому

    Thank you for the clear explanation

  • @cu7695
    @cu7695 14 днів тому

    A lot of orgs need to hear this.

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 13 днів тому

      Wade here. I'm glad you got value out of it. I'm curious what aspect you found so important that you feel other orgs need to hear it.

  • @szymonbernasiak7526
    @szymonbernasiak7526 14 днів тому

    For those who cannot find API Credentials: 1. Select your environment (probably 'default') 2. You'll see the "endpoint" in the right bottom right corner. This is what you're looking for.

  • @cpthermes3703
    @cpthermes3703 15 днів тому

    Actually such a great explanation.

  • @oscarluizoliveira
    @oscarluizoliveira 15 днів тому

    Congratulations on the content Adam, this area of ​​technology of ours is very complicated, with many of the same terms having different meanings depending on the context, I'm studying postgraduate studies in software architecture and it drives me crazy. Taking advantage, when we talk about an ephemeral form without retention, we are referring to a pattern where events are processed in real time and are not stored for later consultation, is that it?

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 14 днів тому

      Ephemeral means that there is no indefinite persistence of the events. It can vary from "all events are only in memory" (and therefore vulnerable to deletion upon power loss) to "events are persisted to disk, but are deleted after a short period of time "(seconds, minutes, or perhaps after consumption). For example, a consumer may only receive the messages if it is online at the time the producer writes it to the broker. A consumer coming online later is unable to access the historic events because they are no longer stored anywhere.

  • @cu7695
    @cu7695 16 днів тому

    "Why deploy to prod first ?" is best part of this video. I've been learning that flawless migration is an art in itself

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 15 днів тому

      Wade here. Glad you enjoyed that part. Maybe it's not as controversial as I thought. When I first started doing deploy to prod first, I have to say I loved it. It definitely requires a bit of care, but it eliminates so many surprises that I would say it's worth it. I remember a project where the developers didn't do this. They spent months of crazy overtime building this thing and when they finally did deploy it to production all the wheels fell off. Turns out, it worked great in tests, but terribly against real prod data. I believe the term used was "carpet speed". Had it been deployed first to production and potentially run against production data, this could have been discovered much earlier.

  • @thisismissem
    @thisismissem 17 днів тому

    What was the pattern of an adapter testing a new service & collecting results? I feel like I vaguely heard of it first from (I might be getting the name wrong here) GitHub Scientist?

  • @Fikusiklol
    @Fikusiklol 18 днів тому

    Is this different from KSQL-db and stream processing happening there? Sorry for being ignorant, just genuinely confused :)

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 15 днів тому

      Lucia here. That's a great question! Both ksqlDB and FlinkSQL can analyze data that is in Kafka topics. However, ksqlDb is built on Kafka Streams, while FlinkSQL is an API offered by Apache Flink. You can read more about FlinkSQL here: cnfl.io/4bR5ndv

  • @B-Billy
    @B-Billy 18 днів тому

    Absulutely amazing explanation!! Could you make a video on Kafka, why it is so fast and relieable?

    • @ConfluentDevXTeam
      @ConfluentDevXTeam 15 днів тому

      Adam here. You may want to check out this video my colleague Tim made a few years back on the basics of Kafka - ua-cam.com/video/06iRM1Ghr1k/v-deo.html In terms of speed and reliability, those topics tend to get a bit more advanced. Speed needs to be broken down into latency and throughput. You can have high throughput (lots of MB/s) and low latency (< 10 mS), though the two often have a bit of a tradeoff (lots of small writes is low latency, but the writes have overhead so your throughput goes down). In terms of reliability, a lot of it has to do with things like exactly-once processing, transactions (so you don't lose data), distributed systems (if you lose a broker you don't lose data, and your system can keep working as before). Anyways, lots to unpack there. A bit more of a hands-on approach can be found here on Confluent developer.confluent.io/learn/kafka-performance/

  • @Zaibacu
    @Zaibacu 18 днів тому

    Didn’t expect much, but found it extremely useful for our case. Great presentation!

  • @ConfluentDevXTeam
    @ConfluentDevXTeam 19 днів тому

    Wade here. The first time I ever decomposed a monolith it was an eye-opening experience. We had this live system that needed to stay running, and yet we needed to replace parts of it at the same time. It's the old joke of trying to replace the wings on an airplane while it's in flight. Actually, that's a fun thought experiment that is kind of relevant to this video. How would you replace the wings of a plane while it's in flight. Step 1. Build temporary wings on top of the existing wings (call them "proxy wings" if you like). Step 2. Remove the old wings. Step 3. Build new wings in their place. Step 4. Remove the temporary wings. There's a lot of similarities to the process I describe in this video. But what do you think? If you had to decompose a monolith, would you do it differently? Would you replace the entire monolith at the same time? Would you alter the process I've outlined, or add in any additional steps? I'd love to hear your thoughts.

  • @ConfluentDevXTeam
    @ConfluentDevXTeam 19 днів тому

    Hey, it's Lucia! Hopping in here to say that if you're working on transforming, cleaning, and connecting data, we've got resources for you. Head over to Confluent Developer and check out more of our demos: cnfl.io/3X9niaV PS- like I said in the video, I'm happy to answer questions in the comments! Chime in.