Serio? Kolejna prezentacja o Event Sourcingu? I tak, i nie. Zamiast na gloryfikacji tej jakże zacnej koncepcji, skoncentrujemy się na możliwych problemach przy jej implementacji. Co może wybuchnąć (często z opóźnionym zapłonem)? Gdzie i jak przechowywać eventy? Jak osiągnąć najwyższy poziom wtajemniczenia i skalowalności? Jak żyć z eventual consistency? I wiele innych pytań, z którymi spróbujemy się zmierzyć. Postaram się unikać jednoznacznych odpowiedzi - każde rozwiązanie jest dobre, dopóki “działa”. Przerywniki z doświadczeniami słuchaczy będą bardzo mile widziane.
A fast Message-Queue base on zookeeper.
Jafka mq is a distributed publish-subscribe messaging system cloning from Apache Kafka.
So it has following features:
(1)Persistent messaging with O(1) disk structures that provide constant time performance even with many TB of stored messages.
(2)High-throughput: even with very modest hardware single broker can support hundreds of thousands of messages per second.
(3)Explicit support for partitioning messages over broker servers and distributing consumption over a cluster of consumer machines while maintaining per-partition ordering semantics.
(4)Simple message format for many language clients.
"ClojureScript journey: from little script, to CLI program, to AWS Lambda fun...Julia Cherniak
In this talk, I’d like to show that engineer, in order to make progress, should develop its own “outside the box” thinking. Experienced programmer regardless of the language ought to look at things from various standpoints outside the commonly used paradigm. This allows her to choose the proper strategy which fits the task, customer’s requirements, saves time and money. Having our product as an example, I’d like to show new language and new methods, which are not that frequently used in the mainstream. I believe this will broaden the horizon of the conference audience.
Qt Quick/QML brings designers and developers together to create and collaborate. QML is a collection of technologies that can build modern and fluid interfaces for applications – quickly. Join us as we explore the best of QML for mobile, embedded and desktop.
Part I will cover:
- Building Blocks of QML
- Qt Properties
- Declarative Code
Alternatives of JPA
Requery provide simple Object Mapping & Generate SQL to execute without reflection and session, so fast than JPA, simple and easy to learn.
A fast Message-Queue base on zookeeper.
Jafka mq is a distributed publish-subscribe messaging system cloning from Apache Kafka.
So it has following features:
(1)Persistent messaging with O(1) disk structures that provide constant time performance even with many TB of stored messages.
(2)High-throughput: even with very modest hardware single broker can support hundreds of thousands of messages per second.
(3)Explicit support for partitioning messages over broker servers and distributing consumption over a cluster of consumer machines while maintaining per-partition ordering semantics.
(4)Simple message format for many language clients.
"ClojureScript journey: from little script, to CLI program, to AWS Lambda fun...Julia Cherniak
In this talk, I’d like to show that engineer, in order to make progress, should develop its own “outside the box” thinking. Experienced programmer regardless of the language ought to look at things from various standpoints outside the commonly used paradigm. This allows her to choose the proper strategy which fits the task, customer’s requirements, saves time and money. Having our product as an example, I’d like to show new language and new methods, which are not that frequently used in the mainstream. I believe this will broaden the horizon of the conference audience.
Qt Quick/QML brings designers and developers together to create and collaborate. QML is a collection of technologies that can build modern and fluid interfaces for applications – quickly. Join us as we explore the best of QML for mobile, embedded and desktop.
Part I will cover:
- Building Blocks of QML
- Qt Properties
- Declarative Code
Alternatives of JPA
Requery provide simple Object Mapping & Generate SQL to execute without reflection and session, so fast than JPA, simple and easy to learn.
Spring Data Requery is alternatives of Spring Data JPA
Requery is lightweight ORM for DBMS (MySQL, PostgreSQL, H2, SQLite, Oracle, SQL Server)
Spring Data Requery provide Query By Native Query, Query By Example and Query By Property like Spring Data JPA
Spring Data Requery is better performance than JPA
Most applications will need to communicate with other services or devices at some point, or at least save settings on the host computer. These concepts are covered in this module.
After introducing the generic concept behind devices, short examples show how to use files.
Afterwards, the module covers networking and its representation in Qt. In addition to providing classes for handling low level sockets, network managers simplify handling web service requests and responses like for the HTTP protocol. At the end, a short section explains the basics of different methods of parsing XML in Qt, including DOM trees, SAX, pull parsing and XQuery/XPath.
A section about internationalization demonstrates the process step-by-step, showing all required components to make your application multi-lingual.
The fundamentals and advance application of Node will be covered. We will explore the design choices that make Node.js unique, how this changes the way applications are built and how systems of applications work most effectively in this model. You will learn how to create modular code that’s robust, expressive and clear. Understand when to use callbacks, event emitters and streams.
StxNext Lightning Talks - Feb 12, 2016
Kotlin - one of the popular programming languages built on top of Java that runs on JVM. Thanks to JetBrains support and excellent IDE integration, it’s an ideal choice when it comes to Android development. 100% Java compatibility, interoperability and no runtime overhead is just the beginning of a long list of strengths. Kotlin is supposed to be a subset of SCALA, on one hand covering major advantages for developers and on the other - keeping short compile times.
This presentation is a Developer Starter - a set of hand-picked information allowing a person with no knowledge of Kotlin to start writing basic Android activities and set up an Android-kotlin project. It starts with language background, reasons for its creation and advantages. Then presents basic use cases, syntax, structures and patterns. Later on Kotlin is presented in Android context. Simple project structure, imports and Kotlin usage with Android SDK is explained. In the end cost of Kotlin usage is presented and the language is compared to SCALA and SWIFT.
You may all know that JSON is a subset of JavaScript, but... Did you know that HTML5 implements NoSQL databases? Did you know that JavaScript was recommended for REST by Roy T. Fielding himself? Did you know that map & reduce are part of the native JavaScript API? Did you know that most NoSQL solutions integrate a JavaScript engine? CouchDB, MongoDB, WakandaDB, ArangoDB, OrientDB, Riak.... And when they don't, they have a shell client which does...
The story of NoSQL and JavaScript goes beyond your expectations and open more opportunities than you might imagine... What better match could you find than a flexible and dynamic language for schemaless databases? Isn't, an event-driven language what you were waiting for to manage eventually consistency? When NoSQL doesn't come to JavaScript, JavaScript comes to NoSQL, and does it very well...
Basically everything you need to get started on your Zookeeper training, and setup apache Hadoop high availability with QJM setup with automatic failover.
Akka is using the Actors together with STM to create a unified runtime and programming model for scaling both UP (multi-core) and OUT (grid/cloud). Akka provides location transparency by abstracting away both these tangents of scalability by turning them into an ops task. This gives the Akka runtime freedom to do adaptive automatic load-balancing, cluster rebalancing, replication & partitioning
Tugrik: A new persistence option for Pharo
Wed, August 24, 2:00pm – 2:45pm
youtube: https://youtu.be/YwlUdRaqTwE
First Name: Dale
Last Name: Henrichs
Email: dhenrich@gemtalksystems.com
Title: Tugrik: A new persistence option for Pharo
Type: Talk
Abstract:
Tugrik[1] is a new persistence framework for Pharo using GemStone/S 64[3] as
the data base engine.
"GemStone/S 64 provides a distributed, server-based,
multi-user, transactional Smalltalk runtime system,
with the ability to partition the application
between client and server"[4]
As of this writing, a proof of concept for Tugrik has been implemented using
a MongoTalk-style[2] API. The proof of concept includes a Voyage[5]
implementation for Tugrik.
While it is somewhat interesting for developers to use Tugrik to simply
replace MongoDb in their Pharo applications, the work moving forward will
focus on expanding the functionality of Tugrik beyond that of a simple
document database, after all, GemStone/S is a fully functional Smalltalk
implementation.
This talk will describe the proof of concept and discuss the current state
of the project.
[1] https://github.com/dalehenrich/Tugrik
[2] https://github.com/pharo-nosql/mongotalk
[3] https://gemtalksystems.com/products/gs64/
[4] https://downloads.gemtalksystems.com/docs/GemStone64/3.3.x/GS64-ProgGuide-3.3/GS64-ProgGuide-3.3.htm
[5] https://github.com/dalehenrich/voyage
Bio:
Dale Henrichs is a Principal Engineer at GemTalk Systems and has been working
in Smalltalk since 1985. For the last decade Dale has focused on the development
and support of open source projects for both GemTalk Systems and the Smalltalk
community. His contributions to the Smalltalk community include Metacello,
FileTree, and the GemStone port of Seaside.
Rapid API development examples for Impress Application Server / Node.js (jsfw...Timur Shemsedinov
Application code and the server configuration examples with file-system access, RAM state, database access and parallel asynchronous processing of different resource types by stateful and stateless API requests.
Yet another presentation about Event Sourcing? Yes and no. Event Sourcing is a really great concept. Some could say it’s a Holy Grail of the software architecture. I might agree with that, while remembering that everything comes with a price. This session is a summary of my experience with ES gathered while working on 3 different commercial products. Instead of theoretical aspects, I will focus on possible challenges with ES implementation. What could explode (very often with delayed ignition)? How and where to store events effectively? What are possible schema evolution solutions? How to achieve the highest level of scalability and live with eventual consistency? And many other interesting topics that you might face when experimenting with ES.
Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...Codemotion
Yet another presentation about Event Sourcing? Yes and no. Event Sourcing is a really great concept. Some could say it’s a Holy Grail of the software architecture. True, but everything comes with a price. This session is a summary of my experience with ES gathered while working on 3 different commercial products. Instead of theoretical aspects, I will focus on possible challenges with ES implementation. What could explode? How and where to store events effectively? What are possible schema evolution solutions? How to achieve the highest level of scalability and live with eventual consistency?
Spring Data Requery is alternatives of Spring Data JPA
Requery is lightweight ORM for DBMS (MySQL, PostgreSQL, H2, SQLite, Oracle, SQL Server)
Spring Data Requery provide Query By Native Query, Query By Example and Query By Property like Spring Data JPA
Spring Data Requery is better performance than JPA
Most applications will need to communicate with other services or devices at some point, or at least save settings on the host computer. These concepts are covered in this module.
After introducing the generic concept behind devices, short examples show how to use files.
Afterwards, the module covers networking and its representation in Qt. In addition to providing classes for handling low level sockets, network managers simplify handling web service requests and responses like for the HTTP protocol. At the end, a short section explains the basics of different methods of parsing XML in Qt, including DOM trees, SAX, pull parsing and XQuery/XPath.
A section about internationalization demonstrates the process step-by-step, showing all required components to make your application multi-lingual.
The fundamentals and advance application of Node will be covered. We will explore the design choices that make Node.js unique, how this changes the way applications are built and how systems of applications work most effectively in this model. You will learn how to create modular code that’s robust, expressive and clear. Understand when to use callbacks, event emitters and streams.
StxNext Lightning Talks - Feb 12, 2016
Kotlin - one of the popular programming languages built on top of Java that runs on JVM. Thanks to JetBrains support and excellent IDE integration, it’s an ideal choice when it comes to Android development. 100% Java compatibility, interoperability and no runtime overhead is just the beginning of a long list of strengths. Kotlin is supposed to be a subset of SCALA, on one hand covering major advantages for developers and on the other - keeping short compile times.
This presentation is a Developer Starter - a set of hand-picked information allowing a person with no knowledge of Kotlin to start writing basic Android activities and set up an Android-kotlin project. It starts with language background, reasons for its creation and advantages. Then presents basic use cases, syntax, structures and patterns. Later on Kotlin is presented in Android context. Simple project structure, imports and Kotlin usage with Android SDK is explained. In the end cost of Kotlin usage is presented and the language is compared to SCALA and SWIFT.
You may all know that JSON is a subset of JavaScript, but... Did you know that HTML5 implements NoSQL databases? Did you know that JavaScript was recommended for REST by Roy T. Fielding himself? Did you know that map & reduce are part of the native JavaScript API? Did you know that most NoSQL solutions integrate a JavaScript engine? CouchDB, MongoDB, WakandaDB, ArangoDB, OrientDB, Riak.... And when they don't, they have a shell client which does...
The story of NoSQL and JavaScript goes beyond your expectations and open more opportunities than you might imagine... What better match could you find than a flexible and dynamic language for schemaless databases? Isn't, an event-driven language what you were waiting for to manage eventually consistency? When NoSQL doesn't come to JavaScript, JavaScript comes to NoSQL, and does it very well...
Basically everything you need to get started on your Zookeeper training, and setup apache Hadoop high availability with QJM setup with automatic failover.
Akka is using the Actors together with STM to create a unified runtime and programming model for scaling both UP (multi-core) and OUT (grid/cloud). Akka provides location transparency by abstracting away both these tangents of scalability by turning them into an ops task. This gives the Akka runtime freedom to do adaptive automatic load-balancing, cluster rebalancing, replication & partitioning
Tugrik: A new persistence option for Pharo
Wed, August 24, 2:00pm – 2:45pm
youtube: https://youtu.be/YwlUdRaqTwE
First Name: Dale
Last Name: Henrichs
Email: dhenrich@gemtalksystems.com
Title: Tugrik: A new persistence option for Pharo
Type: Talk
Abstract:
Tugrik[1] is a new persistence framework for Pharo using GemStone/S 64[3] as
the data base engine.
"GemStone/S 64 provides a distributed, server-based,
multi-user, transactional Smalltalk runtime system,
with the ability to partition the application
between client and server"[4]
As of this writing, a proof of concept for Tugrik has been implemented using
a MongoTalk-style[2] API. The proof of concept includes a Voyage[5]
implementation for Tugrik.
While it is somewhat interesting for developers to use Tugrik to simply
replace MongoDb in their Pharo applications, the work moving forward will
focus on expanding the functionality of Tugrik beyond that of a simple
document database, after all, GemStone/S is a fully functional Smalltalk
implementation.
This talk will describe the proof of concept and discuss the current state
of the project.
[1] https://github.com/dalehenrich/Tugrik
[2] https://github.com/pharo-nosql/mongotalk
[3] https://gemtalksystems.com/products/gs64/
[4] https://downloads.gemtalksystems.com/docs/GemStone64/3.3.x/GS64-ProgGuide-3.3/GS64-ProgGuide-3.3.htm
[5] https://github.com/dalehenrich/voyage
Bio:
Dale Henrichs is a Principal Engineer at GemTalk Systems and has been working
in Smalltalk since 1985. For the last decade Dale has focused on the development
and support of open source projects for both GemTalk Systems and the Smalltalk
community. His contributions to the Smalltalk community include Metacello,
FileTree, and the GemStone port of Seaside.
Rapid API development examples for Impress Application Server / Node.js (jsfw...Timur Shemsedinov
Application code and the server configuration examples with file-system access, RAM state, database access and parallel asynchronous processing of different resource types by stateful and stateless API requests.
Yet another presentation about Event Sourcing? Yes and no. Event Sourcing is a really great concept. Some could say it’s a Holy Grail of the software architecture. I might agree with that, while remembering that everything comes with a price. This session is a summary of my experience with ES gathered while working on 3 different commercial products. Instead of theoretical aspects, I will focus on possible challenges with ES implementation. What could explode (very often with delayed ignition)? How and where to store events effectively? What are possible schema evolution solutions? How to achieve the highest level of scalability and live with eventual consistency? And many other interesting topics that you might face when experimenting with ES.
Andrzej Ludwikowski - Event Sourcing - what could possibly go wrong? - Codemo...Codemotion
Yet another presentation about Event Sourcing? Yes and no. Event Sourcing is a really great concept. Some could say it’s a Holy Grail of the software architecture. True, but everything comes with a price. This session is a summary of my experience with ES gathered while working on 3 different commercial products. Instead of theoretical aspects, I will focus on possible challenges with ES implementation. What could explode? How and where to store events effectively? What are possible schema evolution solutions? How to achieve the highest level of scalability and live with eventual consistency?
Event sourcing - what could possibly go wrong ? Devoxx PL 2021Andrzej Ludwikowski
Yet another presentation about Event Sourcing? Yes and no. Event Sourcing is a really great concept. Some could say it’s a Holy Grail of the software architecture. I might agree with that, while remembering that everything comes with a price. This session is a summary of my experience with ES gathered while working on 3 different commercial products. Instead of theoretical aspects, I will focus on possible challenges with ES implementation. What could explode (very often with delayed ignition)? How and where to store events effectively? What are possible schema evolution solutions? How to achieve the highest level of scalability and live with eventual consistency? And many other interesting topics that you might face when experimenting with ES.
Kerberizing Spark: Spark Summit East talk by Abel Rincon and Jorge Lopez-MallaSpark Summit
Spark had been elected, deservedly, as the main massive parallel processing framework, and HDFS is the one of the most popular Big Data storage technologies. Therefore its combination is one of the most usual Big Data’s use cases. But, what happens with the security? Can these two technologies coexist in a secure environment? Furthermore, with the proliferation of BI technologies adapted to Big Data environments, that demands that several users interacts with the same cluster concurrently, can we continue to ensure that our Big Data environments are still secure? In this lecture, Abel and Jorge will explain which adaptations of Spark´s core they had to perform in order to guarantee the security of multiple concurrent users using a single Spark cluster, which can use any of its cluster managers, without degrading the outstanding Spark’s performance.
Building a serverless company on AWS lambda and Serverless frameworkLuciano Mammino
Planet9energy.com is a new electricity company building a sophisticated analytics and energy trading platform for the UK market. Since the earliest draft of the platform, we took the unconventional decision to go serverless and build the product on top of AWS Lambda and the Serverless framework using Node.js. In this talk, I want to discuss why we took this radical decision, what are the pros and cons of this approach and what are the main issues we faced as a tech team in our design and development experience. We will discuss how normal things like testing and deployment need to be re-thought to work on a serverless fashion but also the benefits of (almost) infinite self-scalability and the peace of mind of not having to manage hundreds of servers. Finally, we will underline how Node.js seems to fit naturally in this scenario and how it makes developing serverless applications extremely convenient.
Technologies:
Backend
Frontend
Application architecture
Javascript
cloud computing
This talk (delivered at QConLondon 2016) covers the evolution of Coursera's nearline architecture, delves into our latest generation system, and then covers the flagship application of the architecture (evaluating programming assignments).
GTS Episode 1: Reactive programming in the wildOmer Iqbal
You've probably heard of Reactive Programming. It’s a fashionable, new paradigm for modelling asynchronous events in a composable, declarative way. Our mobile developers decided to be trendy, and adopted the world of Observables (aka Signals, Streams) in production. It definitely helped them wade through complex async flows. As code became declarative, it became easier to reason about expected behaviour. Bugs began to flee. Our developers began finding spare time to gym and watch Game of Thrones. Life was good. Or was it?
As with any technology in production, they discovered a host of interesting issues that the tutorials and toy projects never mentioned...
This talk covers the fundamentals of Reactive Programming on iOS and Android. It also includes a much needed debate on issues with the paradigm in production.
Talk about add proxy user in Spark Task execution time given in Spark Summit East 2017 by Jorge López-Malla and Abel Ricon
full video:
https://www.youtube.com/watch?v=VaU1xC0Rixo&feature=youtu.be
ADF Gold Nuggets (Oracle Open World 2011)Lucas Jellema
Gold Nuggets in ADF Faces
ADF Faces is a superior User Interface technology. Just look at Fusion Applications to confirm that statement. Or look at one of the hundreds of ADF applications deployed around the world. ACE Directors Chris Muir and Lucas Jellema draw from the experiences on many of these application to demonstrate a number of the most useful, productive, surprising, even amusing and sometimes quite obscure features in ADF Faces. To offer more insight in the richness of the ADF framework in general and also provide very concrete examples that will immediately help you add advanced functionality or benefit from increased productivity. Topics include task flows, push, desktop integration, event handling, reuse, change persistence, UI Shell and more.
value: - learn about tricks and useful features in ADF Faces that will enable attendees to enhance their ADF applications (in term of visual richness and functionality) and to increase their productivity and improve their development process - get inspired about ADF (Faces)
CQRS and Event Sourcing are popular architectural patterns that allow you to build effective event-driven micro-services.
The basic idea of these patterns is to record each event that changes the state of the domain model into the event-storage.
This approach allows you to reduce service latency for any data scale, as well as be able to restore the system without losing any data.
Lightbend Lagom: Microservices Just Rightmircodotta
Microservices architecture are becoming a de-facto industry standard, but are you satisfied with the current state of the art? We are not, as we believe that building microservices today is more challenging than it should be. Lagom is here to take on this challenge. First, Lagom is opinionated and it will take some of the hard decisions for you, guiding you to produce microservices that adheres to the Reactive tenents. Second, Lagom was built from the ground up around you, the developer, to push your productivity to the next level. If you are familiar with the Play Framework's development environment, imagine that but tuned for building microservices; we are sure you are going to love it! Third, Lagom comes with batteries included for deploying in production: going from development to production could not be easier. In this session, you will get an introduction to the Lightbend Lagom framework. There will be code and live demos to show you in practice how it works and what you can do with it, making you fully equipped to build your next microservices with Lightbend Lagom!
Online Meetup: Why should container system / platform builders care about con...Docker, Inc.
Docker and the CNCF recently announced the general availability of containerd 1.0, an industry-standard runtime for building container solutions. The containerd 1.0 milestone comes after several months of alpha and beta releases, that allowed the team to implement various performance improvements: creation of a stress testing system, improvements in garbage collection and shim memory usage, etc. In this online meetup, we look at how containerd works, what are the top features and improvements and how can container system builders integrate with containerd.
Intellias CQRS Framework - is a cutting-edge cloud-native framework for massive-scale event-driven microservice solutions.
CQRS Framework designed as a part of IntelliGrowth cloud platform for managing mission-critical business processes by a team of Top CoE architects and engineers.
Similar to Andrzej Ludwikowski - Event Sourcing - co może pójść nie tak? (20)
Wojciech Rząsa - Przewidywanie zmian wydajności aplikacji rozproszonychSegFaultConf
Wszyscy tworzymy systemy rozproszone, nawet jeśli to „tylko proste aplikacje www”. Z aplikacją rozproszoną mamy do czynienia już wtedy, gdy biblioteka frontendowa przechowuje stan kontrolek, który musi być zsynchronizowany z backendem. Innym przykładem jest uruchomienie aplikacji w środowisku produkcyjnym bazującym na rozproszonej infrastrukturze cloudowej. Oczywistym przykładem jest też korzystanie z zewnętrznych API. Środowisko rozproszone jest z natury zmienne i trudno przewidywalne. Czy zastanawialiście się kiedyś jaki wpływ na wydajność Waszej aplikacji będą miały zmiany tego środowiska? Jak się zmieni wydajność aplikacji gdy wydłuży się czas odpowiedzi jednego z zewnętrznych serwisów? A jeśli load balancer nierówno rozłoży obciążenie na poszczególne serwery aplikacji, albo jeśli zmienicie wydajność i liczbę maszyn które obsługują aplikację? Można to oczywiście przetestować, ale wymaga to na ogół sporo wysiłku i poniesienia niemałego kosztu (wliczając w to cenny czas pracy). Można to jednak zrobić łatwiej, szybciej i taniej. Zaprezentuję dwa konkretne przykłady w których przewiduję zmiany wydajności rzeczywistych aplikacji z mniejszym wysiłkiem i w krótszym czasie niż można to zrobić za pomocą testów. W swojej pracy używam symulacji, która pozwala analizować zachowanie systemu opisanego wygodnym, przejrzystym językiem dziedzinowym (DSL). Metoda została opisana w pracach naukowych [1, 2, 3, 4] i przedstawiona na międzynarodowych konferencjach. Nie zamierzam jednak dyskutować o części naukowej, ale o możliwości wykorzystania w praktyce. Na obecnym etapie szukam kolejnych praktycznych zastosowań tego podejścia, więc bardzo chętnie przedyskutuję praktyczne problemy i wykonam większość pracy potrzebnej, żeby je przeanalizować i dostarczyć potrzebnych odpowiedzi.
[1] Rząsa W.: Simulation-Based Analysis of a Platform as a Service Infrastructure Performance from a User Perspective, P. Gaj et al. (Eds.): CN 2015, CCIS 522, pp. 182–192, 2015 ISBN: 978-3-319-19418-9.
[2] Rząsa W., Rzońca D.: Event-Driven Approach to Modeling and Performance Estimation of a Distributed Control System, in: Gaj P., Kwiecień A., and Stera P. (Eds.): Computer Networks 2016, Communications in Computer and Information Science 608, Springer International Publishing 2016, pp. 168-179.
[3] Rząsa, W.: Predicting Performance in a PaaS Environment: a Case Study for a Web Application. Computer Science, [S.l.], v. 18, n. 1, p. 21, mar. 2017. ISSN 2300-7036. Available at: . Date accessed: 05 Sep. 2017. doi:http://dx.doi.org/10.7494/csci.2017.18.1.21.
[4] Rząsa W., Jamro M., Rzonca D. (2017) Improving Accuracy of a Network Model Basing on the Case Study of a Distributed System with a Mobile Application and an API. In: Gaj P., Kwiecień A., Sawicki M. (eds) Computer Networks. CN 2017. Communications in Computer and Information Science, vol 718. Springer, Cham.
Tomasz Nurkiewicz - Programowanie reaktywne: czego się nauczyłemSegFaultConf
Programowanie reaktywne umożliwia wiele niesamowitych rzeczy. Skalowalne systemy potrzebujące zaledwie ułamka mocy obliczeniowej i zasobów w porównaniu z klasyczną, blokującą aplikacją? Pewnie. Responsywny kod, ogromna przepustowość, niskie czasy odpowiedzi? Bez problemu. Niewielki narzut na pamięć i system? Z definicji. Dlaczego by nie kochać programowania reaktywnego i reaktywnych systemów? Podzielę się z Wami moimi doświadczeniami, kiedy reaktywność popłaca, ale zwłaszcza kiedy jest podejście przeinżynierowanym. Jakie są ukryte koszty i typowe błędy? Jak przekonać swój zespół do rozpoczęcia przygody z reaktywnością? I jeszcze ważniejsze, jak dostrzec, że ten styl architektoniczny to ślepa uliczka, więcej kłopotu niż pożytku? Na konkretnych przykładach.
Zbyszko Papierski - Communication patterns in carbon-based networksSegFaultConf
Porozmawiajmy o rzeczach wszystkim Wam świetnie znanych.
Głodzenie wątków. Długie bloki synchronize. Niestabilne I/O. Problemy w wyborem lidera w klastrze.
To wszystko, to oczywiście problemy komunikacji. Takiej międzyludzkiej.
Czym innym jest meeting niż blokiem synchronize, rozciągniętym na wątki naszej uwagi? Cały projekt upada, bo jedna osoba wylądowała na L4 – dziwnie podobne do potężnych stron, upadających z powodu jednej niedziałającej usługi!
Komunikacja, ta w realnych życiu, ma dużo wspólnego z komunikacją pomiędzy wątkami/ procesami/maszynami. Obie są trudne – obie też powinny być przemyślane. Co najważniejsze dla nas – są pewnie lekcje, które odnoszą się do obu!
No dobra, ale czemu ja, programista, miałbym się tym przejmować? – zadajesz sobie pytanie. Odpowiedź jest prosta – komunikacja nie jest dziedziną przeznaczoną tylko i wyłącznie Product Managerom czy architektom. Niekończące się spotkania, czy ciągła niemożność dojścia do decyzji – to są rzeczy, które skutecznie wysycają twoje wewnętrzne zasoby i spowalniają cię w podobny sposób, jak niepotrzebna synchronizacja spowalnia twój kod.
Porozmawiamy o tym, w jaki sposób wiedza o współczesnych procesorach może nam pomóc zorganizować efektywne spotkania. Przekonamy się, co wspólnego mają ze sobą programiści i Java Memory Model. Nauczymy się, jak zaprojektować nieblokującą komunikację, i to bez używania brzydkich tricków jak Unsafe!
Ostrzeżenie – ludzie będą tutaj porównywani do zasobów.
Daniel Pokusa - Praca z kodem zastanym- nadchodzi wielka falaSegFaultConf
Wyobraź sobie, że dostajesz swój wymarzony projekt. W końcu „greenfield”! Ale jest to projekt biznesowy i to Ty jesteś odpowiedzialny za wybór technologii, a jako specjalista czujesz się też odpowiedzialny za całość. Co robisz? Zaryzykujesz tak po prostu i wybierzesz same „nowinki” z rynku, które Cię kręcą i których chciałbyś spróbować? A jeśli uznasz, że jednak trzeba podejść do tematu „poważnie” to czy tak na prawdę aż tak dużo się nauczysz? O ile lepszym architektem i programistą się staniesz korzystając już ze znanych sobie wzorców i podejść? Prawda jest taka, że jak masz już młotek to wszystko staje się gwoździem. A każdy z nas ma swoje ulubione młotki. Oczywiście- część problemów będzie nowych, będzie wymagała nowych podejść i rozwiązań- ale nasz umysł skonstruowany jest w taki, a nie inny sposób- będziemy stosować utarte i pewne praktyki, szczególnie jeśli potrzebujemy udowodnić swoją wartość w (nowym) zespole.
Chciałbym Wam pokazać dlaczego można zakochać się w „legacy”, dlaczego te projekty mogą i powinny często być naszym pierwszym wyborem (o ile znajdują się w określonym środowisku). Prawda jest taka, że najwięcej uczymy się popełniając błędy, rozwiązując nowe problemy, ale także pracując w bardzo ograniczonej przestrzeni, która wymaga ostrożnych modyfikacji. Szczególnie, gdy nadchodzi wielka fala i wymagane są duże zmiany. Wtedy wchodzimy na scenę i chcemy zejść z niej niepokonani.
Prezentacja nie będzie opowieścią o tym dlaczego to jest piękne i wspaniałe. Ten temat zarysowałem powyżej i przedstawię Waszej indywidualnej ocenie. Chcę natomiast razem z Wami przejść przez kilka ciekawych problemów architekturalnych, o które ciężko w nudnych greenfieldach. Chcę razem z Wami zakochać się na nowo w rozwiązywaniu problemów tworzonych przez wymagania biznesowe, technologie i wcześniejsze decyzje. I w końcu chcę razem z Wami popatrzeć na wytwarzanie oprogramowania nie jak na sprint, ale jak na maraton w którym kluczowe jest nie tylko rozłożenie sił w czasie, ale odpowiednia kontrola całego organizmu i umysłu. Będzie dużo kwadracików, kółeczek i strzałek, ale będą też technologie i braki technologii.
Dominik Boszko - Krocząc doliną ciemności mikroserwisów się nie ulęknęSegFaultConf
Częściowo w oparciu o własne doświadczenia opowiem o pracy z mikroserwisami i o pułapkach w które można wpaść. Czy mikroserwisy naprawdę są rozwiązaniem wszystkich naszych problemów? Czym jest rozproszony monolit, jak powstaje i jak sobie z nim radzić? Jak rozpoznać nadchodzące kłopoty i dlaczego warto przemyśleć swoją architekturę po raz wtóry.
Krzysztof Kaczmarek - 10 rzeczy, które chciałbym wiedzieć 10 lat temuSegFaultConf
Istnieją momenty „Aha” które zmieniają życie, karierę, zatrzymują czas. Czasem jest to pierwsze spojrzenie w oczy kobiety którą kochasz (lub mężczyzny) i nic już nie będzie takie samo, czasem jest to zdanie mentora które zmienia bieg Twojej kariery.
Tematy przechodzą od ontologii po wybór frameworków. Przyjdź i posłuchaj czego nauczyli się już inni.
Ten talk składa się w połowie z własnej retrospektywy, w drugiej ze skompilowanej wiedzy ekspertów, których szanuje i podziwiam.
Wszystko przetestowane na własnej (lub cudzej ) skórze. i na zwierzętach. i programistach. i managerach. i ich rodzinach. 100% meat.
Jan Pustelnik - Curry-Howard w praktyceSegFaultConf
Pewnie gdzieś słyszałeś “Izomorfizm Curry’ego-Howarda” albo obiło Ci się o uszy “Propositions as Types”. A może nawet czytałeś coś o tym, ale szybko zrezygnowałeś, bo poziom abstrakcji wydał Ci się zabójczy. Tymczasem to pewien podstawowy fakt leżący głęboko u podstaw informatyki. W moim wystąpieniu postaram się Ciebie przekonać, że jest to nie tylko coś co jako programista intuicyjnie rozumiesz, używasz na co dzień w językach programowania, ale też, że pozwala on na tworzenie lepszych programów poprzez użycie wyrafinowanych typów do dowodzenia poprawności.
Robert Pankowecki - Czy sprzedawcy SQLowych baz nas oszukali?SegFaultConf
Wyobraź sobie, że w twojej aplikacji zachodzą jakieś zmiany (domain eventy). Chcielibyśmy te zmiany wystawić na zewnątrz, żebyśmy mogli na ich podstawie robić sobie raporty, read modele, sagi, synchronizować dane. Czy to zadanie okaże się być trudne czy proste, jeśli użyjemy bazy danych SQL. Co zyskaliśmy dzięki temu, że używam RDBMS/SQL a co utraciliśmy, być może, bezpowrotnie. W tej prezentacji opowiem wam jak chciałem zbudować pewną funkcjonalność dla biblioteki Rails Event Store, dlaczego okazało być się to trudniejsze niż myślałem, o modelu MVCC w PostgreSQL, czy jest sposób, żeby go obejść i uzyskać emulację trybu READ UNCOMMITTED. A może możnaby do całego problemu podejśc zupełnie inaczej i podłączyć się pod Write-Ahead-Log (WAL) i wygrać świat w ten sposób? Pokażę też jak moim zdaniem, korzystając z dokładnie tych samych konceptów, które stoją za Event Sourcingiem i bazami danych moglibyśmy budować API, tak bym za każdym razem pisząc integrację z serwisem X nie musiał się zastanawiać czy jego autorzy rozumieją pojęcie idempotent czy nie. Albo jak moglibyśmy osiągnąć prostotę dzięki używaniu Convergent Replicated Data Types (CRDT). Być może jako community stać nas na więcej niż REST nad CRUDem. Zastanowimy się, czy sprzedawcy SQLa zlasowali nam mózgi, sprawili, że zapomnieliśmy o najprostszym sposobie, który może działać i wprowadzili nas w maliny, w których aktualnie się znajdujemy. A może sami jesteśmy sobie winni? TLDR: Czy nasze aplikacje nie mogłyby działać tak jak pod spodem działają bazy danych? Czy to wszystko musi być takie ciężkie i skomplikowane jeśli chcemy mieć mikro-serwisy, zwłaszcza w małym zespole, który niekoniecznie lubi dostawiać 5 bazę danych do stacku technologicznego.
Marcin Grzejszczak - Contract Tests in the EnterpriseSegFaultConf
Is your legacy application talking to a service that is never up and running on your shared testing environment? Does your company waste a lot of time and money on regression testing only to see that, yet again, someone has created a typo in the API? Enough is enough. Time to fix this problem using contract tests!
In this presentation you’ll see how to migrate a legacy application to work with stubs of external applications. We’ll show different ways of increasing your test reliability by writing adding contract tests of your API. You’ll see the difference between producer and consumer driven contracts.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
6. History
● 9000 BC, Mesopotamian Clay Tablets,
e.g. for market transactions
7. History
● 2005, Event Sourcing
“Enterprise applications that use Event Sourcing
are rarer, but I have seen a few applications (or
parts of applications) that use it.”
8. Why Event Sourcing?
● complete log of every state change
● debugging
● performance
● scalability
9. ES and CQRS
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
10. ES and CQRS level 1
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Transaction
11. ES and CQRS level 1
● Entry-level, synchronous & transactional event sourcing
● slick-eventsourcing
12. ES and CQRS level 1
+ easy to implement
+ easy to reason about
+ 0 eventual consistency
- performance
- scalability
13. ES and CQRS level 2
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
Transaction
14. ES and CQRS level 2
+/- performance
+/- scalability
- eventual consistency
- increased events DB load
- lags
15. ES and CQRS level 3
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
Transaction
event
bus
16. ES and CQRS level 3.1
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
event
bus
Transaction
17. ES and CQRS level 3.1.1
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
event
bus
Transaction
18. ES and CQRS level 3.1.1
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
event
bus
Transaction
At-least-once delivery
19. ES and CQRS level 3.1.1
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
event
bus
Transaction
20. ES and CQRS level 3.1.1
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
event
bus
Transaction
21. ES and CQRS level 3.1.1
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
event
bus
Transaction
22. ES and CQRS level 3.1.1
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
event
bus
Transaction
23. ES and CQRS level 3.1.1
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
event
bus
Transaction
24. ES and CQRS level 3.1.1
Command Service
Domain
Events
Client
Query Service
Data access
Commands Queries
Read
modelRead
modelRead
models
Updater
event
bus
Transaction
?
25. ES and CQRS level 3.2
Events
Client
Query Service
Data access
Commands
Queries
Read
modelRead
modelRead
models
Updater
event
bus
Command Service
Domain
Command Service
Domain
Command Service
Domain
Transaction
Sharded
Cluster
26. ES and CQRS level 3.x
+ performance
+ scalability
- eventual consistency
- complex implementation
27. ES and CQRS alternatives
● Change Capture Data (CDC) logging instead of message queue?
● message queue instead of DB?
29. ES from domain perspective
● commands, events, state
● 2 main methods on state
○ process(command: Command): List[Event]
○ apply(event: Event): State
30. ES from application perspective
● snapshotting
● fail-over
● recover
● debugging
● sharding
● serialization & schema evolution
● concurrency access
● etc.
31. import javax.persistence.*;
import java.util.List;
@Entity
public class Issue {
@EmbeddedId
private IssueId id;
private String name;
private IssueStatus status;
@OneToMany(cascade = CascadeType.MERGE)
private List<IssueComment> comments;
...
public void changeStatusTo(IssueStatus newStatus) {
if (this.status == IssueStatus.DONE
&& newStatus == IssueStatus.NEW || this.status == IssueStatus.NEW
&& newStatus == IssueStatus.DONE) {
throw new RuntimeException(String.format("Cannot change issue status from %s to %s",
this.status, newStatus));
}
this.status = newStatus;
}
...
}
32. import org.axonframework.commandhandling.*
import org.axonframework.eventsourcing.*
@Aggregate(repository = "userAggregateRepository")
public class User {
@AggregateIdentifier
private UserId userId;
private String passwordHash;
@CommandHandler
public boolean handle(AuthenticateUserCommand cmd) {
boolean success = this.passwordHash.equals(hashOf(cmd.getPassword()));
if (success) {
apply(new UserAuthenticatedEvent(userId));
}
return success;
}
@EventSourcingHandler
public void on(UserCreatedEvent event) {
this.userId = event.getUserId();
this.passwordHash = event.getPassword();
}
private String hashOf(char[] password) {
return DigestUtils.sha1(String.valueOf(password));
}
}
40. Event storage for Akka Persistence
● file
● RDBMS
● Event Store
● MongoDB
● Kafka
● Cassandra
41. akka-persistence-jdbc trap
val theTag = s"%$tag%"
sql"""
SELECT "#$ordering", "#$deleted", "#$persistenceId", "#$sequenceNumber",
"#$message", "#$tags"
FROM (
SELECT * FROM #$theTableName
WHERE "#$tags" LIKE $theTag
AND "#$ordering" > $theOffset
AND "#$ordering" <= $maxOffset
ORDER BY "#$ordering"
)
WHERE rownum <= $max"""
43. Cassandra perfect for ES?
● partitioning by design
● replication by design
● leaderless (no single point of failure)
● optimised for writes (2 nodes = 100 000 tx/s)
● near-linear horizontal scaling
44. ScyllaDB ?
● Cassandra without JVM
○ same protocol, SSTable compatibility
● C++ and Seastar lib
● 1,000,000 IOPS
● not fully supported by Akka Persistence
48. Plain text Binary
human-readable deserialization required
problems with precision (JSON IEEE 754) -
storage consumption compress
49. Plain text Binary
human-readable deserialization required
problems with precision (JSON IEEE 754) -
storage consumption compress
slow fast
50. Plain text Binary
human-readable deserialization required
problems with precision (JSON IEEE 754) -
storage consumption compress
slow fast
poor schema evolution support full schema evolution support
80. ES and CQRS level 3.2
Events
Client
Query Service
Data access
Commands
Queries
Read
modelRead
modelRead
models
Updater
event
bus
Command Service
Domain
Command Service
Domain
Command Service
Domain
Transaction
Sharding
Clustering
86. Cluster best practises
● very good monitoring & alerting
● a lot of failover tests
● cluster also on dev/staging
● keep it as small as possible (code base, number of nodes, etc.)
87. Summary
● understand event/state schema evolution
● eventual consistency is your friend
● scaling is complex
● log-based processing mindset