Top Banner
joola.io Workshops Technical Review of joola.io Workshop Details and Instructions
43

[DRAFT] Workshop - Technical Introduction to joola.io

Jan 17, 2015

Download

Technology

Itay Weinberger

This workshop focuses on hands-on introduction to joola.io

For a complete breakdown of the Workshop itself, refer to the project's wiki @ http://github.com/joola/joola.io/wiki/workshops
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: [DRAFT] Workshop - Technical Introduction to joola.io

joola.ioWorkshopsTechnicalReviewofjoola.io

WorkshopDetailsandInstructions

Page 2: [DRAFT] Workshop - Technical Introduction to joola.io

Preface

Page 3: [DRAFT] Workshop - Technical Introduction to joola.io

AbouttheworkshopThisisahands-onworkshop

Labmaterialsareavailableforthisworkshop

ThisworkshopandmaterialsareavailableonourGitHubrepo

Page 4: [DRAFT] Workshop - Technical Introduction to joola.io

WorkshopGoalsUnderstandjoola.ioonallofitscomponents

Beabletodeployjoola.io

PushandQuerydatafromthesystem

DrawbasicVisualizations

Page 5: [DRAFT] Workshop - Technical Introduction to joola.io

LabDetailsDuringthisworkshopwe'llbeaccessinganonlinelab

[email protected]

Password:password

*accesstotheabovelabis whitelis ted

Page 6: [DRAFT] Workshop - Technical Introduction to joola.io

Understandingjoola.io

Page 7: [DRAFT] Workshop - Technical Introduction to joola.io

Whatisjoola.io?$npminstalljoola.io

FeaturepackedDataAnalyticsandVisualizationFramework

WritteninNode.JS

Scalabletodealwithhighvolumesofdataandrealt imequeries

Secureandmulti-tenant

Embedandintegratedatavisualizationsintoexistingsitesandapps

OpenSource

Page 8: [DRAFT] Workshop - Technical Introduction to joola.io

Howdoesitwork?OperatesandmanagedviaasetofHTTPAPIendpoints

DatapushedusingJSONviajoola.io'sBeaconAPI

Storedincachinglayer,optim izedforquery

QueriesandVisualizationsprovidedbyJavascriptSDK

That'sallinanutshell!

Page 9: [DRAFT] Workshop - Technical Introduction to joola.io

DeveloperFriendlyByDataLoversforDevelopers

Easeofuse

Extend

EmbedandIntegrate

Sitespecificautomatedtesting

Richdocumentation

Page 10: [DRAFT] Workshop - Technical Introduction to joola.io

ITFriendlyMasterlessgrid

Easyinstallation

Zeroconfiguration

PowerfulCLI

Smallfootprint

Monitor,AlertsandLogs

Page 11: [DRAFT] Workshop - Technical Introduction to joola.io

DBAFriendlyEasyDataModelling

Schema-less

Flexible

Zerodowntimeupdates

Completecontrol

Page 12: [DRAFT] Workshop - Technical Introduction to joola.io

Dispatch

Page 13: [DRAFT] Workshop - Technical Introduction to joola.io

NodesEverywhereEachnodeisafullyfunctioningjoola.iosystem

CommunicationisbasedonPub/Sub

Anodeneedstoqualifyforexeuction

Qualificationcanvaryandbeextended

Geopriorit ization

Page 14: [DRAFT] Workshop - Technical Introduction to joola.io

DispatchRoutingEveryactionisamessage

Allmessagesaredistributed

Messagescontainsecuritycontext

Default`notme handlinglogic

Backlogprocessingofstuckmessages

Page 15: [DRAFT] Workshop - Technical Introduction to joola.io

CommandtheGridUseREPL,CLIorSDK

$joola.io.c li

joola.io#admin@localhost:8080>joolaio.system.lis tnodes();joola.io#admin@localhost:8080>joolaio.system.terminate('nodeuid');

Whenyou'reconnectedtoonenode,you'reconnectedtotheGrid

Noactionisexecutedonthelocalnode,butdispatched

Allnodessubscribetoconfigurationchanges

Page 16: [DRAFT] Workshop - Technical Introduction to joola.io

Node.JS'EventLoopBlockManyconsiderasNode.JS'achil lesheel,wedon't

TheGridandPub/Subapproachresolvesthecoreissue

ELBcountersandmonitors

Usingtherighttoolforthejob

Madeoursoftwarebetter

Page 17: [DRAFT] Workshop - Technical Introduction to joola.io

Accessingjoola.ioViaHTTPAPIendpoints

UseSDK,CLI,cURLorwriteyourown

ShippedwithWebAdminconsole

Out-of-the-boxfullyfunctioninganalyticssite

Richdocumentation

Page 18: [DRAFT] Workshop - Technical Introduction to joola.io

PushingData

Page 19: [DRAFT] Workshop - Technical Introduction to joola.io

PushingDataisEasyjoolaio.beacon.insert('collection-purchases',{timestamp:newDate(),Player:{Username:'Aplayer',Device:'Desktop',Browser:'Chrome'},ip:'127.0.0.1',Vis its :1,Vis itDuration:123,Clicks:23,Purhcases:{Amount:123Currency:'USD',Status:'Processed'}}});

Page 20: [DRAFT] Workshop - Technical Introduction to joola.io

DataModellingDescribeyourdataasaJSONdocument(s)

DocumentsarestoredinaCollection

Schema-less,documentscanbeofdifferentstructure

Supportforalldatatypes

SupportforStrong-Typedcollections

Page 21: [DRAFT] Workshop - Technical Introduction to joola.io

PushWhatYou'llNeedStoreonlydatarelatingtoAnalytics

Separateintologicalcollections

Describeeverymetricwithasmanyattributesaspossible

Passrawdata,don'taggregate

Pushanarrayofdocumentswhenpossible

Page 22: [DRAFT] Workshop - Technical Introduction to joola.io

CachingLayerBasedonleadingproviders,suchasMongoDB,Cassandraandmore

Extendtosupportaddit ional

Insert,updateanddeletedirectlyfromcache

Executequeriesdirectlyoncachinglayer

NormalizedaccesstounderlyingcacheviaBeaconAPI

Page 23: [DRAFT] Workshop - Technical Introduction to joola.io

Query

Page 24: [DRAFT] Workshop - Technical Introduction to joola.io

UnderstandingQueriesDescribewhatyouwishtodisplay,ratherthanhowtogetit (SQL)

SupportforRealt ime(WebSocket)

Joindatafrommultiplecollections

Relativet imeframes

Advancedfi lters

DimensionandMetrictransformations

Manyaggregationoperators,includingUniqueCount

Page 25: [DRAFT] Workshop - Technical Introduction to joola.io

BasicQueryDescribetherequireddimensionsandmetric,nothowtoquerythemjoolaio.query.fetch({timeframe:'last_month',interval:'days ',dimensions:['timestamp','device'],metrics:['v is its ',{key:'avgvis itduration',name:'Avg.Vis itDuration',dependsOn:'v is itduration',aggregation:'avg',suffix :'ms.'}]},function(err,result){console.log(result.documents);});

Page 26: [DRAFT] Workshop - Technical Introduction to joola.io

CalculatedMetricsComposevirtual,calculatedmetricson-the-fly

metrics:[{key:'avgamountperplayer',name:'Avg.AmountperPlayer',formula:{dependsOn:[{key:'avgamount',dependsOn:'Purchase.Amount',aggregation:'avg'},{key:'playercount',dependsOn:'Player.Username',aggregation:'ucount'}],run:'function(avgamount,playercount){returnavgamount/playercount;}'}}]

Page 27: [DRAFT] Workshop - Technical Introduction to joola.io

QueryFiltersMultiplefi lters-mutli-levelfi lters-permetricfi lters

timeframe:'last_month',interval:'days ',metrics:[{key:'playercount',dependsOn:'Player.Username',aggregation:'ucount',filter:[['Player.Browser','eq','Chrome']]}],filter:[['Player.Device','eq','Desktop']]

Page 28: [DRAFT] Workshop - Technical Introduction to joola.io

QueryResultsContainretrieveddocumentsandmeta-datadescribingthequeryanditst im ings.

Resultscontainbothrawandformattedvalues.results :[{values:{timestamp:'2014-03-09T14:03:34.412Z',avgduration:'123ms.'},formattedValues:{timestamp:'SunMar09201415:03:34GMT+0100(CET)',avgduration:123'}},{...}]

Page 29: [DRAFT] Workshop - Technical Introduction to joola.io

RealtimeBuilt-inintoallvisualizationsandintegralpartofquery.fetchjoolaio.query.fetch({//queryparams,suchastimeframe,metrics,etc...realtime:true});

Firstexecutionreturnsentiret imeframe

Followingpacketsreturnonlydelta

Dataconsistencyassurance

Page 30: [DRAFT] Workshop - Technical Introduction to joola.io

Visualization

Page 31: [DRAFT] Workshop - Technical Introduction to joola.io

PlottingDataPartoftheJavascriptSDK

Easyascopy-paste

Shapetothedesiredlook,feelandbehavior

OffersjQueryplugins

RichDocumentationandPlayground

Page 32: [DRAFT] Workshop - Technical Introduction to joola.io

VisualizationTypesMetricBox

Sparkline

PieChart

Timeline

Table

Page 33: [DRAFT] Workshop - Technical Introduction to joola.io

DrawingaVisualizationEasyasacopy-pastingfromthewiki

AcceptsaQueryobjectandaddit ionalformattingoptionsjoolaio.v iz .timeline({container:document.getElementById('drawhere'),query:{dimensions:['timestamp'],metrics:['value']});

UsesHTML5,supportsalldevicetypes(mobiles,tablets)

Page 34: [DRAFT] Workshop - Technical Introduction to joola.io

Integrate,EmbedandExtend

Page 35: [DRAFT] Workshop - Technical Introduction to joola.io

IntegrateDesignedandbuilt forintegration

Pushdatafromanydatasourcetypewhilekeepingcontroloflogic

Supportforhigh-ratedistributed,guaranteedwrites

JSONcollectionsprovideflexibil ityandsitespecificintegration

Collectdatafromallpartsofthebusiness

Leveragejoola.iotoreduceoverheadofoperationaldatabases

Page 36: [DRAFT] Workshop - Technical Introduction to joola.io

EmbedSeamlessdrop-invisualizationsinyoursiteandapps

Eventdrivencommunicationwithcontainerpage

Copy-pastefromwiki

Onlyfront-enddevelopersareneeded,reduceDBAoverhead

Controlthet iniestdetailoflook,feelandflow

Responsive,HTML5,CSS3standards

Page 37: [DRAFT] Workshop - Technical Introduction to joola.io

ExtendMissingafeature?

Easytolearninfrastructureandcode

Followsbestpracticesguidelinesandmethodology

Accesstosourcecode,issues,wikiandknow-how

Contributetoopensourceproject

Extendanythingfromcachinglayertovisualizations

Page 38: [DRAFT] Workshop - Technical Introduction to joola.io

EndlessPossibilities

Page 39: [DRAFT] Workshop - Technical Introduction to joola.io

Analytics-as-a-ServiceOfferanalyticsandvisualizationstoyourend-users

Scalableandredundanttosupportverylargeoperations

Multi-tenantandsecure

Easybrandingandclientintegration

Page 40: [DRAFT] Workshop - Technical Introduction to joola.io

WebAnalyticsEasytosetupandconfiguration

Gatherandjoinmultipledatasourcesintoasinglestorejoolaio.beacon.insert('performance',window.performance);

Setupalertsonspecificuseractivityorthreshold

Page 41: [DRAFT] Workshop - Technical Introduction to joola.io

AdServingNoneedtopre-determineaudiencesandsegments

Leveragesplit secondqueryt imes

Applyadvancedfi ltersandsegmentsinrealt ime

Determinebestmatchbyunlim itedparameters

Performfull/partialsegmentationon-the-fly

Page 42: [DRAFT] Workshop - Technical Introduction to joola.io

InfographicsOffer"l ive"infographics

Combinerealt imecalculationsintostaticcontent

Segmentedinfographics

Secure/multi-tenantinfographics

Page 43: [DRAFT] Workshop - Technical Introduction to joola.io

THANKYOUVisitourGitHubtoreadmoreaboutjoola.io