SlideShare a Scribd company logo
The Bleeding Edge
Richard Warburton and Martijn Verburg
http://www.jclarity.com
"Toto, I’ve a feeling we’re
not in Kansas anymore"
- Dorothy, Wizard of Oz
Who are we?
● jClarity - We solve performance problems
● Richard - Engineer, Author, Speaker
● Martijn - CEO, Author, Speaker, Cat Herder
The Status Quo
What is jClarity building?
How we pick Technology
Technology Scorecard
A Brave New World
We have a lot of Java EE Experience
● LJC is on the JCP Executive Committee
● Martijn is a CERTIFIED BEA Weblogic
○ Something, something, something Darkside

● Lots of experience and deep community
But what if you don’t use that?...

… we don’t!
The Status Quo
What is jClarity building?
How we picked Technology
Technology Scorecard
A Brave New World
The Answer
..to your performance problems

Easy Access, Lightweight and Low Impact
Daemon, Aggregator & UI
● Daemon
○ Needs to be Low Impact, Low Traffic, Self-Updating

● Aggregator
○ Non-blocking I/O, Sockets > HTTP, High Availability

● UI
○ Rich Browser App, Accepts server-push events
Doesn’t really fit the Java EE World
● Daemon: Java EE is not low impact
● Server: Java EE is mainly about req/resp
● UI: Java EE lacks support for push events
○ Java EE 7 has Websockets now
The Status Quo
What is jClarity building?
How we picked Technology
Technology Scorecard
A Brave New World
Our Methodology
Stolen ‘Adopted’ from Matt Raible
1.
2.
3.
4.
5.

Identify Ranking Criteria
Weight each criteria
Score each solution
Multiply and add
Prototype top two choices
Observations
● Cons
○ Still Subjective
○ No guarantees

● Pros
○ Incorporates diverse feedback
○ Avoids bike-shedding
○ Avoids Technology Dictatorship
The Status Quo
What is jClarity building?
How we picked Technology
Technology Scorecard
A Brave New World
What Tech Stack did we pick?
AngularJS
● Client-side Javascript framework
● Model-View-Whatever (MVC or MVVM)
● Two-Way Data Binding
● Directives used to encapsulate components
AngularJS - Positives
● Html5 concepts without adoption issues
● Declarative - easy to understand and read
● Simple code structure
● Client side templating
AngularJS - Negatives
● Karma Framework doesn’t integrate well
● Use of $scope.$apply
● People are familiar with jQuery
○ Declarative learning curve.
● Javascript tooling still kinda sucks
AngularJS - Scorecard

"Real win over hand rolled Javascript"
MongoDB
● NoSQL Document Store
● “Scalable” - easy sharding
● “Fault Tolerant” - easy data replication
● The new DB sexy!
MongoDB - Positives
● Document Modelling
● Nice API
● Easy to adopt and get started
● Easy Replication and Sharding
● Can be Fast*
MongoDB - Negatives (1)
● Security
○ we compiled an SSL-enabled mongo
○ pwning folks? Find out if they use Mongo!
○ tool support
● Data Integrity Concerns
● Split Brain - election algorithm failures
MongoDB - Negatives (2)
● Difficult to automatically sysadmin
● Immaturity of Drivers/Connectors (PHP)
● Document model is limited
● New query language to learn
● Poor timezone support
MongoDB - Scorecard

"Consider your security strategy well."
"Is a document store what you really need?"
Vert.x
● Polyglot Reactive Programming Framework
● Message Passing Oriented
○ Lightweight Eventbus
○ No Shared Mutable State

● Non-blocking I/O
● Websocket Support
Vert.x
● Polyglot Reactive Programming Framework
● Message Passing Oriented
○ Lightweight Eventbus
○ No Shared Mutable State

● Non-blocking I/O
● Websocket Support
Vert.x - Positives
● No shared state, easy concurrency
● Eventbus to the browser!
● Community++
● Polyglot
○ We used Groovy and Java
Vert.x - Negatives
● Immaturity:
○ Released 2.0 without supporting 1.3
○ Testing Framework not quite there
● NIH Logging
● Inter Machine Eventbus Security
○ Not originally designed for the open internet
Vert.x - Scorecard

"It's perfect…. for the RIGHT use case."
Chef
● Automates server configuration
○ Centralised repo of pre-built recipes
○ Ruby based DSL

● Can also automate application deployment
○ Run update to deploy config/binaries
Chef - Positives
● Lots of Java/JVM recipes
● Ability to set roles and override properties
● Centrally controlled configuration
● Provides structure and deployment model
Chef - Inconsistent
knife cookbook upload apache2

knife role from file roles/foo/bar.rb

knife data bag from file users john.json
Chef - Negatives
● Managing dependencies is difficult
○ Use Librarian to help

● Not Declarative
○ e.g: doesn’t remove old config

● Still very complex
○ Steep learning curve
Chef - Scorecard

"Chef, it's way better than shell scripts"
Common Bleeding Edge Themes
1. Immaturity
2. Lack of tooling
3. Problems at the boundary
The Status Quo
What is jClarity building?
How we picked Technology
Technology Scorecard
A Brave New World
Technology ←→ $$$$$$$
What are you paying for?
● What does your support contract get you?
● Who does it get you?
● What’s the lock-in?
A La Carte Open Source
● Popular with $0 budget startups
● Commercially funded tech
● Strong Community Support
● Benefits elsewhere
The 'A La Carte' Relationship
● Be part of the community
○ We participated in Vertx IRC/London meetings

● Don’t diverge - upstream Patches
○ Vert.x, mod-mongo, Jacoco

● Open Source your plumbing
○

https://github.com/johnoliver/release-version-plugin
How do I do this?
● Low risk project
○ 20% time?

● Ask for forgiveness,
not permission!
● Don’t fear “them”
Q&A
Get your Free Trials at: http://www.jclarity.
com

@jclarity

More Related Content

What's hot

Dev and Blind - Attacking the weakest Link in IT Security
Dev and Blind - Attacking the weakest Link in IT SecurityDev and Blind - Attacking the weakest Link in IT Security
Dev and Blind - Attacking the weakest Link in IT Security
Mario Heiderich
 
An overview of node.js
An overview of node.jsAn overview of node.js
An overview of node.js
valuebound
 
Devoxx%202008%20Tutorial
Devoxx%202008%20TutorialDevoxx%202008%20Tutorial
Devoxx%202008%20Tutorial
tutorialsruby
 
First Steps to Be Non-blocking on the Web
First Steps to Be Non-blocking on the WebFirst Steps to Be Non-blocking on the Web
First Steps to Be Non-blocking on the Web
GlobalLogic Ukraine
 
2013 - Brian Stanley - Memcached, Cached all the things
2013 - Brian Stanley - Memcached, Cached all the things2013 - Brian Stanley - Memcached, Cached all the things
2013 - Brian Stanley - Memcached, Cached all the things
PHP Conference Argentina
 
Spring shell for everyone
Spring shell for everyoneSpring shell for everyone
Spring shell for everyone
Ihor Banadiga
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Edureka!
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
Arun Kumar Arjunan
 
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.jsThe MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
MongoDB
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
Rob O'Doherty
 
Umbraco development across large and distributed teams
Umbraco development across large and distributed teamsUmbraco development across large and distributed teams
Umbraco development across large and distributed teams
Janusz Stabik
 
You know what iMEAN? Using MEAN stack for application dev on Informix
You know what iMEAN? Using MEAN stack for application dev on InformixYou know what iMEAN? Using MEAN stack for application dev on Informix
You know what iMEAN? Using MEAN stack for application dev on Informix
Keshav Murthy
 

What's hot (12)

Dev and Blind - Attacking the weakest Link in IT Security
Dev and Blind - Attacking the weakest Link in IT SecurityDev and Blind - Attacking the weakest Link in IT Security
Dev and Blind - Attacking the weakest Link in IT Security
 
An overview of node.js
An overview of node.jsAn overview of node.js
An overview of node.js
 
Devoxx%202008%20Tutorial
Devoxx%202008%20TutorialDevoxx%202008%20Tutorial
Devoxx%202008%20Tutorial
 
First Steps to Be Non-blocking on the Web
First Steps to Be Non-blocking on the WebFirst Steps to Be Non-blocking on the Web
First Steps to Be Non-blocking on the Web
 
2013 - Brian Stanley - Memcached, Cached all the things
2013 - Brian Stanley - Memcached, Cached all the things2013 - Brian Stanley - Memcached, Cached all the things
2013 - Brian Stanley - Memcached, Cached all the things
 
Spring shell for everyone
Spring shell for everyoneSpring shell for everyone
Spring shell for everyone
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.jsThe MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Umbraco development across large and distributed teams
Umbraco development across large and distributed teamsUmbraco development across large and distributed teams
Umbraco development across large and distributed teams
 
You know what iMEAN? Using MEAN stack for application dev on Informix
You know what iMEAN? Using MEAN stack for application dev on InformixYou know what iMEAN? Using MEAN stack for application dev on Informix
You know what iMEAN? Using MEAN stack for application dev on Informix
 

Similar to The Bleeding Edge

kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High load
Krivoy Rog IT Community
 
Path Dependent Development (PyCon AU)
Path Dependent Development (PyCon AU)Path Dependent Development (PyCon AU)
Path Dependent Development (PyCon AU)
ncoghlan_dev
 
Path dependent-development (PyCon India)
Path dependent-development (PyCon India)Path dependent-development (PyCon India)
Path dependent-development (PyCon India)
ncoghlan_dev
 
Ratpack the story so far
Ratpack the story so farRatpack the story so far
Ratpack the story so far
Phill Barber
 
IntoWebGL - Unite Melbourne 2015
IntoWebGL - Unite Melbourne 2015IntoWebGL - Unite Melbourne 2015
IntoWebGL - Unite Melbourne 2015
Ryan Alcock
 
React native - under the bridge - react week NYC
React native - under the bridge - react week NYCReact native - under the bridge - react week NYC
React native - under the bridge - react week NYC
Chen Feldman
 
Globant Week Cali - Entendiendo el desarrollo Front-end del mundo moderno.
Globant Week Cali - Entendiendo el desarrollo Front-end del mundo moderno.Globant Week Cali - Entendiendo el desarrollo Front-end del mundo moderno.
Globant Week Cali - Entendiendo el desarrollo Front-end del mundo moderno.
Globant
 
Dust.js
Dust.jsDust.js
SELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the StorySELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the Story
Nathanial McConnell
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
Vlad Fedosov
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JSFestUA
 
Front-End Developer's Career Roadmap
Front-End Developer's Career RoadmapFront-End Developer's Career Roadmap
Front-End Developer's Career Roadmap
WebStackAcademy
 
Moving From Angular to React
Moving From Angular to ReactMoving From Angular to React
Moving From Angular to React
Ilya Gurevich
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
Izzet Mustafaiev
 
µServices Architecture @ EPAM WOW 2015
µServices Architecture @ EPAM WOW 2015µServices Architecture @ EPAM WOW 2015
µServices Architecture @ EPAM WOW 2015
Izzet Mustafaiev
 
Frontend architecture design for large(r) team final
Frontend architecture design for large(r) team   finalFrontend architecture design for large(r) team   final
Frontend architecture design for large(r) team final
Chadchapol Vittavutkarnvej
 
Thinking DevOps in the Era of the Cloud - Demi Ben-Ari
Thinking DevOps in the Era of the Cloud - Demi Ben-AriThinking DevOps in the Era of the Cloud - Demi Ben-Ari
Thinking DevOps in the Era of the Cloud - Demi Ben-Ari
Demi Ben-Ari
 
Concurrency - Why it's hard ?
Concurrency - Why it's hard ?Concurrency - Why it's hard ?
Concurrency - Why it's hard ?
Ramith Jayasinghe
 
Software architecture, Patterns for Scale
Software architecture, Patterns for ScaleSoftware architecture, Patterns for Scale
Software architecture, Patterns for Scale
iGbanam
 
Secure software supply chain on a shoestring budget
Secure software supply chain on a shoestring budgetSecure software supply chain on a shoestring budget
Secure software supply chain on a shoestring budget
Lars Albertsson
 

Similar to The Bleeding Edge (20)

kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High load
 
Path Dependent Development (PyCon AU)
Path Dependent Development (PyCon AU)Path Dependent Development (PyCon AU)
Path Dependent Development (PyCon AU)
 
Path dependent-development (PyCon India)
Path dependent-development (PyCon India)Path dependent-development (PyCon India)
Path dependent-development (PyCon India)
 
Ratpack the story so far
Ratpack the story so farRatpack the story so far
Ratpack the story so far
 
IntoWebGL - Unite Melbourne 2015
IntoWebGL - Unite Melbourne 2015IntoWebGL - Unite Melbourne 2015
IntoWebGL - Unite Melbourne 2015
 
React native - under the bridge - react week NYC
React native - under the bridge - react week NYCReact native - under the bridge - react week NYC
React native - under the bridge - react week NYC
 
Globant Week Cali - Entendiendo el desarrollo Front-end del mundo moderno.
Globant Week Cali - Entendiendo el desarrollo Front-end del mundo moderno.Globant Week Cali - Entendiendo el desarrollo Front-end del mundo moderno.
Globant Week Cali - Entendiendo el desarrollo Front-end del mundo moderno.
 
Dust.js
Dust.jsDust.js
Dust.js
 
SELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the StorySELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the Story
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
 
Front-End Developer's Career Roadmap
Front-End Developer's Career RoadmapFront-End Developer's Career Roadmap
Front-End Developer's Career Roadmap
 
Moving From Angular to React
Moving From Angular to ReactMoving From Angular to React
Moving From Angular to React
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
µServices Architecture @ EPAM WOW 2015
µServices Architecture @ EPAM WOW 2015µServices Architecture @ EPAM WOW 2015
µServices Architecture @ EPAM WOW 2015
 
Frontend architecture design for large(r) team final
Frontend architecture design for large(r) team   finalFrontend architecture design for large(r) team   final
Frontend architecture design for large(r) team final
 
Thinking DevOps in the Era of the Cloud - Demi Ben-Ari
Thinking DevOps in the Era of the Cloud - Demi Ben-AriThinking DevOps in the Era of the Cloud - Demi Ben-Ari
Thinking DevOps in the Era of the Cloud - Demi Ben-Ari
 
Concurrency - Why it's hard ?
Concurrency - Why it's hard ?Concurrency - Why it's hard ?
Concurrency - Why it's hard ?
 
Software architecture, Patterns for Scale
Software architecture, Patterns for ScaleSoftware architecture, Patterns for Scale
Software architecture, Patterns for Scale
 
Secure software supply chain on a shoestring budget
Secure software supply chain on a shoestring budgetSecure software supply chain on a shoestring budget
Secure software supply chain on a shoestring budget
 

More from RichardWarburton

Fantastic performance and where to find it
Fantastic performance and where to find itFantastic performance and where to find it
Fantastic performance and where to find it
RichardWarburton
 
Production profiling what, why and how technical audience (3)
Production profiling  what, why and how   technical audience (3)Production profiling  what, why and how   technical audience (3)
Production profiling what, why and how technical audience (3)
RichardWarburton
 
Production profiling: What, Why and How
Production profiling: What, Why and HowProduction profiling: What, Why and How
Production profiling: What, Why and How
RichardWarburton
 
Production profiling what, why and how (JBCN Edition)
Production profiling  what, why and how (JBCN Edition)Production profiling  what, why and how (JBCN Edition)
Production profiling what, why and how (JBCN Edition)
RichardWarburton
 
Production Profiling: What, Why and How
Production Profiling: What, Why and HowProduction Profiling: What, Why and How
Production Profiling: What, Why and How
RichardWarburton
 
Java collections the force awakens
Java collections  the force awakensJava collections  the force awakens
Java collections the force awakens
RichardWarburton
 
Generics Past, Present and Future (Latest)
Generics Past, Present and Future (Latest)Generics Past, Present and Future (Latest)
Generics Past, Present and Future (Latest)
RichardWarburton
 
Collections forceawakens
Collections forceawakensCollections forceawakens
Collections forceawakens
RichardWarburton
 
Generics past, present and future
Generics  past, present and futureGenerics  past, present and future
Generics past, present and future
RichardWarburton
 
Jvm profiling under the hood
Jvm profiling under the hoodJvm profiling under the hood
Jvm profiling under the hood
RichardWarburton
 
How to run a hackday
How to run a hackdayHow to run a hackday
How to run a hackday
RichardWarburton
 
Generics Past, Present and Future
Generics Past, Present and FutureGenerics Past, Present and Future
Generics Past, Present and Future
RichardWarburton
 
Pragmatic functional refactoring with java 8 (1)
Pragmatic functional refactoring with java 8 (1)Pragmatic functional refactoring with java 8 (1)
Pragmatic functional refactoring with java 8 (1)
RichardWarburton
 
Performance and predictability (1)
Performance and predictability (1)Performance and predictability (1)
Performance and predictability (1)
RichardWarburton
 
Performance and predictability
Performance and predictabilityPerformance and predictability
Performance and predictability
RichardWarburton
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional Programming
RichardWarburton
 
Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8
RichardWarburton
 
Introduction to lambda behave
Introduction to lambda behaveIntroduction to lambda behave
Introduction to lambda behave
RichardWarburton
 
Introduction to lambda behave
Introduction to lambda behaveIntroduction to lambda behave
Introduction to lambda behave
RichardWarburton
 
Performance and predictability
Performance and predictabilityPerformance and predictability
Performance and predictability
RichardWarburton
 

More from RichardWarburton (20)

Fantastic performance and where to find it
Fantastic performance and where to find itFantastic performance and where to find it
Fantastic performance and where to find it
 
Production profiling what, why and how technical audience (3)
Production profiling  what, why and how   technical audience (3)Production profiling  what, why and how   technical audience (3)
Production profiling what, why and how technical audience (3)
 
Production profiling: What, Why and How
Production profiling: What, Why and HowProduction profiling: What, Why and How
Production profiling: What, Why and How
 
Production profiling what, why and how (JBCN Edition)
Production profiling  what, why and how (JBCN Edition)Production profiling  what, why and how (JBCN Edition)
Production profiling what, why and how (JBCN Edition)
 
Production Profiling: What, Why and How
Production Profiling: What, Why and HowProduction Profiling: What, Why and How
Production Profiling: What, Why and How
 
Java collections the force awakens
Java collections  the force awakensJava collections  the force awakens
Java collections the force awakens
 
Generics Past, Present and Future (Latest)
Generics Past, Present and Future (Latest)Generics Past, Present and Future (Latest)
Generics Past, Present and Future (Latest)
 
Collections forceawakens
Collections forceawakensCollections forceawakens
Collections forceawakens
 
Generics past, present and future
Generics  past, present and futureGenerics  past, present and future
Generics past, present and future
 
Jvm profiling under the hood
Jvm profiling under the hoodJvm profiling under the hood
Jvm profiling under the hood
 
How to run a hackday
How to run a hackdayHow to run a hackday
How to run a hackday
 
Generics Past, Present and Future
Generics Past, Present and FutureGenerics Past, Present and Future
Generics Past, Present and Future
 
Pragmatic functional refactoring with java 8 (1)
Pragmatic functional refactoring with java 8 (1)Pragmatic functional refactoring with java 8 (1)
Pragmatic functional refactoring with java 8 (1)
 
Performance and predictability (1)
Performance and predictability (1)Performance and predictability (1)
Performance and predictability (1)
 
Performance and predictability
Performance and predictabilityPerformance and predictability
Performance and predictability
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional Programming
 
Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8
 
Introduction to lambda behave
Introduction to lambda behaveIntroduction to lambda behave
Introduction to lambda behave
 
Introduction to lambda behave
Introduction to lambda behaveIntroduction to lambda behave
Introduction to lambda behave
 
Performance and predictability
Performance and predictabilityPerformance and predictability
Performance and predictability
 

Recently uploaded

JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
Discover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched ContentDiscover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched Content
ScyllaDB
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
Ortus Solutions, Corp
 
From Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMsFrom Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMs
Sease
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
christinelarrosa
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
christinelarrosa
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Containers & AI - Beauty and the Beast!?!
Containers & AI - Beauty and the Beast!?!Containers & AI - Beauty and the Beast!?!
Containers & AI - Beauty and the Beast!?!
Tobias Schneck
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Ukraine
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
Fwdays
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
ScyllaDB
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
Safe Software
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 

Recently uploaded (20)

JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
Discover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched ContentDiscover the Unseen: Tailored Recommendation of Unwatched Content
Discover the Unseen: Tailored Recommendation of Unwatched Content
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
 
From Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMsFrom Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMs
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Containers & AI - Beauty and the Beast!?!
Containers & AI - Beauty and the Beast!?!Containers & AI - Beauty and the Beast!?!
Containers & AI - Beauty and the Beast!?!
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
 
ScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking ReplicationScyllaDB Tablets: Rethinking Replication
ScyllaDB Tablets: Rethinking Replication
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 

The Bleeding Edge

  • 1. The Bleeding Edge Richard Warburton and Martijn Verburg http://www.jclarity.com
  • 2. "Toto, I’ve a feeling we’re not in Kansas anymore" - Dorothy, Wizard of Oz
  • 3. Who are we? ● jClarity - We solve performance problems ● Richard - Engineer, Author, Speaker ● Martijn - CEO, Author, Speaker, Cat Herder
  • 4. The Status Quo What is jClarity building? How we pick Technology Technology Scorecard A Brave New World
  • 5.
  • 6. We have a lot of Java EE Experience ● LJC is on the JCP Executive Committee ● Martijn is a CERTIFIED BEA Weblogic ○ Something, something, something Darkside ● Lots of experience and deep community
  • 7. But what if you don’t use that?... … we don’t!
  • 8. The Status Quo What is jClarity building? How we picked Technology Technology Scorecard A Brave New World
  • 9. The Answer ..to your performance problems Easy Access, Lightweight and Low Impact
  • 10.
  • 11. Daemon, Aggregator & UI ● Daemon ○ Needs to be Low Impact, Low Traffic, Self-Updating ● Aggregator ○ Non-blocking I/O, Sockets > HTTP, High Availability ● UI ○ Rich Browser App, Accepts server-push events
  • 12. Doesn’t really fit the Java EE World ● Daemon: Java EE is not low impact ● Server: Java EE is mainly about req/resp ● UI: Java EE lacks support for push events ○ Java EE 7 has Websockets now
  • 13. The Status Quo What is jClarity building? How we picked Technology Technology Scorecard A Brave New World
  • 14.
  • 15. Our Methodology Stolen ‘Adopted’ from Matt Raible 1. 2. 3. 4. 5. Identify Ranking Criteria Weight each criteria Score each solution Multiply and add Prototype top two choices
  • 16.
  • 17. Observations ● Cons ○ Still Subjective ○ No guarantees ● Pros ○ Incorporates diverse feedback ○ Avoids bike-shedding ○ Avoids Technology Dictatorship
  • 18. The Status Quo What is jClarity building? How we picked Technology Technology Scorecard A Brave New World
  • 19. What Tech Stack did we pick?
  • 20.
  • 21. AngularJS ● Client-side Javascript framework ● Model-View-Whatever (MVC or MVVM) ● Two-Way Data Binding ● Directives used to encapsulate components
  • 22. AngularJS - Positives ● Html5 concepts without adoption issues ● Declarative - easy to understand and read ● Simple code structure ● Client side templating
  • 23. AngularJS - Negatives ● Karma Framework doesn’t integrate well ● Use of $scope.$apply ● People are familiar with jQuery ○ Declarative learning curve. ● Javascript tooling still kinda sucks
  • 24. AngularJS - Scorecard "Real win over hand rolled Javascript"
  • 25. MongoDB ● NoSQL Document Store ● “Scalable” - easy sharding ● “Fault Tolerant” - easy data replication ● The new DB sexy!
  • 26.
  • 27. MongoDB - Positives ● Document Modelling ● Nice API ● Easy to adopt and get started ● Easy Replication and Sharding ● Can be Fast*
  • 28. MongoDB - Negatives (1) ● Security ○ we compiled an SSL-enabled mongo ○ pwning folks? Find out if they use Mongo! ○ tool support ● Data Integrity Concerns ● Split Brain - election algorithm failures
  • 29. MongoDB - Negatives (2) ● Difficult to automatically sysadmin ● Immaturity of Drivers/Connectors (PHP) ● Document model is limited ● New query language to learn ● Poor timezone support
  • 30. MongoDB - Scorecard "Consider your security strategy well." "Is a document store what you really need?"
  • 31. Vert.x ● Polyglot Reactive Programming Framework ● Message Passing Oriented ○ Lightweight Eventbus ○ No Shared Mutable State ● Non-blocking I/O ● Websocket Support
  • 32. Vert.x ● Polyglot Reactive Programming Framework ● Message Passing Oriented ○ Lightweight Eventbus ○ No Shared Mutable State ● Non-blocking I/O ● Websocket Support
  • 33.
  • 34. Vert.x - Positives ● No shared state, easy concurrency ● Eventbus to the browser! ● Community++ ● Polyglot ○ We used Groovy and Java
  • 35. Vert.x - Negatives ● Immaturity: ○ Released 2.0 without supporting 1.3 ○ Testing Framework not quite there ● NIH Logging ● Inter Machine Eventbus Security ○ Not originally designed for the open internet
  • 36. Vert.x - Scorecard "It's perfect…. for the RIGHT use case."
  • 37. Chef ● Automates server configuration ○ Centralised repo of pre-built recipes ○ Ruby based DSL ● Can also automate application deployment ○ Run update to deploy config/binaries
  • 38. Chef - Positives ● Lots of Java/JVM recipes ● Ability to set roles and override properties ● Centrally controlled configuration ● Provides structure and deployment model
  • 39. Chef - Inconsistent knife cookbook upload apache2 knife role from file roles/foo/bar.rb knife data bag from file users john.json
  • 40. Chef - Negatives ● Managing dependencies is difficult ○ Use Librarian to help ● Not Declarative ○ e.g: doesn’t remove old config ● Still very complex ○ Steep learning curve
  • 41. Chef - Scorecard "Chef, it's way better than shell scripts"
  • 42. Common Bleeding Edge Themes 1. Immaturity 2. Lack of tooling 3. Problems at the boundary
  • 43. The Status Quo What is jClarity building? How we picked Technology Technology Scorecard A Brave New World
  • 44.
  • 46. What are you paying for? ● What does your support contract get you? ● Who does it get you? ● What’s the lock-in?
  • 47. A La Carte Open Source ● Popular with $0 budget startups ● Commercially funded tech ● Strong Community Support ● Benefits elsewhere
  • 48. The 'A La Carte' Relationship ● Be part of the community ○ We participated in Vertx IRC/London meetings ● Don’t diverge - upstream Patches ○ Vert.x, mod-mongo, Jacoco ● Open Source your plumbing ○ https://github.com/johnoliver/release-version-plugin
  • 49. How do I do this? ● Low risk project ○ 20% time? ● Ask for forgiveness, not permission! ● Don’t fear “them”
  • 50.
  • 51. Q&A Get your Free Trials at: http://www.jclarity. com @jclarity