Building event-driven (Micro)Services with Apache Kafka by Guido Schmutz

  Рет қаралды 143,055

Devoxx

Devoxx

Күн бұрын

Please subscribe to our KZbin channel @ bit.ly/devoxx-youtube
Like us on Facebook @ / devoxxcom
Follow us on Twitter @ / devoxx
This session will begin with a short recap of how we created systems over the past 20 years, up to the current idea of building systems, using a Microservices architecture. What is a Microservices architecture and how does it differ from a Service-Oriented Architecture? Should you use traditional REST APIs to integrate services with each each other in a Microservices Architecture? Or is it better to use a more loosely-coupled protocol? Answers to these and many other questions are provided. The talk will show how a distributed log (event hub) can help to create a central, persistent history of events and what benefits we achieve from doing so. Apache Kafka is a perfect match for building such an asynchronous, loosely-coupled event-driven backbone. Events trigger processing logic, which can be implemented in a more traditional as well as in a stream processing fashion. The talk shows the difference between a request-driven and event-driven communication and answers when to use which. It highlights how a modern stream processing system can be used to hold state both internally as well as in a database and how this state can be used to further increase independence of other services, the primary goal of a Microservices architecture.
Guido Schmutz works for the Oracle Platinum Partner Trivadis. At Trivadis he is responsible for the innovation in the area of SOA, BPM and Application Integration solutions and leads the Trivadis Architecture Board. He has long-time experience as developer, coach, trainer, and architect in the area of building complex Java EE and SOA-based solutions. Currently, he is focusing on the design and implementation of SOA and BPM projects using the Oracle SOA stack. Another area of interest are Big Data and Fast Data solutions, and how to combine these emerging technologies in a modern information and software architecture. Guido is an Oracle ACE director for Fusion Middleware and SOA and a regular speaker at international conferences.

Пікірлер: 50
@charliehubbard5436
@charliehubbard5436 3 жыл бұрын
From listening to this topic you begin to see how we can't really decide on our choice of architecture. We've done request-response, we've done events, and yet we keep changing vacillating back and forth between the two. Coupled but simple, Decoupled but complex. Kafka's main feature that is different is replaying event streams and it's scale. That is what is driving all of this re-evaluation of architecture design. However, microservices have produced a similar consternation over system design about how these services should interact with each other and how much each service should be responsible for its own destiny (ie a service unto itself, or a collaborative member of a larger system). And, now we're suggesting duplication of storage within the microservices. Each service will now store a copy of all of the data its dependent upon is the advice du jour. At best this is mere duplication of work at worst this has the potential to just recreate many monoliths especially for services that depend upon many things which always happens as product cycles demand. Certainly this can't be good advice for storing user information which has PII concerns and security implications. It doesn't make sense to spread data across many storage tiers that requires extract careful logic and governance unless you're just trying to make your CISO's job harder. Reusing APIs isn't just about data; it's also logic encapsulation! Which if you follow this advice of storing other microservice's means you now have to follow the logic that goes with that data too. Just having the data doesn't absolve you from the responsibilities of using and managing that data. The utopian dream of events everywhere and little to zero request response will be limited by these inconvenient facts. Then there is the issue of microservices need reuse to keep them small. If I can push off logic that isn't central to my problem domain then I can simply reuse someone else's work, and that keeps me light and small. Yes it creates a dependency, but I'm trading off my independence for convenience and a smaller footprint. There is lots to like about Kafka and event streams, and persistence of streams really is what's new here, but I'd be careful about how much this "changes everything" mentality you take away from this because we've seen this play before.
@Pjblabla2
@Pjblabla2 2 жыл бұрын
Very true Micro services might have worked for Netflix which is largely a read heavy use case But one size does not fit all
@splashinventor
@splashinventor 2 жыл бұрын
This is best presentation and tech talk I heard in recent days. Surely the presenter is highly experienced and precise, concise in explaining the whole picture.
@boubeniamohamed236
@boubeniamohamed236 4 жыл бұрын
I found that this presentation is definitly one of the best synthesis. Great work Mr Guido Schmutz.
@imten5518
@imten5518 4 жыл бұрын
Excellent session. Running through multiple architectures was simply great
@Oswee
@Oswee 5 жыл бұрын
Really great talk!!! This is something im playing with. I mean last CQRS stuff.
@igrai
@igrai 6 жыл бұрын
nice architectural overview + good diagrams, thanks!
@hovgrig
@hovgrig 5 жыл бұрын
Thank you for an ​extremely interesting talk!
@Pjblabla2
@Pjblabla2 2 жыл бұрын
Excellent presentation that talks about different types of application architecture patterns leading to micro services and then different patterns and concerns for micro services architecture But everyone should make their own assessment on whether microservices is the right architecture for what they are trying to solve
@ujvalsanghavi4788
@ujvalsanghavi4788 4 жыл бұрын
Excellent Talk, nice way to demonstrate how you can evolve legacy systems to use event driven model to make more scalable & available across wide variety of consumer applications.
@einstein6751
@einstein6751 6 жыл бұрын
Great presentation with deep diving into EDA.
@medmed1714
@medmed1714 5 жыл бұрын
Thanks for the presentation. It is really helpful.
@stack.1
@stack.1 3 жыл бұрын
Very informative and insightful talk, thank you!
@OutboxThinker1
@OutboxThinker1 4 жыл бұрын
It was really interesting to watch, well explained the problems and the approaches as well.
@dineshkhetarpal4767
@dineshkhetarpal4767 4 жыл бұрын
Must watch! Covers all the questions you may have moving a traditional monolithic application to microservices and scale it.
@tyapka
@tyapka 4 жыл бұрын
Wow, such an informative speech.
@andrewshiner1606
@andrewshiner1606 3 жыл бұрын
This was a very nice talk. Thank you.
@arkaprovobhattacharjee4858
@arkaprovobhattacharjee4858 6 жыл бұрын
one of my favourite
@pawegraczyk6050
@pawegraczyk6050 4 жыл бұрын
This was very good.
@nihontravel
@nihontravel 2 жыл бұрын
Good discussion and clear explanation of architectural aspect
@USONOFAV
@USONOFAV 5 жыл бұрын
As a full stack java developer working on Angular+Redux application. I somehow get the whole event-driven architecture thing for microservices. But here you are storing the event instead of the the state.
@johanbester4484
@johanbester4484 3 жыл бұрын
Well presented.
@vjnt1star
@vjnt1star 6 ай бұрын
excellent presentation full of very useful diagrams !
@jilljanqueiro884
@jilljanqueiro884 5 жыл бұрын
Enlightened
@oyinlolaolasunkanmi
@oyinlolaolasunkanmi 3 жыл бұрын
Thank you
@AshutoshKumar-zl8hk
@AshutoshKumar-zl8hk 3 жыл бұрын
Awesome....
@easyappsmarketingestudio2408
@easyappsmarketingestudio2408 4 жыл бұрын
Best Regards From Mexico City. Manuel Silva
@AjayKumar-fd9mv
@AjayKumar-fd9mv 3 жыл бұрын
Thanks
@smogstate
@smogstate 6 жыл бұрын
nice presentation, tnx a lot. this is close how we do write our microservices. If you use eventsourcing you can simply expose you events with CDC (debezium), so you dont have any mechanics in you software for event sending.
@seNick7
@seNick7 7 ай бұрын
CDC gives you technical events, not business events. EDA won't work on it. CDC is just for copying stuff around.
@smogstate
@smogstate 7 ай бұрын
​@@seNick7business event is inside a technical one :) only inserts easy to interpret.
@connykuehne
@connykuehne 5 жыл бұрын
The consumer does not necessarily have to know the offset though (at 33m30s). Kafka stores the offset after commit.
@guidoschmutz
@guidoschmutz 4 жыл бұрын
Yes, that's correct, but it's still not really "known" to the Kafka broker. It's just another topic which is used to store the offset. Conceptually I would still argue that the consumer "knows" the offset and is responsible for it, i.e. he is in control of how often the offset is commited (into the _offset topic)
@BryanChance
@BryanChance 2 жыл бұрын
"Bus" and "Driver" topics.. I thought words "Bus" an "Driver" are part of Kafka like a message bus or Kafka stream driver, etc. Got me so confused. LOL Great talk.. ..
@1testrad
@1testrad 2 жыл бұрын
Thanks ...
@hansenz7033
@hansenz7033 4 жыл бұрын
This is a great talk, one question that I have is: People treat order Pizza as a typical async scenario and a good example for event driven architecture, like I put an order event, then get back the order finished event etc. Most cases, the client-side just want to get the realtime data, like I try to get my messages, get the latest emails, use credit card to purchase something. Does this mean we can't use event driven architecture here for the online process? Only for the offline BI/Search purpose?
@HimanshuGupta-nk9yf
@HimanshuGupta-nk9yf 3 жыл бұрын
Client side is sending and receiving events as well. Email client is sending emails but is also receiving emails from others to be displayed on its UI.
@vivienh.missamou208
@vivienh.missamou208 3 жыл бұрын
hi Guido, Interessing slides and work!! But i'd like to seek attention on the part about microsevices database. you say "microservice might share a central database to exchange states at low level with other (Micro) seevices". I think that's against the microservices principles, patterns and best practices, namely independency and non-centralization. As of a statefull case (vs stateless) and self-boundary , a microservice must handle data (input) contained in its scope (domain/context/subcontext). Thefore, Payment can't share state at low level with Order. But paiment can only do so with a microservice part of its domain context/subcontext boundary. Any external-domain microservice must exchange through endpoint, topic, etc.Because a microservice is and must be responsible for its own inner logic. So when presenting SOA along side microsevices we need to be carefull, as soa is used to implement component-based services:) I really appreciate your job
@ayaskanta100
@ayaskanta100 3 жыл бұрын
serde --->producer to consumer in-between a schema store known an schema registry
@rachelleyu1774
@rachelleyu1774 2 жыл бұрын
Oracle monolithic computing - RDBMS Kafka distributed computing and data stores Long live the king !!
@jorgwende6314
@jorgwende6314 5 жыл бұрын
JMS ... 100-200 Events per Second ? You should check this again, sorry!
@kennethcarvalho3684
@kennethcarvalho3684 5 жыл бұрын
With kafka should be possible right??
@guidoschmutz
@guidoschmutz 4 жыл бұрын
That's what we got, of course it was a couple of years ago. I'm talking about persistent messages, send within a transaction to a clustered JMS message broker. The "within transaction" is a bit an unfair comparison, I agree, as Kafka does not participate in transactions. But the sending of persistent messages is important. Sending JMS message in a "non durable" way will of course allow for a much higher throughput.
@Alperic27
@Alperic27 3 жыл бұрын
Confused explanations
@lusiek21
@lusiek21 6 жыл бұрын
SOA and (Micro)services that is original. I guess (Micro)services are not real microservices. Yesterday's technologies with Kafka :)
@guidoschmutz
@guidoschmutz 4 жыл бұрын
No, the idea was to say that Micorservices could be seen as SOA done right. I'm not promoting "old SOA style services" communicating with Kafka. But it also does not have to be Microservices to get a benefit with decoupling through Kafka. That's why the title is (Micro)services. At the end you can profit as soon as you start creating smaller application modules and Kafka can help to decouple them.
@shagging8727
@shagging8727 3 жыл бұрын
of of of of of of of of of....
@lusiek21
@lusiek21 5 жыл бұрын
Nothing useful here.
@abdulkaderjeelani
@abdulkaderjeelani 2 жыл бұрын
RedPanda
DEFINITELY NOT HAPPENING ON MY WATCH! 😒
00:12
Laro Benz
Рет қаралды 62 МЛН
New model rc bird unboxing and testing
00:10
Ruhul Shorts
Рет қаралды 25 МЛН
- А что в креме? - Это кАкАооо! #КондитерДети
00:24
Телеканал ПЯТНИЦА
Рет қаралды 7 МЛН
A clash of kindness and indifference #shorts
00:17
Fabiosa Best Lifehacks
Рет қаралды 125 МЛН
Event-Driven Architecture (EDA) vs Request/Response (RR)
12:00
Confluent
Рет қаралды 128 М.
Event Sourcing   You are doing it wrong by David Schmitz
43:05
What is Apache Kafka®?
11:42
Confluent
Рет қаралды 345 М.
Introduction to Apache Kafka by James Ward
49:48
Devoxx
Рет қаралды 279 М.
A Beginner's Guide to Event-Driven Architecture
37:28
Software Developer Diaries
Рет қаралды 8 М.
Opportunities and Pitfalls of Event-driven Utopia
50:37
InfoQ
Рет қаралды 42 М.
ВАЖНО! Не проверяйте на своем iPhone после установки на экран!
0:19
ГЛАЗУРЬ СТЕКЛО для iPhone и аксессуары OTU
Рет қаралды 6 МЛН
КРУТОЙ ТЕЛЕФОН
0:16
KINO KAIF
Рет қаралды 6 МЛН
8 Товаров с Алиэкспресс, о которых ты мог и не знать!
49:47
РасПаковка ДваПаковка
Рет қаралды 129 М.
Копия iPhone с WildBerries
1:00
Wylsacom
Рет қаралды 7 МЛН