Jdon Framework is a lightweight framework that helps build clean and fluent architecture systems using domain-driven design principles. It introduces reactive and event-driven patterns into the domain layer. Jdon uses an asynchronous and non-blocking approach to allow for higher throughput applications compared to traditional request-response frameworks like Spring. Key aspects of Jdon include domain events that enable loose coupling between components, and a single-writer model that guarantees single operations on in-memory state.
A Separation of Concerns: Clean Architecture on AndroidOutware Mobile
Presented at YOW! Connected 2015 by Kamal Kamal Mohamed & Ryan Hodgman
As an Android developer, I want to deliver features without making compromises on code quality.
Scenario 1 - Given I am dealing with 1000+ line activities, When I have to develop a complicated feature, Then I waste time orienting myself and fixing bugs.
Scenario 2 - Given I have integrated a backend API directly into my app logic, When that API changes, Then I have to refactor large segments of unrelated logic in order to utilise the new API.
Scenario 3 - Given I have cleanly architected my application, When business/presentation/backend logic changes, Then I can easily update the relevant code without breaking unrelated features!
In this talk, two Android developers will present their take on what a cleanly architected app looks like and why it makes our lives easier. A well-defined separation of concerns has benefits not just for our sanity as developers, but also for the project workflow as it allows multiple developers to collaborate on a single feature with ease. We will be exploring how the domain-driven approach can improve code clarity, allow you to easily write tests, and provide a scalable infrastructure for you to quickly iterate on. Join us on our path of discovery as we discuss the advantages, drawbacks and implementation specifics in the context of a small sample project.
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...Chris Richardson
Modern, cloud-native applications typically use a microservices architecture in conjunction with NoSQL and/or sharded relational databases. However, in order to successfully use this approach you need to solve some distributed data management problems including how to maintain consistency between multiple databases without using 2PC.
In this talk you will learn more about these issues and how to solve them by using an event-driven architecture. We will describe how event sourcing and Command Query Responsibility Segregation (CQRS) are a great way to realize an event-driven architecture. You will learn about a simple yet powerful approach for building, modern, scalable applications.
NestJS (https://nestjs.com/) is a Node.js framework for building server-side applications. This slide give you a brief introduction of Nest, and shows the examples like Service, Middleware, and Pipe, etc.
A Separation of Concerns: Clean Architecture on AndroidOutware Mobile
Presented at YOW! Connected 2015 by Kamal Kamal Mohamed & Ryan Hodgman
As an Android developer, I want to deliver features without making compromises on code quality.
Scenario 1 - Given I am dealing with 1000+ line activities, When I have to develop a complicated feature, Then I waste time orienting myself and fixing bugs.
Scenario 2 - Given I have integrated a backend API directly into my app logic, When that API changes, Then I have to refactor large segments of unrelated logic in order to utilise the new API.
Scenario 3 - Given I have cleanly architected my application, When business/presentation/backend logic changes, Then I can easily update the relevant code without breaking unrelated features!
In this talk, two Android developers will present their take on what a cleanly architected app looks like and why it makes our lives easier. A well-defined separation of concerns has benefits not just for our sanity as developers, but also for the project workflow as it allows multiple developers to collaborate on a single feature with ease. We will be exploring how the domain-driven approach can improve code clarity, allow you to easily write tests, and provide a scalable infrastructure for you to quickly iterate on. Join us on our path of discovery as we discuss the advantages, drawbacks and implementation specifics in the context of a small sample project.
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...Chris Richardson
Modern, cloud-native applications typically use a microservices architecture in conjunction with NoSQL and/or sharded relational databases. However, in order to successfully use this approach you need to solve some distributed data management problems including how to maintain consistency between multiple databases without using 2PC.
In this talk you will learn more about these issues and how to solve them by using an event-driven architecture. We will describe how event sourcing and Command Query Responsibility Segregation (CQRS) are a great way to realize an event-driven architecture. You will learn about a simple yet powerful approach for building, modern, scalable applications.
NestJS (https://nestjs.com/) is a Node.js framework for building server-side applications. This slide give you a brief introduction of Nest, and shows the examples like Service, Middleware, and Pipe, etc.
Microservice With Spring Boot and Spring CloudEberhard Wolff
Spring Boot and Spring Cloud are an ideal foundation for creating Microservices based on Java. This presentation explains basic concepts of these libraries.
Building Cloud-Native App Series - Part 2 of 11
Microservices Architecture Series
Event Sourcing & CQRS,
Kafka, Rabbit MQ
Case Studies (E-Commerce App, Movie Streaming, Ticket Booking, Restaurant, Hospital Management)
Tutorial Videos: https://www.youtube.com/playlist?list=PLD8nQCAhR3tQ7KXnvIk_v_SLK-Fb2y_k_
Day 1 : Introduction to React, Babel and Webpack
Prerequisites of starting the workshop ( Basic understanding of Node & Express )
What is Virtual DOM?
What is React and why should we use it?
Install and set up React:
a-Using create-react-app
b-From scratch using Babel and Webpack. We will use Webpack Dev Server.
Day 2 : React Basic Concepts
Types of Components: Class-based and Functional based Components
Use of JSX
Parent, Child, and Nested Components
Difference between State and Props
Create and Handle Routes
Component Lifecycle Methods
Create a form and handling form inputs
Use of arrow functions and Spread Operator
Day 3: Advanced Concepts in React
Use of Refs
What are Higher Order Components( HOC )?
How to use HOC
Understanding Context in React
Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)Brian Brazil
Prometheus is a next-generation monitoring system. Since being publicly announced last year it has seen wide-spread interest and adoption. This talk will look at the concepts behind monitoring with Prometheus, and how to use it with Kubernetes which has direct support for Prometheus.
The introduction covers the following
1. What are Microservices and why should be use this paradigm?
2. 12 factor apps and how Microservices make it easier to create them
3. Characteristics of Microservices
Note: Please download the slides to view animations.
This beginning terraform workshop will teach you how to safely create and provision Infrastructure as Code (IAC) using Hashicorp Terraform in an AWS environment. In this class you will learn how to setup and install terraform. You will also be given a walkthrough of Terraform fundamentals. You will be lead through the process of deploying a single server, deploying a cluster and setting up a load balancer. You will also learn how to author Terraform Modules, work with Route53 and how to manage DNS.
Requirements. You will need to have an AWS account set up already with Terraform v0.9.3 installed. You will also need to have git install to download the workshop material.
You can find more informaiton on how to install terraform here: https://www.terraform.io/intro/getting-started/install.html. You can sign up for an AWS account here: https://aws.amazon.com/account/
https://github.com/jasonvance/terraform-introduction
( ReactJS Training - https://www.edureka.co/reactjs-redux-... )
This Edureka video on React Interview Questions and Answers will help you to prepare yourself for React Interviews. Learn about the most important React interview questions and answers and know what will set you apart in the interview process.
This video helps you to learn following topics:
1. General React
2. React Components
3. React Redux
4. React Router
Micro Frontends: Rompiendo el monolito en las aplicaciones WebBelatrix Software
Los microservicios son el estilo arquitectural de moda, pues nacieron para facilitar el mantenimiento y crecimiento de grandes aplicaciones monolíticas en el backend. Ahora nos hemos dado cuenta de que es posible aplicar algunos de sus principios a frontend, con resultados muy interesantes.
A continuación, te presentamos algunos de los temas específicos que se exponen:
¿Cómo nacen los microservicios?
¿Por qué nos olvidamos de dividir el frontend? ¿Qué es y cómo nace el concepto de Micro Frontends?
Técnicas para implementar Micro Frontends.
Mi experiencia con Micro Frontends.
Conclusiones y recomendaciones.
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Yevgeniy Brikman
This is a talk about managing your software and infrastructure-as-code that walks through a real-world example of deploying microservices on AWS using Docker, Terraform, and ECS.
Explain Domain-Driven Design, its main concepts and tools, and the Event Storming practice to highlight the importance of a good design and empower a team to start using it progressively.
CQRS and Event Sourcing for Java DevelopersMarkus Eisele
As presented at CJUG. Recording will be up here: http://www.meetup.com/ChicagoJUG/events/231837105/
As soon as an application becomes even moderately complex, CQRS and an Event Sourced architecture start making a lot of sense. The talk is focused on: - the challenges and tactics of separating the write model from the query model in a complex domain - how commands naturally lead to events and to an event based system, and - how events get projected into useful, eventually consistent views. Event Sourcing is one of those things that you really need to push through at the beginning (much like TDD) and that - once understood and internalized, will change the way you architect a system. This talk introduces you to the basic concepts and problem spaces to solve.
Microservice With Spring Boot and Spring CloudEberhard Wolff
Spring Boot and Spring Cloud are an ideal foundation for creating Microservices based on Java. This presentation explains basic concepts of these libraries.
Building Cloud-Native App Series - Part 2 of 11
Microservices Architecture Series
Event Sourcing & CQRS,
Kafka, Rabbit MQ
Case Studies (E-Commerce App, Movie Streaming, Ticket Booking, Restaurant, Hospital Management)
Tutorial Videos: https://www.youtube.com/playlist?list=PLD8nQCAhR3tQ7KXnvIk_v_SLK-Fb2y_k_
Day 1 : Introduction to React, Babel and Webpack
Prerequisites of starting the workshop ( Basic understanding of Node & Express )
What is Virtual DOM?
What is React and why should we use it?
Install and set up React:
a-Using create-react-app
b-From scratch using Babel and Webpack. We will use Webpack Dev Server.
Day 2 : React Basic Concepts
Types of Components: Class-based and Functional based Components
Use of JSX
Parent, Child, and Nested Components
Difference between State and Props
Create and Handle Routes
Component Lifecycle Methods
Create a form and handling form inputs
Use of arrow functions and Spread Operator
Day 3: Advanced Concepts in React
Use of Refs
What are Higher Order Components( HOC )?
How to use HOC
Understanding Context in React
Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)Brian Brazil
Prometheus is a next-generation monitoring system. Since being publicly announced last year it has seen wide-spread interest and adoption. This talk will look at the concepts behind monitoring with Prometheus, and how to use it with Kubernetes which has direct support for Prometheus.
The introduction covers the following
1. What are Microservices and why should be use this paradigm?
2. 12 factor apps and how Microservices make it easier to create them
3. Characteristics of Microservices
Note: Please download the slides to view animations.
This beginning terraform workshop will teach you how to safely create and provision Infrastructure as Code (IAC) using Hashicorp Terraform in an AWS environment. In this class you will learn how to setup and install terraform. You will also be given a walkthrough of Terraform fundamentals. You will be lead through the process of deploying a single server, deploying a cluster and setting up a load balancer. You will also learn how to author Terraform Modules, work with Route53 and how to manage DNS.
Requirements. You will need to have an AWS account set up already with Terraform v0.9.3 installed. You will also need to have git install to download the workshop material.
You can find more informaiton on how to install terraform here: https://www.terraform.io/intro/getting-started/install.html. You can sign up for an AWS account here: https://aws.amazon.com/account/
https://github.com/jasonvance/terraform-introduction
( ReactJS Training - https://www.edureka.co/reactjs-redux-... )
This Edureka video on React Interview Questions and Answers will help you to prepare yourself for React Interviews. Learn about the most important React interview questions and answers and know what will set you apart in the interview process.
This video helps you to learn following topics:
1. General React
2. React Components
3. React Redux
4. React Router
Micro Frontends: Rompiendo el monolito en las aplicaciones WebBelatrix Software
Los microservicios son el estilo arquitectural de moda, pues nacieron para facilitar el mantenimiento y crecimiento de grandes aplicaciones monolíticas en el backend. Ahora nos hemos dado cuenta de que es posible aplicar algunos de sus principios a frontend, con resultados muy interesantes.
A continuación, te presentamos algunos de los temas específicos que se exponen:
¿Cómo nacen los microservicios?
¿Por qué nos olvidamos de dividir el frontend? ¿Qué es y cómo nace el concepto de Micro Frontends?
Técnicas para implementar Micro Frontends.
Mi experiencia con Micro Frontends.
Conclusiones y recomendaciones.
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Yevgeniy Brikman
This is a talk about managing your software and infrastructure-as-code that walks through a real-world example of deploying microservices on AWS using Docker, Terraform, and ECS.
Explain Domain-Driven Design, its main concepts and tools, and the Event Storming practice to highlight the importance of a good design and empower a team to start using it progressively.
CQRS and Event Sourcing for Java DevelopersMarkus Eisele
As presented at CJUG. Recording will be up here: http://www.meetup.com/ChicagoJUG/events/231837105/
As soon as an application becomes even moderately complex, CQRS and an Event Sourced architecture start making a lot of sense. The talk is focused on: - the challenges and tactics of separating the write model from the query model in a complex domain - how commands naturally lead to events and to an event based system, and - how events get projected into useful, eventually consistent views. Event Sourcing is one of those things that you really need to push through at the beginning (much like TDD) and that - once understood and internalized, will change the way you architect a system. This talk introduces you to the basic concepts and problem spaces to solve.
Building and deploying microservices with event sourcing, CQRS and Docker (QC...Chris Richardson
In this talk we share our experiences developing and deploying a microservices-based application. You will learn about the distributed data management challenges that arise in a microservices architecture. We will describe how we solved them using event sourcing to reliably publish events that drive eventually consistent workflows and pdate CQRS-based views. You will also learn how we build and deploy the application using a Jenkins-based deployment pipeline that creates Docker images that run on Amazon EC2.
codecentric AG: CQRS and Event Sourcing Applications with CassandraDataStax Academy
CQRS (Command Query Responsibility Segregation) is a pattern, which separates the process of querying and updating data. As a query only returns data without any side effects, a command is designed to change data. CQRS is often combined with Event Sourcing. This is an architecture in which all changes to an application state are stored as a sequence of events.
Because of its great capability to store time series data Cassandra is the perfect fit for implementing the event store. But there a still a lot of open questions: What about the data modeling? What techniques will be used to process and store data in the Cassandra database? How to access the current state of the application, without replaying every event? And what about failure handling?
In this talk, I will give a brief introduction to CQRS and the Event Sourcing pattern and will then answer the questions above using a real life example of a data store for customer data.
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...Lightbend
Is the Actor Model just a new "shiny object" for developers to chase after, a fad soon to be abandoned? In fact, the Actor Model was first designed in 1973–over 20 years before brands like Yahoo! and Hotmail first arrived at the burgeoning internet. Created to address the long-term direction of computing and software development, it is almost as old as the formal definition of object-oriented programming.
Fast forward to 2017, where we are faced with an online and mobile world that continues to grow exponentially, and a third wave of IoT aims to add hundreds of billions of connected devices to our lives.
To manage today’s demanding needs and to prepare for the coming wave, enterprises like Intel, Samsung, Walmart, PayPal, Hootsuite, and Norwegian Cruise Lines are embracing distributed, Reactive systems deployed on hybrid cloud infrastructures. Central to these systems and applications is the Actor Model, which is seeing “renewed interest as cloud concurrency challenges grow,” according to Forrester Research.
In this webinar, special guest Vaughn Vernon explains why actors are so vital to the future of software development. You will learn:
- Why actors are so exceptionally well-suited for use with Domain-Driven Design, speaking the Ubiquitous Language of your core business domain.
- How actors are designed to gracefully handle failure, maintaining system resilience and responsiveness to users no matter what’s happening.
- How actors help you reactively scale your systems meet concurrency demands, elastically growing up and out to handle peak load, and shrinking when not minimizing your infrastructure and hardware footprint.
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...Chris Richardson
This is the talk that the Kenny Bastani and I gave at JavaOne 2016.
When you’re building JVM applications in a microservice architecture, managing state becomes a distributed systems problem. Instead of being able to manage state as transactions inside the boundaries of a single monolithic application, a microservice must be able to manage consistency by using transactions that are distributed across a network of many different applications and databases. This session explores the problems of data consistency and high availability in JVM-based microservices and how to use event sourcing to solve these problems.
Ontopic's presentation on Storm-Crawler for ApacheCon North America 2015.
Storm-Crawler is a next-generation web crawler that discovers and processes content on the Web, in real-time with low latency. This open source (and Apache Licensed) project is built on the Apache Storm framework, which provides a great foundation for a distributed real-time web crawler.
A Prototype of Brain Network Simulator for Spatiotemporal Dynamics of Alzheim...Jimmy Lu
Speaker: Jimmy Lu
Topics: A Prototype of Brain Network Simulator for Spatiotemporal Dynamics of Alzheimer’s Disease
Date: 2011.05.31
Defense of WECO Lab at CSIE, FJU
Tracing the galactic_spiral_structure_with_embedded_clustersSérgio Sacani
Artigo descreve pesquisa de brasileiros, liderados por Denilso Camargo no estudo de aglomerados estelares que estão se tornando uma nova técnica para ajudar a mapear a estrutura da Via Láctea. Algo muito complicado de ser feito, já que nós moramos dentro de um dos braços da nossa galáxia.
Introduction to Storm Crawler [ https://github.com/DigitalPebble/storm-crawler], a collection of resources for building low-latency, large scale web crawlers on Storm available under Apache License.
Fast Feather talk given at ApacheCon EU 2014 Budapest
Decomposing the Monolith using modern-day .NET and a touch of microservicesDennis Doomen
If I have to name a single biggest hype in software architecture land then it would be "microservice". They are supposed to be small and focused, can be deployed independently, can work with any technology and will solve all your monolithical problems. But we all know that silver bullets don't exist, plus technology should never be a goal, but merely a means to an end. Nonetheless, following the path towards real microservices is a great strategy for decomposing a monolith without the deployment complexity of the first. So how do you do that? What technologies does the .NET realm offer for us? In this talk, I'll show you some of the pros and cons of micro-services and its ingredients to leverage modern-day .NET and Event Sourcing to move your monolith into a bright new future.
Brian and John introduce several concepts, including JavaScript Modules and Inversion of Control, and demonstrate how they alleviate many of the dominant problems encountered when building large JavaScript apps. This talk shows new architectural patterns and tangible examples of how these patterns improve testability, refactorability, composability, division of work, and team scalability.
Writing NodeJS applications is an easy task for JavaScript developers. However, getting what is happening under the hood in NodeJS may be intimidating, but understanding it is vital for web developers.
Indeed, when you try to learn NodeJS, most tutorials are about the NodeJS ecosystem like Express, Socket.IO, PassportJS. It is really rare to see some tutorials about the NodeJS runtime itself.
By this meetup, I want to spot the light on some advanced NodeJS topics so as to help developers answering questions an experienced NodeJS developer is expected to answer. Understanding these topics is essential to make you a much more desirable developer. I want to explore several topics including the famous event-loop along with NodeJS Module Patterns and how dependencies actually work in NodeJS.
I hope that this meetup would help you to be more comfortable understanding advanced code written in NodeJS.
Node.js and microservices go hand in hand. This comes mainly from the design of Node.js. It is a specialised small platform with an enormous package environment. The NPM ecosystem provides a lot of packages you can use to build your microservice. The two most popular frameworks for this job are Express and Seneca. In this talk I will show you how you can communicate synchronously and asynchronously with your microservices and how easy it is to put your Node.js application into a docker container.
Presentation from RedDotRubyConf 2011 in Singapore. It explains multi-tenancy and why it is increasingly required for Rails development. Four of the many approaches are covered in some detail (including what resources we have available for re-use) and I end with a naive question (& call to action?) .. "Isn't it about time there was a 'Rails Way'?"
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/
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.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
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.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
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.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
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
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
5. What is Jdon?
Jdon help you build a Clean and Fluent
architecture system.
Jdon is a domain framework that let your business
to be independent with Database or UI.
Jdon is a domain container to run your business in
non-blocking way.
7. Jdon Framework (JF)
a light-weight framework for developing Domain-
Driven Design applications.
Jdon introduces reactive event-driven into domain.
Help you develop a asynchronous concurrency
and higher throughput application
8. Jdon vs Spring
Jdon is very difference with Spring
framework.
Jdon is a default event-driven and
asynchronous framework.
Jdon/Event- asynchronous vs.
Spring/Request-Response
9. Jdon’s Revolution
Single Writer component model :DDD’s
AggregateRoot guards mutable state. And
Jdon guarantees single operation on in-
memory state by using Disruptor.
Increases domain mode the level of
abstraction. Communication betwwen
Business Domain and others(UI/DB) is
Event/Message.
10. Jdon’s Revolution
Two persistence choices between State and
Event: SOA CQRS or EventSourcing.
Make your applications high throughput and
lower latency.
Scalable.
11. In-memory Programming Paradigm
Jdon changes traditional programming
paradigm (Spring + Hibernate/JPA etc.)
Make ORM be dead ,domain model is not
bind to any ORM framework.
Make Data collection or Anemia model be
dead.
12. Lock vs Singel writer
There are plenty of idioms to synchronize
multi-threaded access to a resource
lock is sloooow, especially with a high
number of writer threads.
In-memory Singel writer is Actors model
(Akka/Erlang etc.)
13. Blocking
public class AggregateRoot{
private ChannelState state;
//tradional lock
public void synchronized changeChannel(changeCommand cmd){
state = cmd.getState();
}
}
14. Jdon NonBlocking
public class AggregateRoot{
private ChannelState state;
//single write
@OnCommand("UserSaveCommand")
public void changeChannel(changeCommand cmd){
state = cmd.getState();
}
}
15. Jdon basic component Annotations
@Model : Aggregate Root Entity Model
@Service : Micro service or DDD service
@Component: Normal components.
17. 1. Create a domain model
A domain model is the aggregate root enity in DDD.
DDD can help us find some domain models in business
requirement
Example:
public class MyModel {
private String Id;
private String name;
....
}
18. Using @Model
make sure the domain object in-memory cache:
@Model
public class MyModel {
private String userId;
private String name;
....
}
@Model is a jdon’s annotation for domain model.
19. Loading Model from Repository
@Introduce(“modelCache”) must be annotated in repository class
@Around must be annotated on the loading method.
GitHub Source code
20. 2. Create a domain event
Domain event is emitted from a domain
model, generally is a aggregate root entity,
Jdon can help you develope domain event
easily.
Jdon provides asynchronous
communication component model.
Producer-Consumer or Publisher-
Subscriber pattern.
25. Single Writer Principle
Domain Model
Aggregate root
@Model
Disruptor
Queue
Command Single thread
Producer
@Component
@Service
26. Communications principle
Powered by disruptor from LMAX
Can handle 6 million orders per second on a
single thread
recommended by Martin Fowler.
27. What is Domain Events
Events that happened in the domain.
captures the essence of business domains while staying
decoupled from platform complexity or hard performance
issues.
No Block concurrent, No Lock ,so fast. fit for multi-core.
Storage Ignorance ,Flexibility, Messaging Capabilities,
Scalable.
28. One Command =>Many Events
Domain Model
@Model
Other Components
@Componet
Logging
@Consumer
GUI
MVC
Client
Persistence
@Consumer
async
Message
async
Message
async
Message
Component architecture
Command
29. One Command=>one Domain Event
Domain Model
Aggregate root
@Model
Command
Producer
@Component
Consumer
@Consumer
@Component
Domain Events
Domain Model
Aggregate root
@Model
Command
30. Domain Events is basic for CQRS
User interface
Service
Domain
Event/Message BUSInfrastructure
Query/
Reporting
Commands
Commands
Events
31. How Domain Events work?
Domain Model
Aggregate root
@Model
Consumer
@Consumer
@Component
Disruptor
Or
Java
concurrent
Future
Domain Events
34. Producer
@Model or @Service/@Component can be
a Producer.
When a Component/Service sends
messages to a Domain Model(aggregate
root), that is a command,
When a domain model sends message to a
Component, that is a event
35. Consumer
@Model cann’t be a Consumer
Only @Component can be a Consumer.
Two kinds of consumers:
@Consumer is for a class.
@OnEvent is for method of any @Component
If there are several consumers, action’s order is by
the alphabetical of class name:AEventHandler =>
BEventHandler => CEvent…
36. Consumer return a result
If you want to return a result in consumer,
you can set the result object into the
DomainMessage of the event in
DomainEventHandler :
void onEvent(EventDisruptor event, boolean endOfBatch) throws Exception
{
//return the result “eventMessage=hello”
event.getDomainMessage().setEventResult("eventMessage=" +
myModel.getId());
}
37. How to get the result?
If a consumer return a result, that is a
asynchronous.
event.getDomainMessage(). getEventResult()
First times, maybe you can’t fetch it.
Second times You can get it.
You can call block method to fetch it a blocking
way, this is :
event.getDomainMessage(). getBlockEventResult()
38. The benefits of @Consumer
Atomic;
separates a transaction into single event
process, that is event stream.
Asynchronous
saving datas to DB or Lucene is high
load, we can implement them with two
EventHandlers by different latency.
39. Domain Events(DE) apply in JEE
Root Entity
VO
Entity
Service
Root Entity
boundary
boundary
Tech.
Architecture
Domain Events
Domain Events
40. Domain Events Pattern
Loose Coupling
business logic is separate from technology architecture. decouple
"What" From "How"
Event-driven Architecture
asynchronous event-driven architectures
Asynchronous Lazy-load
like lazy evaluation of functional language .
True Scalability
Scale out on multi-core or multiple nodes using asynchronous message
passing ( JMS).
41. Example 1: Concurrency pattern
No domain events codes : CPU killer:
public int getMessageCount(){
int messageCount = xxxx; // complex computing, high CPU usage, CPU killer
return messageCount;
}
Domain events can pre-load or pre-run the complex computing:
public int getMessageCount(DomainEvents domainEvents) {
if (messageCount == -1) {
if (messageCountAsyncResult == null) {
messageCountAsyncResult =
domainEvents.computeCount(account.getUserIdLong());
} else {
messageCount = (Integer)
messageCountAsyncResult.getEventResult();
}
}
return messageCount;
}
42. Example 2
Asynchronous Lazy load
1. invoking ‘getMessageCount’ will
send a message to
‘computeCount’ of Repository
by domainEvents.
2. again invoking
‘getMessageCount’ will return
last step result.(such as by
AJAX )
Download Sample Source
43. Lazy initialization/Lazy evaluation
On demand load or init a object from DB.
functions are not evaluated until their results
are needed
no Hibernate LazyInitializationExceptions
no Open Session in View anti-pattern
44. Scale to distributed system
Domain
Model
JMS
MQ
ZeroQ
RabbitMQ
Persistence
Send Email
Other Services
Message
Domain
Model
Message
Distributed Cache
Distributed Cache
45. Events Challenge
Most programmers are good at a synchronous
mode that be executed sequentially in a thread.
Events is a non-blocking concurrent programming
mode, that maybe is harder to most people.
if domain business need be executed
sequentially , so we can do it by domain events
too.
46. Blocking problem
In a blocking system, wait thread is idle but
continue to consume system resources.
This will very costs resource, for high transaction
volume:
the number of idle threads =(arrival_rate * processing_time)
the result can be a very big number if the
arrival_rate is high.
Blocking system is running under a very ineffective
mode. No high throughout, no high CPU load.
47. Non-Blocking concurrent
Make a call which returns a result. don't need to
use the result until at a much later stage of your
process.
don't need to wait immediately after making the
call, instead you can proceed to do other things
until you reach the point where you need to use
the result.
the call itself will return a "future" handle
immediately. The caller can go off doing other
things and later poll the "future" handle to see if
the response if ready.
48. JdonFramework
Non-Blocking concurrent
Domain Model sends events to another
thread(a consumer) by RingBuffer in
Disruptor, so threads can communicates
through events.
After consumer done, it will put the result in
another RingBuffer that publisher can read
or blocking read it, decided by business is
or not executed sequentially.
49. Higher abstract of concurrent
Non-Blocking’s concurrent programming is complex.
How to develop a concurrent app. easily?
Like Actor Model
is like domain events, messages are sent asynchronously and non-
blocking in a “fire-and-forget” manner. But LMAX team of the Disruptor
thinks Actor model has bottleneck.
DCI Architecture
DCI is easy to be understood. It’s abstract level is high than
domain events.
50. DCI
DCI: Data, Context, Interactions is a
programming paradigm invented by Trygve
Reenskaug.
keep our core model classes very thin.
logic/behaviour should be kept in roles.
Domain Events is a Interactions, Events
Producer is the Role.
51. Model Injection
JdonFramework can inject Domain Events
into domain model at runtime, this is maybe
like Mixin.
Domain Events is Interactions of Roles, so
Roles are then assigned(Injected) to data
objects at runtime, only when required
within given Context.
52. DCI : Data
Domain Model is the DATA of DCI, no logic
no behaviour.
Source: com.jdon.sample.test.domain.simplecase.MyModel
53. DCI : Role and Interactions
This is a Role of DCI , it includes the
interactions of DCI. It is event producer
Source:com.jdon.sample.test.domain.simplecase.MyModelDomainEvent
54. DCI : Context
In Context,The Role will be injected
into the data.
//after fetching the myModel object, it has been injected
events
MyModel myModel = repository.getModel(new Long(100));
// call myModel’s events
myModel .myModelDomainEvent.asyncFindName(this);
55. com.jdon.domain.dci.RoleAssigner
com.jdon.domain.dci.RoleAssigner is a Role
assigner that can inject(Mixin) any interface
into a data model.
When using RoleAssigner, it is not
necessary that fetch a object of data model
by a repository annotated with
@Introduce("modelCache") and its get
method with @Around
56. Different DCI styles
If we already hold on a model object, we
can implements various functions by its
domain events,such as modify/update a
model.
Otherwise:
We create a context, and there we inject
events or functions into a new model object
by RoleAssigner,such as create or delete a
model.
58. concurrent programming is easy
Jdonframework makes an exploratory to
promote non-blocking concurrent
programming paradigm .
DCI and Domain Events are different abstract
levels based concurrent programming .
DCI and UML colors analysis method
can successfully docking, it is the highest level of
abstraction of business-oriented.
Help most programmers quietly going to the way
of non-blocking concurrent programming when
they thinking in DDD.
59. DI and AOP
Dependency Injection(DI or IOC)
@Service or @Component can inject with each other by class
construction(not supports setter injection).
@Service or @Component can be inected into @Model or by domain
events.
Aspect-oriented programming(AOP)
with annotation @Introduce:
@Service or @Component can introduce each others as its
interceptor. @Model can introduce any POJO or @Component as its
interceptor.
60. @Model mechanism
Client
xx.getA(“a”)
A
@Model
Interceptor for A
with @Introduce
B that need
implements interface
and has @Introduce
Inject proxy of B
Interceptor for B
with @Introduce
Cache In-memeory
C
Inject proxy of c
Component
In Context
Container
interceptor
62. Living space
@Model lives in cache that default is Guava
Cache.
@Component/@Service lives in a context
such as servletcontext.
All @Component can be injected into
@Model.
64. @Service/@Component
@Service("testService")
public class TestServicePOJOImp implements TestService{
private final UserRepository userRepository;
public TestServicePOJOImp(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
@Component()
public class UserRepository {
….
}
Difference between @Service and @Component is that the @Service class
must have a interface then can be called by outside client beyond jdon.
65. @Service
@Service expose to the client, has several kind instances: singleton ,
prototype or pool that have them annotations, default is
prototype(spring default is singleton ) 。
67. In-Memory Model
When a domain model object with @Model is fetch
from repository, we need use
@Introduce(“modelCache”) to mak the object live
in memory.
There are two cache interceptors existed before
and after domain layer.
Domain events need annotation
@Introduce(“modelCache”) in the place that
domain model objects are created or
reconstructed from persistence or other systems.
69. in memeory model
@Introduce(“modelCache”) must be annotated in
the reposotory that @Model objects are created or
reconstructed This step is very important for domain events
working
70. What happeded in memeory?
First times invoke “getModel” method of
RepositoryImp, jdon will do two things:
One: put the return value(model) in cache.
So next times can get it from cache.
Two: inject domain events into this model.
Next times, invoke the method again, we will
get the model only one instance from cache.
71. Start jdonFramework in WEB
If all is annotation, no jdonframework.xml,
no need this step
Configuration in Web.xml:
<context-param>
<param-name> modelmapping-config </param-name>
<param-value> jdonframework.xml </param-value>
</context-param>
<listener>
<listener-
class>com.jdon.container.startup.ServletContainerListener</listener-class>
</listener>
72. How to use in application
AppUtil appUtil = new AppUtil();
// xxx is value of @Service(“xxx”) annotation on class.
XXXService xxxService = appUtil.getService(“xxx”);
xxxService.method();
If there is jdonframework.xml:
AppUtil appUtil = new AppUtil("com.jdon.jdonframework.xml");
73. Other features
in JdonAccessory
Rapid development, template toolkit. JDBC
template
Eliminate “Controller/Action” ,No controller
code of MVC (only supports Struts 1.x)
Batch Query, auto pagination 。
76. Batch Query in jdon-jdbcTemp.jar
Cache supports.
Auto pagination.
In presentation layer:
extends com.jdon.strutsutil.ModelListAction
in persistence layer:
call getDatas of
com.jdon.controller.model.PageIterator