SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
1IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Scalable and RestFul Web Apps
At the xroads of Kauri and Lily
&
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Speaker Context
Marc Portier, ±14 years of Java, XML based web
development. Co-founder of Outerthought.
• Outerthought?
– Innovative Content Management system that follows
ReST principles: “DaisyCMS”
– New ReST supporting development framework:
“Kauri project”
– Scalable Search and Store: “Lily Project”
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Looking for You!
• User, Contributor of
our Open Source
Projects
• Teacher, University,
School
• Student
• Talented worker
– Job openings!
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
The Wonderful
Web Machine
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Amazing Web
Supercalifragilisticexpialidocious !
FRANTIC
COMPLEX
UNMANAGEABLE
CHAOTIC
Heterogenous
Layered
Decentralized
Elegant Just Works
Extensible
Simple
Usable
Functional
Entertaining
Scalable
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
How does it keep up?
• Diversity / Compatibility
• Amount of Servers
• Amount of Users
• Amount of resources
• Response Times / Latency
Wouldn't you want to do that too?
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
In woodworking it's important
to work with the grain
of the wood.
The Web, too, has a grain, and
a RESTful web service is
one that works with it.
- Leonard Richardson
and Sam Ruby
RestFull Web Services
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Meeting high expectations
• Current web-experiences are spoiling us
– Google Maps
– Mash-ups
– Atom
– Amazon S3
• It all looks so simple (and mostly works)
• General customer feeling:
“How hard could it be?””
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Riding the
Web Project Wave
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
kauriproject.org
• Resource Oriented WebDevelopment PlatForm
• Spans WebServices (headless)
• and WebApplications (human consumer)
• Leverages modern and popular techniques and
systems
(+Jax-RS )
• Currently 0.4-RC2 – ( 0.4 upcoming )
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Heritage
Kauri
• Maven
• jQuery
• Spring Framework
• Restlet
Outerthought
• Apache Cocoon
• XReporter
• DaisyCms
➢ Build & Deploy
➢ Front-end Lib
➢ Dependency Injection
➢ REST API
➢ XML, URI Maps
➢ Statemanagement
➢ Runtime, RIA, ...
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Core Concepts
• modules,
– java/rest services,
– service containers,
– service wiring,
• prototyping,
• RIA,
• techniques
• routing, pages,
• templates
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Reuse Paradox
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Perfection is achieved,
not when there is
nothing more to add,
but when there is
nothing more to remove.
- Antoine de Saint-Exupery
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Plugable Systems
• Interfaces
• Implementations
• Wiring
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Challenges
• Jar Dependency Management
– Maven POM >> Deployment Descriptoor
– Runtime Shielding
• Java interface aspect (obvious)
• REST interface aspect
– RestService Notion (instantly web-distributed)
– URI-Templating:
/service/{rsrc_id}/aspect/{subresource}.json
– Wiring + internal protocol:
service:/
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Component Model: Modules
• Unit of reuse
• Maven managed JAR
• Service Interfaces
– Java aspect
– REST aspect
• Maps to One Spring
Container
• Has own classloading
scope
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Runtime System
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Attitude
• No Servlet container
– (Although Kauri Apps can be deployed to...)
– Servlets miss out on REST and IO threading
• Own Application Container
– Spring Based
• Enhanced with own injection directives
• Wrapped in managed classloading hierarchy
• Allows wiring between modules
– Maven Repository Based
– Required support for the REST aspect
– Advanced configuration
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Module vs. war
• war != jar
– Different layout
– =deployment unit != reuse/component unit
– Too high level for dependency shielding
• Deployment Strategy:
– conf/kauri/wiring.xml: deployment descriptor
– Reuse maven repository layout
– Different targets:
• Standalone, rpm, war,...
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Routing and Representations
• MVC-Split (Inspiration: Spring webmvc)
• Routing
– Groovy syntax support (builder @ init time)
– Request time: Java performance
– JaxRS support
• Separate Representation Builder
– Similar groovy syntax (again builder)
– Produces Representation
– Handle (presentation of) error conditions centrally
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Routing Samples
• Groovy router
• JaxRS
builder.router {
directory(uri: "/resources", root: "module:/resources/")
resource(uri: "/persons/{id}.html", ofClass: "com.foobar.Person")
}
@Path("/persons/{id}.html")
public class PersonResource {
@GET
@Produces("text/html")
public KauriRepresentation getPerson(
@PathParam("id") String idParam) {
....
}
}
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Pages & Prototyping
• Combination of
– Instant reload: module-source from FS vs. jar
– Intuitive FS based router
• pages/person/{id}.html.xml
– Advanced templates
– Simple mock-dataservice
• Entity modelling through sample json files
• Loaded in the templates via service:/
• Easily re-wired to JPA based implementation.
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Web Development Process
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Prototyping
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Continuous Prototyping
• -p prototype mode
– Possibility to blend and match production stuff with
new try-out stuff
• Pages router
– Invite in design-aware HTML/CSS/JS client hacker
with feeling for programming & FS based toolchain
• -s module-source.properties
– fast roundtrip mode directly mounted in the source
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Templating
• XML (tag) Based
– Conditionals, repeat, ...
– Security – protect,
• ${placeholder} replacement
– through el or groovy
– + Specific functions (i18n, config, publicUri, ...)
• + Add your own
• Noteworthy
– Page inheritance
– Local service loading
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Template Inheritance
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns:t="http://kauriproject.org/template"
t:inherit="module:/templates/layout/layout.xml">
<t:block name="title">My page</t:block>
<t:block name="main">My interesting content</t:block>
</html>
<?xml version="1.0"?>
<html xmlns:t="http://kauriproject.org/template">
<head>
<title>
<t:block name="title">The title</t:block>
</title>
</head>
<body>
<t:block name="main">Main content</t:block>
</body>
</html>
< base
“layout.xml”
usage >
“mypage.xml”
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Template Data-Loading
{
“name”: “Marc Portier”,
“city”: “Bredene”,
...
}
<?xml version="1.0"?>
<html xmlns:t="http://kauriproject.org/template">
<t:variable name="person"
src="service:/data/persons/${request.attributes.id}"
overwrite="false"
accept="application/json"/>
<body>
<h1>Person: ${person.name}</h1>
<p>City: ${person.city}</p>
</body>
</html>
Template : “persons/{id}.html.xml”
URI : “/persons/mpo.html”
Data : “mock/persons/mpo.json”
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Forms
• Browser-based Data Value Interaction System
• RIA approach
• jQuery Based
– UI effects & Controls
• Adds
– Standard rest-full ajax logic
– Validation (local and remote)
– Formatting
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Forms Sample
var fconf = {
createURI: "${publicUri('service:/data/contact/')}",
type: {
members: {
name: "string",
email: {
base: "string",
"+validators": { isEmail: {} },
label: "e-mail"
},
birthday: {
base: "date",
yearRange: "-100:+0",
label: "What is your date of birth?"
},
}
}};
Json Form-config:
HTML:
<form id=”myform” />
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Form Controls
• Simple
– Basic data-types
– Classic validations
– HTML basics
• Aggregates
– Collection
– Composite
– Choice
• + Add your own
• Specific
– GoogleMaps-Location
– Ajax based file-upload
– ...
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
More Kauri
• I18n support
• XML & HTML loading (and cleaning)
• Unified Configuration
• Unified Security
– Spring Security (ACEGI)
– Support for various mehanisms
• Basic, digest, https, form, ...
• Belgian e-ID
• Database resources (JPA)
• ...
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Future Kauri
• State management through temporary
resources
• More Advanced controls
• Functional Modules
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Kauri Goals
How
• All team members
• All project stages
• Efficiency
– Prototype as a design
mode
– Enhance, not throw
away
What
• ROA & RIA
• Modules
• Templates
• Data Interaction
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Observing the Obvious
• REST-full stateless
approach in web-
access layer pretends
“Ready for scale out”
• Shifting the problem
towards “Storage”
• ie. Indexed Storage
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Scalable Store and
Search
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
lilyproject.org
• Scalable Store AND Search
– Massively distributed searchable data store
• Blended HBASE with SOLR (shard), adding
– Schema with support for
• versioning, varianting and Blob handling
– 2ndary indices
– Rowlog/Queue for sync & async updates
– M/R batch re-indexing
• 0.2 since October 2010,
1.0 expected March 2011
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Scale on all ends
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Lily Core Concepts
● Storage
● Hbase
● repository model
● versioning, varianting, mixins
● Indexing
● Mapping
● Search
● SOLR
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Repository Model
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Mixins
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Sample Schema (json)
namespaces: {
/* Declaration of namespace prefixes. */
"org.lilyproject.bookssample": "b",
"org.lilyproject.vtag": "vtag"
},
fieldTypes: [
{
name: "b$title",
valueType: { primitive: "STRING" },
scope: "versioned"
},
{
name: "b$pages",
valueType: { primitive: "INTEGER" },
scope: "versioned"
},
{
name: "b$language",
valueType: { primitive: "STRING" },
scope: "versioned"
},
{
name: "b$authors",
valueType: { primitive: "LINK", multiValue: true },
scope: "versioned"
},
{
name: "b$name",
valueType: { primitive: "STRING" },
scope: "versioned"
},
{
name: "b$bio",
valueType: { primitive: "STRING" },
scope: "versioned"
},
{
name: "vtag$last",
valueType: { primitive: "LONG" },
scope: "non_versioned"
}
],
recordTypes: [
{
name: "b$Book",
fields: [
{name: "b$title", mandatory: true },
{name: "b$pages", mandatory: false },
{name: "b$language", mandatory: false },
{name: "b$authors", mandatory: false },
{name: "vtag$last", mandatory: false }
]
},
...
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Flexible content model
• generic enough to accomodate many popular
content schemas
– HTML5, CMIS, RDF, NewsML, Dublin Core, …
– academically verified (UGent MMLab / IBBT)
• developer convenience
– higher level constructs
– schema reuse
– versioning, linking, ...
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Lily Versioning
`
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Indexer
1. denormalize
2. multi-version
3. incremental
4. batch
5. extraction
6. sharded
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Lily and HBase
• adds high-level content model
– data types
– versioning
– blob storage on HDFS
• focus on sparse (efficient) storage
• RowLog for synchronous cross-table updates
and async message queues
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Lily and SOLR
• provides flexible mapping between HBase
content model and SOLR index fields
• interactive and batch (M/R) index maintenance
• sharding
• use(s) SOLR as-is: loose, flexible, extensible
coupling
• search access via SOLR (HTTP) API
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Lily Roadmap
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Time to take a ReST
Questions?

Más contenido relacionado

Destacado

Introduction to Spark Streaming
Introduction to Spark StreamingIntroduction to Spark Streaming
Introduction to Spark StreamingKnoldus Inc.
 
Talk to MOE educators@Singapore Science Centre for Animate@South Zone
Talk to MOE educators@Singapore Science Centre for Animate@South ZoneTalk to MOE educators@Singapore Science Centre for Animate@South Zone
Talk to MOE educators@Singapore Science Centre for Animate@South ZoneJames Chan
 
Couchbase Performance Benchmarking
Couchbase Performance BenchmarkingCouchbase Performance Benchmarking
Couchbase Performance BenchmarkingRenat Khasanshyn
 
Enabling value delivery at TransferWise
Enabling value delivery at TransferWiseEnabling value delivery at TransferWise
Enabling value delivery at TransferWiseAlvar Lumberg
 
Security and Privacy of Sensitive Data in Cloud Computing : A Survey of Recen...
Security and Privacy of Sensitive Data in Cloud Computing : A Survey of Recen...Security and Privacy of Sensitive Data in Cloud Computing : A Survey of Recen...
Security and Privacy of Sensitive Data in Cloud Computing : A Survey of Recen...csandit
 
Building Large-Scale Stream Infrastructures Across Multiple Data Centers with...
Building Large-Scale Stream Infrastructures Across Multiple Data Centers with...Building Large-Scale Stream Infrastructures Across Multiple Data Centers with...
Building Large-Scale Stream Infrastructures Across Multiple Data Centers with...DataWorks Summit/Hadoop Summit
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 

Destacado (8)

Introduction to Spark Streaming
Introduction to Spark StreamingIntroduction to Spark Streaming
Introduction to Spark Streaming
 
Why Startups?
Why Startups?Why Startups?
Why Startups?
 
Talk to MOE educators@Singapore Science Centre for Animate@South Zone
Talk to MOE educators@Singapore Science Centre for Animate@South ZoneTalk to MOE educators@Singapore Science Centre for Animate@South Zone
Talk to MOE educators@Singapore Science Centre for Animate@South Zone
 
Couchbase Performance Benchmarking
Couchbase Performance BenchmarkingCouchbase Performance Benchmarking
Couchbase Performance Benchmarking
 
Enabling value delivery at TransferWise
Enabling value delivery at TransferWiseEnabling value delivery at TransferWise
Enabling value delivery at TransferWise
 
Security and Privacy of Sensitive Data in Cloud Computing : A Survey of Recen...
Security and Privacy of Sensitive Data in Cloud Computing : A Survey of Recen...Security and Privacy of Sensitive Data in Cloud Computing : A Survey of Recen...
Security and Privacy of Sensitive Data in Cloud Computing : A Survey of Recen...
 
Building Large-Scale Stream Infrastructures Across Multiple Data Centers with...
Building Large-Scale Stream Infrastructures Across Multiple Data Centers with...Building Large-Scale Stream Infrastructures Across Multiple Data Centers with...
Building Large-Scale Stream Infrastructures Across Multiple Data Centers with...
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 

Similar a Devoxx 2010 | Tools In Action : Kauri and Lily

Lily for the Bay Area HBase UG - NYC edition
Lily for the Bay Area HBase UG - NYC editionLily for the Bay Area HBase UG - NYC edition
Lily for the Bay Area HBase UG - NYC editionNGDATA
 
Hadoop World 2011: Lily: Smart Data at Scale, Made Easy
Hadoop World 2011: Lily: Smart Data at Scale, Made EasyHadoop World 2011: Lily: Smart Data at Scale, Made Easy
Hadoop World 2011: Lily: Smart Data at Scale, Made EasyCloudera, Inc.
 
KVIV / NoSQL : the new generation of database servers
KVIV / NoSQL : the new generation of database serversKVIV / NoSQL : the new generation of database servers
KVIV / NoSQL : the new generation of database serversNGDATA
 
Outerthought / Lily Partnerships
Outerthought / Lily PartnershipsOuterthought / Lily Partnerships
Outerthought / Lily PartnershipsNGDATA
 
N-O-SQL, new database technologies on the rise
N-O-SQL, new database technologies on the riseN-O-SQL, new database technologies on the rise
N-O-SQL, new database technologies on the riseNGDATA
 
Building a CMS on top of NoSQL (for ParisJUG)
Building a CMS on top of NoSQL (for ParisJUG)Building a CMS on top of NoSQL (for ParisJUG)
Building a CMS on top of NoSQL (for ParisJUG)NGDATA
 
Lily @ Work Webinar
Lily @ Work WebinarLily @ Work Webinar
Lily @ Work WebinarNGDATA
 
NoSQL intro for YaJUG / NoSQL UG Luxembourg
NoSQL intro for YaJUG / NoSQL UG LuxembourgNoSQL intro for YaJUG / NoSQL UG Luxembourg
NoSQL intro for YaJUG / NoSQL UG LuxembourgNGDATA
 
Welcome to the Age of Data
Welcome to the Age of DataWelcome to the Age of Data
Welcome to the Age of DataNGDATA
 
Microservices in the Enterprise
Microservices in the Enterprise Microservices in the Enterprise
Microservices in the Enterprise Jesus Rodriguez
 
BDTC2015 hulu-梁宇明-voidbox - docker on yarn
BDTC2015 hulu-梁宇明-voidbox - docker on yarnBDTC2015 hulu-梁宇明-voidbox - docker on yarn
BDTC2015 hulu-梁宇明-voidbox - docker on yarnJerry Wen
 
NoSQL with Hadoop and HBase
NoSQL with Hadoop and HBaseNoSQL with Hadoop and HBase
NoSQL with Hadoop and HBaseNGDATA
 
Cloud Native Application Development - build fast, cheap, scalable and agile ...
Cloud Native Application Development - build fast, cheap, scalable and agile ...Cloud Native Application Development - build fast, cheap, scalable and agile ...
Cloud Native Application Development - build fast, cheap, scalable and agile ...Lucas Jellema
 
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignalITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignalITCamp
 
Evolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.jsEvolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.jsSteve Jamieson
 
KubeCon USA 2017 brief Overview - from Kubernetes meetup Bangalore
KubeCon USA 2017 brief Overview - from Kubernetes meetup BangaloreKubeCon USA 2017 brief Overview - from Kubernetes meetup Bangalore
KubeCon USA 2017 brief Overview - from Kubernetes meetup BangaloreKrishna-Kumar
 
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalBuilding modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalAlessandro Pilotti
 
Some Observations on Common Patterns in Information Technology
Some Observations on Common Patterns in Information TechnologySome Observations on Common Patterns in Information Technology
Some Observations on Common Patterns in Information TechnologyFranz-Josef Behr
 

Similar a Devoxx 2010 | Tools In Action : Kauri and Lily (20)

Lily for the Bay Area HBase UG - NYC edition
Lily for the Bay Area HBase UG - NYC editionLily for the Bay Area HBase UG - NYC edition
Lily for the Bay Area HBase UG - NYC edition
 
Hadoop World 2011: Lily: Smart Data at Scale, Made Easy
Hadoop World 2011: Lily: Smart Data at Scale, Made EasyHadoop World 2011: Lily: Smart Data at Scale, Made Easy
Hadoop World 2011: Lily: Smart Data at Scale, Made Easy
 
KVIV / NoSQL : the new generation of database servers
KVIV / NoSQL : the new generation of database serversKVIV / NoSQL : the new generation of database servers
KVIV / NoSQL : the new generation of database servers
 
Outerthought / Lily Partnerships
Outerthought / Lily PartnershipsOuterthought / Lily Partnerships
Outerthought / Lily Partnerships
 
N-O-SQL, new database technologies on the rise
N-O-SQL, new database technologies on the riseN-O-SQL, new database technologies on the rise
N-O-SQL, new database technologies on the rise
 
Building a CMS on top of NoSQL (for ParisJUG)
Building a CMS on top of NoSQL (for ParisJUG)Building a CMS on top of NoSQL (for ParisJUG)
Building a CMS on top of NoSQL (for ParisJUG)
 
Lily @ Work Webinar
Lily @ Work WebinarLily @ Work Webinar
Lily @ Work Webinar
 
NoSQL intro for YaJUG / NoSQL UG Luxembourg
NoSQL intro for YaJUG / NoSQL UG LuxembourgNoSQL intro for YaJUG / NoSQL UG Luxembourg
NoSQL intro for YaJUG / NoSQL UG Luxembourg
 
OGCE SC10
OGCE SC10OGCE SC10
OGCE SC10
 
Welcome to the Age of Data
Welcome to the Age of DataWelcome to the Age of Data
Welcome to the Age of Data
 
Microservices in the Enterprise
Microservices in the Enterprise Microservices in the Enterprise
Microservices in the Enterprise
 
BDTC2015 hulu-梁宇明-voidbox - docker on yarn
BDTC2015 hulu-梁宇明-voidbox - docker on yarnBDTC2015 hulu-梁宇明-voidbox - docker on yarn
BDTC2015 hulu-梁宇明-voidbox - docker on yarn
 
NoSQL with Hadoop and HBase
NoSQL with Hadoop and HBaseNoSQL with Hadoop and HBase
NoSQL with Hadoop and HBase
 
Cloud Native Application Development - build fast, cheap, scalable and agile ...
Cloud Native Application Development - build fast, cheap, scalable and agile ...Cloud Native Application Development - build fast, cheap, scalable and agile ...
Cloud Native Application Development - build fast, cheap, scalable and agile ...
 
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignalITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
ITCamp 2012 - Alessandro Pilotti - Web API, web sockets and RSignal
 
Evolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.jsEvolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.js
 
Overkill Analytics
Overkill AnalyticsOverkill Analytics
Overkill Analytics
 
KubeCon USA 2017 brief Overview - from Kubernetes meetup Bangalore
KubeCon USA 2017 brief Overview - from Kubernetes meetup BangaloreKubeCon USA 2017 brief Overview - from Kubernetes meetup Bangalore
KubeCon USA 2017 brief Overview - from Kubernetes meetup Bangalore
 
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignalBuilding modern web sites with ASP .Net Web API, WebSockets and RSignal
Building modern web sites with ASP .Net Web API, WebSockets and RSignal
 
Some Observations on Common Patterns in Information Technology
Some Observations on Common Patterns in Information TechnologySome Observations on Common Patterns in Information Technology
Some Observations on Common Patterns in Information Technology
 

Más de NGDATA

NGDATA Corporate Presentation
NGDATA Corporate PresentationNGDATA Corporate Presentation
NGDATA Corporate PresentationNGDATA
 
The Lily RowLog library
The Lily RowLog libraryThe Lily RowLog library
The Lily RowLog libraryNGDATA
 
From Content Storage to Scaling Smart Data
From Content Storage to Scaling Smart DataFrom Content Storage to Scaling Smart Data
From Content Storage to Scaling Smart DataNGDATA
 
20110514 appsforghent
20110514 appsforghent20110514 appsforghent
20110514 appsforghentNGDATA
 
Big Data
Big DataBig Data
Big DataNGDATA
 
Lily at HUG UK
Lily at HUG UKLily at HUG UK
Lily at HUG UKNGDATA
 
Devoxx 2010 | Tools In Action : Kauri and Lily
Devoxx 2010 | Tools In Action : Kauri and LilyDevoxx 2010 | Tools In Action : Kauri and Lily
Devoxx 2010 | Tools In Action : Kauri and LilyNGDATA
 
Learning Lessons: Building a CMS on top of NoSQL technologies
Learning Lessons: Building a CMS on top of NoSQL technologiesLearning Lessons: Building a CMS on top of NoSQL technologies
Learning Lessons: Building a CMS on top of NoSQL technologiesNGDATA
 
NoSQL BOF at Devoxx
NoSQL BOF at DevoxxNoSQL BOF at Devoxx
NoSQL BOF at DevoxxNGDATA
 
NoSQL "Tools in Action" talk at Devoxx
NoSQL "Tools in Action" talk at DevoxxNoSQL "Tools in Action" talk at Devoxx
NoSQL "Tools in Action" talk at DevoxxNGDATA
 

Más de NGDATA (10)

NGDATA Corporate Presentation
NGDATA Corporate PresentationNGDATA Corporate Presentation
NGDATA Corporate Presentation
 
The Lily RowLog library
The Lily RowLog libraryThe Lily RowLog library
The Lily RowLog library
 
From Content Storage to Scaling Smart Data
From Content Storage to Scaling Smart DataFrom Content Storage to Scaling Smart Data
From Content Storage to Scaling Smart Data
 
20110514 appsforghent
20110514 appsforghent20110514 appsforghent
20110514 appsforghent
 
Big Data
Big DataBig Data
Big Data
 
Lily at HUG UK
Lily at HUG UKLily at HUG UK
Lily at HUG UK
 
Devoxx 2010 | Tools In Action : Kauri and Lily
Devoxx 2010 | Tools In Action : Kauri and LilyDevoxx 2010 | Tools In Action : Kauri and Lily
Devoxx 2010 | Tools In Action : Kauri and Lily
 
Learning Lessons: Building a CMS on top of NoSQL technologies
Learning Lessons: Building a CMS on top of NoSQL technologiesLearning Lessons: Building a CMS on top of NoSQL technologies
Learning Lessons: Building a CMS on top of NoSQL technologies
 
NoSQL BOF at Devoxx
NoSQL BOF at DevoxxNoSQL BOF at Devoxx
NoSQL BOF at Devoxx
 
NoSQL "Tools in Action" talk at Devoxx
NoSQL "Tools in Action" talk at DevoxxNoSQL "Tools in Action" talk at Devoxx
NoSQL "Tools in Action" talk at Devoxx
 

Último

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Último (20)

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

Devoxx 2010 | Tools In Action : Kauri and Lily

  • 1. 1IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Scalable and RestFul Web Apps At the xroads of Kauri and Lily &
  • 2. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Speaker Context Marc Portier, ±14 years of Java, XML based web development. Co-founder of Outerthought. • Outerthought? – Innovative Content Management system that follows ReST principles: “DaisyCMS” – New ReST supporting development framework: “Kauri project” – Scalable Search and Store: “Lily Project”
  • 3. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Looking for You! • User, Contributor of our Open Source Projects • Teacher, University, School • Student • Talented worker – Job openings!
  • 4. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org The Wonderful Web Machine
  • 5. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Amazing Web Supercalifragilisticexpialidocious ! FRANTIC COMPLEX UNMANAGEABLE CHAOTIC Heterogenous Layered Decentralized Elegant Just Works Extensible Simple Usable Functional Entertaining Scalable
  • 6. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org How does it keep up? • Diversity / Compatibility • Amount of Servers • Amount of Users • Amount of resources • Response Times / Latency Wouldn't you want to do that too?
  • 7. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org In woodworking it's important to work with the grain of the wood. The Web, too, has a grain, and a RESTful web service is one that works with it. - Leonard Richardson and Sam Ruby RestFull Web Services
  • 8. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Meeting high expectations • Current web-experiences are spoiling us – Google Maps – Mash-ups – Atom – Amazon S3 • It all looks so simple (and mostly works) • General customer feeling: “How hard could it be?””
  • 9. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Riding the Web Project Wave
  • 10. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org kauriproject.org • Resource Oriented WebDevelopment PlatForm • Spans WebServices (headless) • and WebApplications (human consumer) • Leverages modern and popular techniques and systems (+Jax-RS ) • Currently 0.4-RC2 – ( 0.4 upcoming )
  • 11. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Heritage Kauri • Maven • jQuery • Spring Framework • Restlet Outerthought • Apache Cocoon • XReporter • DaisyCms ➢ Build & Deploy ➢ Front-end Lib ➢ Dependency Injection ➢ REST API ➢ XML, URI Maps ➢ Statemanagement ➢ Runtime, RIA, ...
  • 12. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Core Concepts • modules, – java/rest services, – service containers, – service wiring, • prototyping, • RIA, • techniques • routing, pages, • templates
  • 13. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Reuse Paradox
  • 14. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Perfection is achieved, not when there is nothing more to add, but when there is nothing more to remove. - Antoine de Saint-Exupery
  • 15. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Plugable Systems • Interfaces • Implementations • Wiring
  • 16. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Challenges • Jar Dependency Management – Maven POM >> Deployment Descriptoor – Runtime Shielding • Java interface aspect (obvious) • REST interface aspect – RestService Notion (instantly web-distributed) – URI-Templating: /service/{rsrc_id}/aspect/{subresource}.json – Wiring + internal protocol: service:/
  • 17. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Component Model: Modules • Unit of reuse • Maven managed JAR • Service Interfaces – Java aspect – REST aspect • Maps to One Spring Container • Has own classloading scope
  • 18. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Runtime System
  • 19. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Attitude • No Servlet container – (Although Kauri Apps can be deployed to...) – Servlets miss out on REST and IO threading • Own Application Container – Spring Based • Enhanced with own injection directives • Wrapped in managed classloading hierarchy • Allows wiring between modules – Maven Repository Based – Required support for the REST aspect – Advanced configuration
  • 20. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Module vs. war • war != jar – Different layout – =deployment unit != reuse/component unit – Too high level for dependency shielding • Deployment Strategy: – conf/kauri/wiring.xml: deployment descriptor – Reuse maven repository layout – Different targets: • Standalone, rpm, war,...
  • 21. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Routing and Representations • MVC-Split (Inspiration: Spring webmvc) • Routing – Groovy syntax support (builder @ init time) – Request time: Java performance – JaxRS support • Separate Representation Builder – Similar groovy syntax (again builder) – Produces Representation – Handle (presentation of) error conditions centrally
  • 22. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Routing Samples • Groovy router • JaxRS builder.router { directory(uri: "/resources", root: "module:/resources/") resource(uri: "/persons/{id}.html", ofClass: "com.foobar.Person") } @Path("/persons/{id}.html") public class PersonResource { @GET @Produces("text/html") public KauriRepresentation getPerson( @PathParam("id") String idParam) { .... } }
  • 23. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Pages & Prototyping • Combination of – Instant reload: module-source from FS vs. jar – Intuitive FS based router • pages/person/{id}.html.xml – Advanced templates – Simple mock-dataservice • Entity modelling through sample json files • Loaded in the templates via service:/ • Easily re-wired to JPA based implementation.
  • 24. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Web Development Process
  • 25. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Prototyping
  • 26. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Continuous Prototyping • -p prototype mode – Possibility to blend and match production stuff with new try-out stuff • Pages router – Invite in design-aware HTML/CSS/JS client hacker with feeling for programming & FS based toolchain • -s module-source.properties – fast roundtrip mode directly mounted in the source
  • 27. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Templating • XML (tag) Based – Conditionals, repeat, ... – Security – protect, • ${placeholder} replacement – through el or groovy – + Specific functions (i18n, config, publicUri, ...) • + Add your own • Noteworthy – Page inheritance – Local service loading
  • 28. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Template Inheritance <?xml version="1.0" encoding="UTF-8"?> <html xmlns:t="http://kauriproject.org/template" t:inherit="module:/templates/layout/layout.xml"> <t:block name="title">My page</t:block> <t:block name="main">My interesting content</t:block> </html> <?xml version="1.0"?> <html xmlns:t="http://kauriproject.org/template"> <head> <title> <t:block name="title">The title</t:block> </title> </head> <body> <t:block name="main">Main content</t:block> </body> </html> < base “layout.xml” usage > “mypage.xml”
  • 29. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Template Data-Loading { “name”: “Marc Portier”, “city”: “Bredene”, ... } <?xml version="1.0"?> <html xmlns:t="http://kauriproject.org/template"> <t:variable name="person" src="service:/data/persons/${request.attributes.id}" overwrite="false" accept="application/json"/> <body> <h1>Person: ${person.name}</h1> <p>City: ${person.city}</p> </body> </html> Template : “persons/{id}.html.xml” URI : “/persons/mpo.html” Data : “mock/persons/mpo.json”
  • 30. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Forms • Browser-based Data Value Interaction System • RIA approach • jQuery Based – UI effects & Controls • Adds – Standard rest-full ajax logic – Validation (local and remote) – Formatting
  • 31. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Forms Sample var fconf = { createURI: "${publicUri('service:/data/contact/')}", type: { members: { name: "string", email: { base: "string", "+validators": { isEmail: {} }, label: "e-mail" }, birthday: { base: "date", yearRange: "-100:+0", label: "What is your date of birth?" }, } }}; Json Form-config: HTML: <form id=”myform” />
  • 32. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Form Controls • Simple – Basic data-types – Classic validations – HTML basics • Aggregates – Collection – Composite – Choice • + Add your own • Specific – GoogleMaps-Location – Ajax based file-upload – ...
  • 33. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org More Kauri • I18n support • XML & HTML loading (and cleaning) • Unified Configuration • Unified Security – Spring Security (ACEGI) – Support for various mehanisms • Basic, digest, https, form, ... • Belgian e-ID • Database resources (JPA) • ...
  • 34. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Future Kauri • State management through temporary resources • More Advanced controls • Functional Modules
  • 35. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Kauri Goals How • All team members • All project stages • Efficiency – Prototype as a design mode – Enhance, not throw away What • ROA & RIA • Modules • Templates • Data Interaction
  • 36. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Observing the Obvious • REST-full stateless approach in web- access layer pretends “Ready for scale out” • Shifting the problem towards “Storage” • ie. Indexed Storage
  • 37. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Scalable Store and Search
  • 38. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org lilyproject.org • Scalable Store AND Search – Massively distributed searchable data store • Blended HBASE with SOLR (shard), adding – Schema with support for • versioning, varianting and Blob handling – 2ndary indices – Rowlog/Queue for sync & async updates – M/R batch re-indexing • 0.2 since October 2010, 1.0 expected March 2011
  • 39. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Scale on all ends
  • 40. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Lily Core Concepts ● Storage ● Hbase ● repository model ● versioning, varianting, mixins ● Indexing ● Mapping ● Search ● SOLR
  • 41. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Repository Model
  • 42. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Mixins
  • 43. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Sample Schema (json) namespaces: { /* Declaration of namespace prefixes. */ "org.lilyproject.bookssample": "b", "org.lilyproject.vtag": "vtag" }, fieldTypes: [ { name: "b$title", valueType: { primitive: "STRING" }, scope: "versioned" }, { name: "b$pages", valueType: { primitive: "INTEGER" }, scope: "versioned" }, { name: "b$language", valueType: { primitive: "STRING" }, scope: "versioned" }, { name: "b$authors", valueType: { primitive: "LINK", multiValue: true }, scope: "versioned" }, { name: "b$name", valueType: { primitive: "STRING" }, scope: "versioned" }, { name: "b$bio", valueType: { primitive: "STRING" }, scope: "versioned" }, { name: "vtag$last", valueType: { primitive: "LONG" }, scope: "non_versioned" } ], recordTypes: [ { name: "b$Book", fields: [ {name: "b$title", mandatory: true }, {name: "b$pages", mandatory: false }, {name: "b$language", mandatory: false }, {name: "b$authors", mandatory: false }, {name: "vtag$last", mandatory: false } ] }, ...
  • 44. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Flexible content model • generic enough to accomodate many popular content schemas – HTML5, CMIS, RDF, NewsML, Dublin Core, … – academically verified (UGent MMLab / IBBT) • developer convenience – higher level constructs – schema reuse – versioning, linking, ...
  • 45. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Lily Versioning `
  • 46. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Indexer 1. denormalize 2. multi-version 3. incremental 4. batch 5. extraction 6. sharded
  • 47. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Lily and HBase • adds high-level content model – data types – versioning – blob storage on HDFS • focus on sparse (efficient) storage • RowLog for synchronous cross-table updates and async message queues
  • 48. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Lily and SOLR • provides flexible mapping between HBase content model and SOLR index fields • interactive and batch (M/R) index maintenance • sharding • use(s) SOLR as-is: loose, flexible, extensible coupling • search access via SOLR (HTTP) API
  • 49. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Lily Roadmap
  • 50. IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org Time to take a ReST Questions?