the bleeding edge
DESCRIPTION
Enterprise Java developers value reliability and stability, but what happens to your technology stack if you’re willing to take a risk? At jClarity we’re running production systems using HTML 5, AngularJS, Vert.x, Mongo, Groovy and deploying using Chef. Its been an interesting ride: some things worked really well and some things don’t. Come along and find out what we’d recommend and what we’d avoid with hindsight. We’ll also talk about how we ended up with such a diverse stack and how to make technology choices in a fairer way. We’ve made the mistakes so you don’t have to!TRANSCRIPT
![Page 1: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/1.jpg)
The Bleeding EdgeRichard Warburton and Martijn Verburg
http://www.jclarity.com
![Page 2: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/2.jpg)
- Dorothy, Wizard of Oz
"Toto, I’ve a feeling we’re not in Kansas anymore"
![Page 3: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/3.jpg)
● jClarity - We solve performance problems
● Richard - Engineer, Author, Speaker
● Martijn - CEO, Author, Speaker, Cat Herder
Who are we?
![Page 4: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/4.jpg)
The Status Quo
What is jClarity building?
How we pick Technology
Technology Scorecard
A Brave New World
![Page 5: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/5.jpg)
![Page 6: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/6.jpg)
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
![Page 7: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/7.jpg)
But what if you don’t use that?...
… we don’t!
![Page 8: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/8.jpg)
The Status Quo
What is jClarity building?
How we picked Technology
Technology Scorecard
A Brave New World
![Page 9: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/9.jpg)
The Answer..to your performance problems
Easy Access, Lightweight and Low Impact
![Page 10: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/10.jpg)
![Page 11: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/11.jpg)
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
![Page 12: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/12.jpg)
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
![Page 13: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/13.jpg)
The Status Quo
What is jClarity building?
How we picked Technology
Technology Scorecard
A Brave New World
![Page 14: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/14.jpg)
![Page 15: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/15.jpg)
Our Methodology
Stolen ‘Adopted’ from Matt Raible
1. Identify Ranking Criteria2. Weight each criteria3. Score each solution4. Multiply and add5. Prototype top two choices
![Page 16: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/16.jpg)
![Page 17: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/17.jpg)
Observations
● Cons○ Still Subjective○ No guarantees
● Pros○ Incorporates diverse feedback○ Avoids bike-shedding○ Avoids Technology Dictatorship
![Page 18: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/18.jpg)
The Status Quo
What is jClarity building?
How we picked Technology
Technology Scorecard
A Brave New World
![Page 19: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/19.jpg)
What Tech Stack did we pick?
![Page 20: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/20.jpg)
![Page 21: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/21.jpg)
AngularJS
● Client-side Javascript framework
● Model-View-Whatever (MVC or MVVM)
● Two-Way Data Binding
● Directives used to encapsulate components
![Page 22: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/22.jpg)
AngularJS - Positives● Html5 concepts without adoption issues
● Declarative - easy to understand and read
● Simple code structure
● Client side templating
![Page 23: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/23.jpg)
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
![Page 24: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/24.jpg)
AngularJS - Scorecard
"Real win over hand rolled Javascript"
![Page 25: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/25.jpg)
MongoDB
● NoSQL Document Store
● “Scalable” - easy sharding
● “Fault Tolerant” - easy data replication
● The new DB sexy!
![Page 26: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/26.jpg)
![Page 27: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/27.jpg)
MongoDB - Positives
● Document Modelling
● Nice API
● Easy to adopt and get started
● Easy Replication and Sharding
● Can be Fast*
![Page 28: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/28.jpg)
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
![Page 29: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/29.jpg)
MongoDB - Negatives (2)● Difficult to automatically sysadmin
● Immaturity of Drivers/Connectors (PHP)
● Document model is limited
● New query language to learn
● Poor timezone support
![Page 30: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/30.jpg)
MongoDB - Scorecard
"Consider your security strategy well.""Is a document store what you really need?"
![Page 31: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/31.jpg)
Vert.x
● Polyglot Reactive Programming Framework
● Message Passing Oriented○ Lightweight Eventbus
○ No Shared Mutable State
● Non-blocking I/O
● Websocket Support
![Page 32: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/32.jpg)
Vert.x
● Polyglot Reactive Programming Framework
● Message Passing Oriented○ Lightweight Eventbus
○ No Shared Mutable State
● Non-blocking I/O
● Websocket Support
![Page 33: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/33.jpg)
![Page 34: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/34.jpg)
● No shared state, easy concurrency
● Eventbus to the browser!
● Community++
● Polyglot
○ We used Groovy and Java
Vert.x - Positives
![Page 35: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/35.jpg)
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
![Page 36: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/36.jpg)
Vert.x - Scorecard
"It's perfect…. for the RIGHT use case."
![Page 37: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/37.jpg)
Chef
● Automates server configuration○ Centralised repo of pre-built recipes
○ Ruby based DSL
● Can also automate application deployment○ Run update to deploy config/binaries
![Page 38: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/38.jpg)
Chef - Positives
● Lots of Java/JVM recipes
● Ability to set roles and override properties
● Centrally controlled configuration
● Provides structure and deployment model
![Page 39: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/39.jpg)
Chef - Inconsistentknife cookbook upload apache2
knife role from file roles/foo/bar.rb
knife data bag from file users john.json
![Page 40: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/40.jpg)
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
![Page 41: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/41.jpg)
Chef - Scorecard
"Chef, it's way better than shell scripts"
![Page 42: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/42.jpg)
Common Bleeding Edge Themes1. Immaturity
2. Lack of tooling
3. Problems at the boundary
![Page 43: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/43.jpg)
The Status Quo
What is jClarity building?
How we picked Technology
Technology Scorecard
A Brave New World
![Page 44: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/44.jpg)
![Page 45: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/45.jpg)
Technology ←→ $$$$$$$
![Page 46: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/46.jpg)
What are you paying for?
● What does your support contract get you?
● Who does it get you?
● What’s the lock-in?
![Page 47: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/47.jpg)
A La Carte Open Source
● Popular with $0 budget startups
● Commercially funded tech
● Strong Community Support
● Benefits elsewhere
![Page 48: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/48.jpg)
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
![Page 49: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/49.jpg)
How do I do this?
● Low risk project○ 20% time?
● Ask for forgiveness, not permission!
● Don’t fear “them”
![Page 50: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/50.jpg)
![Page 51: The Bleeding Edge](https://reader034.vdocuments.site/reader034/viewer/2022042613/54c6420c4a79596b248b459a/html5/thumbnails/51.jpg)
Q&AGet your Free Trials at: http://www.jclarity.
com
@jclarity