Caching is relevant for a wide range of business applications and there is a huge variety of products in the market ranging from easy to adopt local heap based caches to powerful distributed data grids. This talk addresses advanced usage of Spring’s caching abstraction such as integrating a cache provider that is not integrated by the default Spring Package. In addition to that I will also give an overview of the JCache Specification and it’s adoption in the Spring ecosystem. Finally the presentation will also address various best practices for integrating various caching solutions into enterprise grade applications that don’t have the luxury of having „eventual consistency“ as a non-functional requirement.
Managing an OSGi Framework with Apache Felix Web ConsoleFelix Meschberger
Initially created to aid in the simple maintenance of the OSGi framework and the application during the early development of Apache Sling, the Web Console soon attracted interest from the OSGi community. Three years later, the Apache Felix Web Console 3.0 has just been released and provides an extensible console for Web based management of an OSGi framework. This talk will introduce the functionality of the core Web Console as well as some of its existing plugins and the extension points of the Web Console where developers might want to hook up to. To round it up a simple Web Console plugin will be developed and deployed.
Managing an OSGi Framework with Apache Felix Web ConsoleFelix Meschberger
Initially created to aid in the simple maintenance of the OSGi framework and the application during the early development of Apache Sling, the Web Console soon attracted interest from the OSGi community. Three years later, the Apache Felix Web Console 3.0 has just been released and provides an extensible console for Web based management of an OSGi framework. This talk will introduce the functionality of the core Web Console as well as some of its existing plugins and the extension points of the Web Console where developers might want to hook up to. To round it up a simple Web Console plugin will be developed and deployed.
Slides for my talk event-sourced architectures with Akka. Discusses Akka Persistence as mechanism to do event-sourcing. Presented at Javaone 2014 and Jfokus 2015.
Transactions and Concurrency Control PatternsJ On The Beach
Transactions and Concurrency Control Patterns by Vlad Mihalcea
Transactions and Concurrency Control are very of paramount importance when it comes to enterprise systems data integrity. However, this topic is very tough since you have to understand the inner workings of the database system, its concurrency control design choices (e.g. 2PL, MVCC), transaction isolation levels and locking schemes.
In this presentation, I’m going to explain what data anomalies can happen depending on the transaction isolation level, with references to Oracle, SQL Server, PostgreSQL, and MySQL.
I will also demonstrate that database transactions are not enough, especially for multi-request web flows. For this reason, I’m going to present multiple application-level transaction patterns based on both optimistic and pessimistic locking mechanisms.
Last, I’m going to talk about Concurrency Control strategies used in the Hibernate second-level caching mechanism, which can boost performance without compromising strong consistency.
Nowadays traditional layered monolithic architecture in Java world is not so popular as 5-10 years ago. I remember how we wrote tons of code for each layer repeating almost the same parts for every application. Add unit and integration testing to understand how much time and efforts has been spent on repeatable work. All cool ideas around DDD (domain driven design) and Hexagonal Architecture was just a nice theory because reality hasn’t allow us to implement it easily. Even Dependency Injection with Spring framework was completely focused on traditional layered approach, not even talking about JavaEE platform.
Today we have Spring Boot ecosystem covering most of our needs for integration with almost all possible technologies and microservices architectural trend, enabling completely new approach to build Java applications around domain model. It is so natural to build Java domain-oriented services and connect them with external world using ports and adapters, that Hexagonal Architecture is almost enabled by default. You just need to switch your way of thinking…
Java EE 8 Overview (Sept 2015). A lot of work is already done by the Expert Groups so lets have a brief look for what we can expect in the some areas.
- Servlet 4 will embrace the new HTTP/2 protocol.
- JSON-B will bring the same high level features of JAXB to the JSON data format.
- Server-Sent Events(SSE) is the WebSocket variant where you only send data from the server to the client.
- MVC will be the Action based MVC complement of the Component based MVC of JSF.
- Some major restructuring of CDI so that we can use it standardised in Java SE to mention one thing.
The Java EE security API will be covered in more detail. Security related things became old and dusty and needs to move away from proprietary configuration to be able to make the transition to the cloud. An introduction to JSR 375 is given, which promotes self-contained application portability across Java EE servers, and promotes the use of modern programming concepts such as Expression Language, and CDI. It will holistically attempt to simplify, standardize, and modernize the Security API across the platform in areas identified by the community.
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.
One of the main advantages of PHP is that it allows you and your company to build up projects in no time and with immediate feedback and business value. Sometimes, however, fast growth and unprevented complexities could make your codebase more and more difficult to manage as time passes and new features are added.Domain Driven Design can be an elegant solution to the problem, but introducing it in mid-large sized projects is not always easy: you have to deal with difficulties at technical, team and knowledge levels. This talk focuses on how to approach the change in your codebase and in your team mindset without breaking legacy code or stopping the development in favor of neverending refactoring sessions.
SpringOne Platform 2017
Ryan Baxter, Pivotal
You have heard and seen great things about Spring Cloud and you decide it is time to dive in and try it out yourself. You fire up your browser head to Google and land on the Spring Cloud homepage. Then it hits you, where do you begin? What do each of these projects do? Do you need to use all of them or can you be selective? The number of projects under the Spring Cloud umbrella has grown immensely over the past couple of years and if you are a newcomer to the Spring Cloud ecosystem it can be quite daunting to sift through the projects to find what you need. By the end of this talk you will leave with a solid understanding of the Spring Cloud projects, how to use them to build cloud native apps, and the confidence to get started!
This slides deck about Microservices architecture and why do we need it. Architecture patterns which we need to follow doing Microservices architecture: Microservice, API Gateway, Service Discovery, Stateless/Shared-Nothing, Configuration/Service Consumption, Fault Tolerance (Circuit Breaker), Request Collapsing. And a bit about API Versioning
Name : Prasoon Dadhich
USN : 1MS09IS069
CODE
#include <iostream>
using namespace std;
class Singleton
{
private:
static bool instanceFlag;
static Singleton *single;
Singleton()
{
//private constructor
}
public:
static Singleton* getInstance();
void method();
~Singleton()
{
instanceFlag = false;
}
};
bool Singleton::instanceFlag = false;
Singleton* Singleton::single = NULL;
Singleton* Singleton::getInstance()
{
if(! instanceFlag)
{
single = new Singleton();
instanceFlag = true;
return single;
}
else
{
return single;
}
}
void Singleton::method()
{
cout << "Method of the singleton class" << endl;
}
int main()
{
Singleton *sc1,*sc2;
sc1 = Singleton::getInstance();
sc1->method();
sc2 = Singleton::getInstance();
sc2->method();
return 0;
}
Explanation
If we create any object of this class then the static object (player) will be returned and assigned to the new object.
Finally only one object will be there. The point is not how many times something gets executed, the point is, that the work is done by a single instance of the the class. This is ensured by the class method Singleton::getInstance().
As you can see in the above code,Client can access any instance of the singleton only through the getInstance() method.Once an instance is created,the instanceFlag value becomes true and then any further objects pointers created will be given the reference to the same object that has been created.
Also,make sure you notice the presence of a private constructor.This ensures that no new objects of the class are created and that all the class pointers get the same reference to work on.
Slides for my talk event-sourced architectures with Akka. Discusses Akka Persistence as mechanism to do event-sourcing. Presented at Javaone 2014 and Jfokus 2015.
Transactions and Concurrency Control PatternsJ On The Beach
Transactions and Concurrency Control Patterns by Vlad Mihalcea
Transactions and Concurrency Control are very of paramount importance when it comes to enterprise systems data integrity. However, this topic is very tough since you have to understand the inner workings of the database system, its concurrency control design choices (e.g. 2PL, MVCC), transaction isolation levels and locking schemes.
In this presentation, I’m going to explain what data anomalies can happen depending on the transaction isolation level, with references to Oracle, SQL Server, PostgreSQL, and MySQL.
I will also demonstrate that database transactions are not enough, especially for multi-request web flows. For this reason, I’m going to present multiple application-level transaction patterns based on both optimistic and pessimistic locking mechanisms.
Last, I’m going to talk about Concurrency Control strategies used in the Hibernate second-level caching mechanism, which can boost performance without compromising strong consistency.
Nowadays traditional layered monolithic architecture in Java world is not so popular as 5-10 years ago. I remember how we wrote tons of code for each layer repeating almost the same parts for every application. Add unit and integration testing to understand how much time and efforts has been spent on repeatable work. All cool ideas around DDD (domain driven design) and Hexagonal Architecture was just a nice theory because reality hasn’t allow us to implement it easily. Even Dependency Injection with Spring framework was completely focused on traditional layered approach, not even talking about JavaEE platform.
Today we have Spring Boot ecosystem covering most of our needs for integration with almost all possible technologies and microservices architectural trend, enabling completely new approach to build Java applications around domain model. It is so natural to build Java domain-oriented services and connect them with external world using ports and adapters, that Hexagonal Architecture is almost enabled by default. You just need to switch your way of thinking…
Java EE 8 Overview (Sept 2015). A lot of work is already done by the Expert Groups so lets have a brief look for what we can expect in the some areas.
- Servlet 4 will embrace the new HTTP/2 protocol.
- JSON-B will bring the same high level features of JAXB to the JSON data format.
- Server-Sent Events(SSE) is the WebSocket variant where you only send data from the server to the client.
- MVC will be the Action based MVC complement of the Component based MVC of JSF.
- Some major restructuring of CDI so that we can use it standardised in Java SE to mention one thing.
The Java EE security API will be covered in more detail. Security related things became old and dusty and needs to move away from proprietary configuration to be able to make the transition to the cloud. An introduction to JSR 375 is given, which promotes self-contained application portability across Java EE servers, and promotes the use of modern programming concepts such as Expression Language, and CDI. It will holistically attempt to simplify, standardize, and modernize the Security API across the platform in areas identified by the community.
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.
One of the main advantages of PHP is that it allows you and your company to build up projects in no time and with immediate feedback and business value. Sometimes, however, fast growth and unprevented complexities could make your codebase more and more difficult to manage as time passes and new features are added.Domain Driven Design can be an elegant solution to the problem, but introducing it in mid-large sized projects is not always easy: you have to deal with difficulties at technical, team and knowledge levels. This talk focuses on how to approach the change in your codebase and in your team mindset without breaking legacy code or stopping the development in favor of neverending refactoring sessions.
SpringOne Platform 2017
Ryan Baxter, Pivotal
You have heard and seen great things about Spring Cloud and you decide it is time to dive in and try it out yourself. You fire up your browser head to Google and land on the Spring Cloud homepage. Then it hits you, where do you begin? What do each of these projects do? Do you need to use all of them or can you be selective? The number of projects under the Spring Cloud umbrella has grown immensely over the past couple of years and if you are a newcomer to the Spring Cloud ecosystem it can be quite daunting to sift through the projects to find what you need. By the end of this talk you will leave with a solid understanding of the Spring Cloud projects, how to use them to build cloud native apps, and the confidence to get started!
This slides deck about Microservices architecture and why do we need it. Architecture patterns which we need to follow doing Microservices architecture: Microservice, API Gateway, Service Discovery, Stateless/Shared-Nothing, Configuration/Service Consumption, Fault Tolerance (Circuit Breaker), Request Collapsing. And a bit about API Versioning
Name : Prasoon Dadhich
USN : 1MS09IS069
CODE
#include <iostream>
using namespace std;
class Singleton
{
private:
static bool instanceFlag;
static Singleton *single;
Singleton()
{
//private constructor
}
public:
static Singleton* getInstance();
void method();
~Singleton()
{
instanceFlag = false;
}
};
bool Singleton::instanceFlag = false;
Singleton* Singleton::single = NULL;
Singleton* Singleton::getInstance()
{
if(! instanceFlag)
{
single = new Singleton();
instanceFlag = true;
return single;
}
else
{
return single;
}
}
void Singleton::method()
{
cout << "Method of the singleton class" << endl;
}
int main()
{
Singleton *sc1,*sc2;
sc1 = Singleton::getInstance();
sc1->method();
sc2 = Singleton::getInstance();
sc2->method();
return 0;
}
Explanation
If we create any object of this class then the static object (player) will be returned and assigned to the new object.
Finally only one object will be there. The point is not how many times something gets executed, the point is, that the work is done by a single instance of the the class. This is ensured by the class method Singleton::getInstance().
As you can see in the above code,Client can access any instance of the singleton only through the getInstance() method.Once an instance is created,the instanceFlag value becomes true and then any further objects pointers created will be given the reference to the same object that has been created.
Also,make sure you notice the presence of a private constructor.This ensures that no new objects of the class are created and that all the class pointers get the same reference to work on.
Speedment SQL Reflector is a software solution that allows applications to get automatically updated data in real time. The SQL Reflector loads data from your existing SQL database and feeds it into an in-memory data grid e.g. GridGain. When started, the SQL reflector will load your selected existing relational data into your map cluster. Also, any subsequent changes that are made to the relational database (regardless how, via your application, script, SQL commands or even stored procedures) are then continuously fed to your GridGain nodes. Even SQL-transactions are preserved so that your maps will always reflect a valid state of the underlying SQL database.
Caching and tuning fun for high scalability @ phpBenelux 2011Wim Godden
Slides for "Caching and Tuning fun for high scalability" talk, given @ phpBenelux Conference - Jan 28, 2011
Note that a lot of things were explained with each slide... that content is ofcourse not in the slides, so it might make some slides very unclear.
Application Scalability in Server Farms - NCacheAlachisoft
NCache is an in-memory caching solution by Alachisoft that improves application scalability and performance by reducing database trips and storing frequently accessed data in memory to provide better performance. It is also used to cache session data in web farms.
Lucas Waye of Tivo talks about how the company uses Presto for SQL analytics. Meetup co-sponsored by Starburst (www.starburstdata.com) and Qubole (www.qubole.com).
In today’s systems , the time it takes to bring data to the end-user can be very long, especially under heavy load. An application can often increase performance by using an appropriate caching system. There are many caching level that you can use in our application today : CDN, In-Memory/Local Cache, Distributed Cache, Outut Cache, Browser Cache, Html Cache
Caching and tuning fun for high scalability @ PHPTourWim Godden
Caching has been a 'hot' topic for a few years. But caching takes more than merely taking data and putting it in a cache : the right caching techniques can improve performance and reduce load significantly. But we'll also look at some major pitfalls, showing that caching the wrong way can bring down your site. If you're looking for a clear explanation about various caching techniques and tools like Memcached, Nginx and Varnish, as well as ways to deploy them in an efficient way, this talk is for you. In this tutorial, we'll start from a Zend Framework based site. We'll add caching, begin to add servers and replace the standard LAMP stack, all while performing live benchmarks.
Event Sourcing: Einführung und Best PracticesMichael Plöd
The Architecture Gathering 2015
Unter Event Sourcing versteht man einen Architekturstil in dem Änderungen am Zustand der verwalteten Daten als eine Sequenz von Events festgehalten werden. Durch diese Herangehensweise können jederzeit Snapshots des Datenzustands erstellt und abgefragt werden. Des Weiteren ermöglicht uns das Persistieren von Events eine Optimierung der lesenden Zugriffe durch eine Denormalisierung des „Lese-Modells“ der Daten. Letzerer Aspekt ist aktuell insbesondere durch den Architekturansatz CQRS in aller Munde.
Building Microservices with Event Sourcing and CQRSMichael Plöd
The presentation has been given as a backup for Chris Richardson's event sourcing talk at the Spring One 2GX 2015 conference in Washington DC
Event Sourcing is an architectural style that is based on data being represented as a sequence (or stream) of events. This enables a very convenient way of storing and retrieving snapshots of data. From the event stream we can derive a highly optimized query model of the data. This aspect is a prominent part of the CQRS-Pattern.
This talk will introduce Event Sourcing from the ground up and explain popular patterns surrounding the topic. In addition to that I will cover why Event Sourcing is an interesting architecture pattern for microservice applications.
Event Sourcing might appear easy and straight forward at a first glance. However there are some tough challenges to address in real world projects: "What about parallel updates?", "Where should I validate my data?", "How about consistency?" There isn't an easy catch-all answer to these questions.This talks addresses exactly these demanding challenges and offers ideas and possible solutions for them. In addition to that you will be able to consider advantages and downsides in discussions surrounding advanced Event Sourcing challenges.
This presentation was held at the Spring One 2GX 2015 conference in Washington DC.
The presentation explains how to migrate an existing Grails 2 application to the new Spring Boot and Gradle based Grails 3. It covers migrating plugins, applications and features gotchas as well as best praciteces.
The conference presentation also included an extensive live coding section in which I migrated an existing application to Grails 3.
Introduction to Event Sourcing and Challenges such as consistency, validation and concurrent updates.
The talk has been delivered at the Microservice Meetup in Munich.
Anatomie von Microservice LandschaftenMichael Plöd
Building a Microservice is no hard task these days. With current frameworks it is fairly easy to create a self contained application that exposes Services via a RESTful interface. The Challenge for Microservices lies within the overall landscape: how to they interact with each other? How about service lookup? What about resilience? This session adresses the usual building blocks that are needed for Microservice landscapes and gives an overview of suitable open source frameworks in the market.
Event Sourcing für reaktive AnwendungenMichael Plöd
Unter Event Sourcing versteht man einen Architekturstil, in dem Änderungen am Zustand der verwalteten Daten als eine Sequenz von Events festgehalten werden. Durch diese Herangehensweise können jederzeit Snapshots des Datenzustands erstellt und abgefragt werden. Des Weiteren ermöglicht uns das Persistieren von Events eine Optimierung der lesenden Zugriffe durch eine Denormalisierung des "Lesemodells" der Daten. Letzterer Aspekt ist derzeit durch den Architekturansatz CQRS in aller Munde.
Im Rahmen des Vortrags werde ich Ihnen eine Einführung in das Thema Event Sourcing geben und gängige Patterns rund um das Thema vorstellen. Des Weiteren werde ich erläutern, warum Event Sourcing ein sehr guter Ansatz für Architekturen im Sinne des Reactive Manifesto ist.
CQRS basierte Architekturen mit MicroservicesMichael Plöd
Die Themen Command Query Responsibility Segregation, kurz CQRS, und Microservices sind derzeit in aller Munde. Häufig werden die beiden Themen jedoch getrennt besprochen. So wird CQRS als neues Architekturpattern gehandelt, welches eine Abkehr vom klassischen Schichtmodell darstellt. Parallel dazu werden Microservices als modernes Architektur- und Deploymentmodell vorgestellt, welches zum einen die bestehenden Probleme der klassischen Application-Server Welt adressiert und welches sich als neue Denkweise für Service Orientierte Architekturen empfiehlt.
Beide Ansätze sind für sich alleine betrachtet sehr interessant allerdings bilden sie vor allem in Kombination miteinander ein äusserst attraktives Modell für künftige IT-Landschaften. Der Vortrag wird dieses Modell vorstellen. Des Weiteren zielt der Vortrag auf eine kritische Auseinandersetzung mit diesem Architekturmodell ab.
Caching - Hintergründe, Patterns und Best PracticesMichael Plöd
Das Thema Caching ist für zahlreiche Business Anwendungen relevant und der Markt für Caching-Lösungen reicht von einfachen lokalen Caches bis hin zu mächtigen und komplexen Data Grids. Ein weiteres Differenzierungsmerkmal ist die Konsistenzgarantie beziehungsweise die transaktionale Integrität, welche die unterschiedlichen Lösungen bieten. Allerdings unterscheiden sich Anwendungen, welche Geschäftsprozesse in gewachsenen Unternehmenslandschaften umsetzen stark von sozialen Netzwerken oder Internetdiensten, welche aus dem Startup-Umfeld kommen.
Der Vortrag adressiert in erster Linie das erste Szenario: Caching in Unternehmensanwendungen, welche auf Basis einer bereits bestehenden Infrastruktur umgesetzt werden. Hierbei werden zuerst die Herausforderungen, die diese Anwendungen an das Thema Caching stellen, vorgestellt. Aspekte die hierbei betrachtet werden sind: Security, Monitoring, Audit-Compliance, Art der Daten sowie Geschäftsprozesse. Im zweiten Teil werden unterschiedliche Arten des Cachings vorgestellt und im Hinblick auf die eben erwähnten Herausforderungen bewertet. Abschließend geht der Vortrag darauf ein, welche Patterns und Best Practices sich in der Praxis bewährt haben und wie das Thema Caching möglichst transparent und deterministisch in Business-Anwendungen integriert werden kann.
Warum empfehle ich meinen Kunden das Spring Framework? Michael Plöd
In den letzten Jahren wurde vermehrt die Diskussion JEE 6 vs. Spring geführt, wobei immer öfter die Irrelevanz des Spring Frameworks heraufbeschworen wurde. Im Rahmen der Session möchte ich - abseits jeglicher Polemik - in einer ganzheitlichen Betrachtung schildern, warum ich meinen Kunden noch immer zum Einsatz von Spring rate.
Erfahrene Entwickler und Architekten müssen ihre Ideen oft anderen Entwicklern und dem Management vermitteln. Im Rahmen der Session werden grundlegende Präsentationstechniken vermittelt, die verhindern, dass Ihre Präsentation nicht in einer Bullet-Point-Wüste endet. Dabei gehen wir auf vorbereitende Maßnahmen, Grundlagen der Themenstrukturierung und Layouttipps ein.
Apache Wicket is constantly growing in popularity throughout all kinds of projects. However Wicket doesn't come out of the box with a built-in Java EE support. Integration to CDI is missing and the same is valid for Bean Validation support for example. This session demonstrates how you can user CDI, Conversations and Bean Validation together with Apache Wicket. The first part of the talk will consist of a small slide-driven theoretical part whereas the second part will consist of a coding session that demonstrates hands-on how to hook everything together.
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
In the ever-evolving landscape of technology, enterprise software development is undergoing a significant transformation. Traditional coding methods are being challenged by innovative no-code solutions, which promise to streamline and democratize the software development process.
This shift is particularly impactful for enterprises, which require robust, scalable, and efficient software to manage their operations. In this article, we will explore the various facets of enterprise software development with no-code solutions, examining their benefits, challenges, and the future potential they hold.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
Understanding Nidhi Software Pricing: A Quick Guide 🌟
Choosing the right software is vital for Nidhi companies to streamline operations. Our latest presentation covers Nidhi software pricing, key factors, costs, and negotiation tips.
📊 What You’ll Learn:
Key factors influencing Nidhi software price
Understanding the true cost beyond the initial price
Tips for negotiating the best deal
Affordable and customizable pricing options with Vector Nidhi Software
🔗 Learn more at: www.vectornidhisoftware.com/software-for-nidhi-company/
#NidhiSoftwarePrice #NidhiSoftware #VectorNidhi
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
2. I will talk about
Caching Types / Topologies
Best Practices for Caching in Enterprise Applications
Caching with Spring
JCache and Spring
I will NOT talk about
Latency / Synchronization discussion
What is the best caching product on the market
HTTP / Database Caching
Caching in JPA, Hibernate or other ORMs
3. Cache!
/ kæʃ /!
In computing, a cache is a component that transparently stores data so that future requests
for that data can be served faster. The data that is stored within a cache might be values that
have been computed earlier or duplicates of original values that are stored elsewhere. If
requested data is contained in the cache (cache hit), this request can be served by simply
reading the cache, which is comparatively faster. Otherwise (cache miss), the data has to be
recomputed or fetched from its original storage location, which is comparatively slower. Hence,
the greater the number of requests that can be served from the cache, the faster the overall
system performance becomes.
Source: http://en.wikipedia.org/wiki/Cache_(computing)
4. That’s awesome. Let’s cache everything
and everywhere and distribute it all in
a Cluster in a transactional manner
ohhh by the way: Twitter has been
doing that for ages
Are you
crazy?
6. Many enterprise grade projects
are adapting caching too
defensive or too offensive and are
running into consistency or
performance issues because of
that
7. But with a well adjusted caching
strategy you will make your
application more scalable, faster
and cheaper to operate.
8. Local Cache, Data Grid, Document Store, JPA
First Level Cache, JPA Second Level Cache,
Types of Places CACHES
for
Hybrid Cache
Database, Heap, HTTP Proxy, Browser,
Prozessor, Disk, Off Heap, Persistence-
Framework, Application
9. We will focus on local and
distributed caching at the
application level with the Spring
Framework
10. Which data shall I
cache?
Which cache shall I use?
Where shall I cache?
Which impact does it have on my
infrastructure
How about data-consistency
How do I introduce
caching?
How about caching in
Spring?
11. Which data shall I
cache?
Which cache shall I use?
Where shall I cache?
Which impact does it have on my
infrastructure
How about data-consistency
How do I introduce
caching?
How about caching in
Spring?
17. Which data shall I
cache?
Which cache shall I use?
Where shall I cache?
Which impact does it have on my
infrastructure
How about data-consistency
How do I introduce
caching?
How about caching in
Spring?
34. Which data shall I
cache?
Which cache shall I use?
Where shall I cache?
Which impact does it have on my
infrastructure
How about data-consistency
How do I introduce
caching?
How about caching in
Spring?
48. Clustered caches are
complex. Please make
sure that operations
and networking are
involved as early as
possible.
49. Which data shall I
cache?
Which cache shall I use?
Where shall I cache?
Which impact does it have on my
infrastructure
How about data-consistency
How do I introduce
caching?
How about caching in
Spring?
50. 7 Make sure that only suitable
data gets cached
51. The best cache candidates are
read-mostly data, which are
expensive to obtain
52. If you urgently must cache write-intensive
data make sure to use a
distributed cache and not a
replicated or invalidating one
53. Which data shall I
cache?
Which cache shall I use?
Where shall I cache?
Which impact does it have on my
infrastructure
How about data-consistency
How do I introduce
caching?
How about caching in
Spring?
57. Which data shall I
cache?
Which cache shall I use?
Where shall I cache?
Which impact does it have on my
infrastructure
How about data-consistency
How do I introduce
caching?
How about caching in
Spring?
61. Example: Hazelcast
putting and getting 10.000 objects locally
GET Time PUT Time Payload Size
Serializable ? ? ?
Data
Serializable ? ? ?
Identifier
Data
Serializable
? ? ?
63. Example: Hazelcast
putting and getting 10.000 objects locally
GET Time PUT Time Payload Size
Serializable 1287 ms 1220 ms 1164 byte
Data
Serializable 443 ms 408 ms 916 byte
Identifier
Data
Serializable
264 ms 207 ms 882 byte
71. Tying your code to a cache provider is bad practice
public Account retrieveAccount(String accountNumber)
{!
Cache cache = ehCacheMgr.getCache(„accounts“);!
Account account = null;!
Element element = cache.get(accountNumber);!
if(element == null) {!
//execute some business logic for retrieval!
//account = result of logic above!
cache.put(new Element(accountNumber, account));!
} else {!
account = (Account)element.getObjectValue();!
}!
return account;!
}
72. Try switching from EHCache to Hazelcast
public Account retrieveAccount(String accountNumber)
{!
Cache cache = ehCacheMgr.getCache(„accounts“);!
Account account = null;!
Element element = cache.get(accountNumber);!
if(element == null) {!
//execute some business logic for retrieval!
//account = result of logic above!
cache.put(new Element(accountNumber, account));!
} else {!
account = (Account)element.getObjectValue();!
}!
return account;!
}
You will
have to
adjust these
lines of code
to the
Hazelcast
API
73. You can’t switch cache providers between
environments
public Account retrieveAccount(String accountNumber)
{!
Cache cache = ehCacheMgr.getCache(„accounts“);!
Account account = null;!
Element element = cache.get(accountNumber);!
if(element == null) {!
//execute some business logic for retrieval!
//account = result of logic above!
cache.put(new Element(accountNumber, account));!
} else {!
account = (Account)element.getObjectValue();!
}!
return account;!
}
EHCache is
tightly
coupled to
your code
74. You mess up your business logic with
infrastructure
public Account retrieveAccount(String accountNumber)
{!
Cache cache = ehCacheMgr.getCache(„accounts“);!
Account account = null;!
Element element = cache.get(accountNumber);!
if(element == null) {!
//execute some business logic for retrieval!
//account = result of logic above!
cache.put(new Element(accountNumber, account));!
} else {!
account = (Account)element.getObjectValue();!
}!
return account;!
}
This is all
caching
related code
without any
business
relevance
76. Spring’s Caching Annotations
Annotation Description
@Cacheable Demarcates cachable methods, can read and write to the cache(s)
@CacheEvict Demarcates methods that perform cache eviction, that is methods that
act as triggers for removing data from the cache.
@CachePut Updates the cache with the annotated method’s return value. Will always
execute the method.
@Caching Allows multiple nested @Cacheable, @CacheEvict and @CachePut
annotations to be used on the same method
@CacheConfig
Class-level annotation that allows to share the cache names, the custom
KeyGenerator, the custom CacheManager and finally the custom
CacheResolver. Does not enable caching.
77. Default Key Generation Strategy
Annotation Key
@Cacheable("Customers")!
public Customer getCustomer(String customerNumber) {!
! …!
}
@Cacheable("CustomerList")!
public List<Customer> listCustomers(int start, int count) {!
! …!
}
@Cacheable("MonthlyReport")!
public Report getMonthlyReport() {!
! …!
}
customerNumber
SimpleKey containing
start and count
SimpleKey.EMPTY
78. public class MyOwnKeyGenerator implements KeyGenerator {!
@Override!
public Object generate(Object target, Method method, Object... params) {!
if (params.length == 0) {!
return new SimpleKey("EMPTY");!
}!
if (params.length == 1) {!
Object param = params[0];!
if (param != null && !param.getClass().isArray()) {!
return param;!
}!
}!
return new SimpleKey(params);!
}!
}
You need a custom default KeyGenerator?
<cache:annotation-driven cache-manager="hazelcastCacheManager"
keyGenerator="myOwnKeyGenerator" />
79. SpEL in Caching Annotations
Annotation Effect
@Cacheable("concerts", key="#location.id")!
public List<Concert> findConcerts(Location location)
@Cacheable("concerts",
key="T(someType).hash(#location)")!
public List<Concert> findConcerts(Location location)
@Cacheable("concerts",
condition="#location.city == 'Dallas')",
unless="#location.outOfBusiness")!
public List<Concert> findConcerts(Location location)
Key: id of location
@CachePut("locations", key="#result.id")!
public Location saveLocation(Location location)
Key: hashCode of location
Conditional Caching if Location
is in Dallas in operating
Key: generated id of result
80. I have multiple Caches
and Cache Managers!
@Cacheable("concerts", cacheManager="hazelCastCacheManager")!
public List<Concert> findConcerts(Location location)
@Cacheable("bands", cacheManager="gemfireCacheManager"))!
public List<Band> listBand(int start, int count)
@Cacheable("bands", cacheResolver="myOwnCacheResolver"))!
public List<Band> listBand(int start, int count)
Programmatic resolution through an
implementation of the CacheResolver Interface
Manual
Assignment
Manual
Assignment
81. public class MyOwnCacheResolver extends AbstractCacheResolver {!
@Autowired
public MyOwnCacheResolver(CacheManager cacheManager) {
super(cacheManager);
}
protected Collection<String> getCacheNames(CacheOperationInvocationContext<?> context) {!
return getCacheNames(context.getTarget().getClass());!
}!
"
private getCacheNames(Class<?> businessServiceClass) {
...
}!
}
Working with CacheResolvers
@Cacheable("bands", cacheResolver="myOwnCacheResolver"))!
public List<Band> listBand(int start, int count)
82. You can use your own custom Annotations
@Retention(RetentionPolicy.RUNTIME)!
@Target({ElementType.METHOD})!
@Cacheable("concerts", key="id")!
public @interface DefaultConcertCacheable {!
}
@DefaultConcertCacheable!
public Concert getConcert(Long id)
83. Spring 4.x is the first
commerically supported
container with JCache
(JSR-107) Support!
That’s years ahead
of
any JEE Server
84. Spring vs JCache Annotations
Spring JCache Description
@Cacheable @CacheResult Similar, but @CacheResult can cache Exceptions and force
method execution
@CacheEvict @CacheRemove Similar, but @CacheRemove supports eviction in the case of
Exceptions
@CacheEvict
(removeAll=true) @CacheRemoveAll Same rules as for @CacheEvict vs @CacheRemove
@CachePut @CachePut
Different semantic: cache content must be annotated with
@CacheValue. JCache brings Exception caching and caching
before or after method execution
@CacheConfig @CachePut Identical
85. Except for the dependencies
JCache API and spring-context-support
no further steps need to
be taken to enable JCache
Annotations in Spring
Applications
86. ?
Your Cache Provider has no
integration for Spring or JCache
88. How do I disable
caching for Unit Tests?
<bean id="cacheManager"
class="org.springframework.cache.support.CompositeCacheManager">!
<property name="cacheManagers">!
<list>!
<ref bean="guavaCache"/>!
<ref bean="ehCache"/>!
</list>!
</property>!
<property name="fallbackToNoOpCache" value="true"/>!
</bean>