[draft] workshop - technical introduction to joola.io
DESCRIPTION
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/workshopsTRANSCRIPT
![Page 1: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/1.jpg)
joola.ioWorkshopsTechnicalReviewofjoola.io
WorkshopDetailsandInstructions
![Page 2: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/2.jpg)
Preface
![Page 3: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/3.jpg)
AbouttheworkshopThisisahands-onworkshop
Labmaterialsareavailableforthisworkshop
ThisworkshopandmaterialsareavailableonourGitHubrepo
![Page 4: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/4.jpg)
WorkshopGoalsUnderstandjoola.ioonallofitscomponents
Beabletodeployjoola.io
PushandQuerydatafromthesystem
DrawbasicVisualizations
![Page 5: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/5.jpg)
LabDetailsDuringthisworkshopwe'llbeaccessinganonlinelab
Password:password
*accesstotheabovelabis whitelis ted
![Page 6: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/6.jpg)
Understandingjoola.io
![Page 7: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/7.jpg)
Whatisjoola.io?$npminstalljoola.io
FeaturepackedDataAnalyticsandVisualizationFramework
WritteninNode.JS
Scalabletodealwithhighvolumesofdataandrealt imequeries
Secureandmulti-tenant
Embedandintegratedatavisualizationsintoexistingsitesandapps
OpenSource
![Page 8: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/8.jpg)
Howdoesitwork?OperatesandmanagedviaasetofHTTPAPIendpoints
DatapushedusingJSONviajoola.io'sBeaconAPI
Storedincachinglayer,optim izedforquery
QueriesandVisualizationsprovidedbyJavascriptSDK
That'sallinanutshell!
![Page 9: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/9.jpg)
DeveloperFriendlyByDataLoversforDevelopers
Easeofuse
Extend
EmbedandIntegrate
Sitespecificautomatedtesting
Richdocumentation
![Page 10: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/10.jpg)
ITFriendlyMasterlessgrid
Easyinstallation
Zeroconfiguration
PowerfulCLI
Smallfootprint
Monitor,AlertsandLogs
![Page 11: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/11.jpg)
DBAFriendlyEasyDataModelling
Schema-less
Flexible
Zerodowntimeupdates
Completecontrol
![Page 12: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/12.jpg)
Dispatch
![Page 13: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/13.jpg)
NodesEverywhereEachnodeisafullyfunctioningjoola.iosystem
CommunicationisbasedonPub/Sub
Anodeneedstoqualifyforexeuction
Qualificationcanvaryandbeextended
Geopriorit ization
![Page 14: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/14.jpg)
DispatchRoutingEveryactionisamessage
Allmessagesaredistributed
Messagescontainsecuritycontext
Default`notme handlinglogic
Backlogprocessingofstuckmessages
![Page 15: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/16.jpg)
Node.JS'EventLoopBlockManyconsiderasNode.JS'achil lesheel,wedon't
TheGridandPub/Subapproachresolvesthecoreissue
ELBcountersandmonitors
Usingtherighttoolforthejob
Madeoursoftwarebetter
![Page 17: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/17.jpg)
Accessingjoola.ioViaHTTPAPIendpoints
UseSDK,CLI,cURLorwriteyourown
ShippedwithWebAdminconsole
Out-of-the-boxfullyfunctioninganalyticssite
Richdocumentation
![Page 18: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/18.jpg)
PushingData
![Page 19: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/20.jpg)
DataModellingDescribeyourdataasaJSONdocument(s)
DocumentsarestoredinaCollection
Schema-less,documentscanbeofdifferentstructure
Supportforalldatatypes
SupportforStrong-Typedcollections
![Page 21: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/21.jpg)
PushWhatYou'llNeedStoreonlydatarelatingtoAnalytics
Separateintologicalcollections
Describeeverymetricwithasmanyattributesaspossible
Passrawdata,don'taggregate
Pushanarrayofdocumentswhenpossible
![Page 22: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/22.jpg)
CachingLayerBasedonleadingproviders,suchasMongoDB,Cassandraandmore
Extendtosupportaddit ional
Insert,updateanddeletedirectlyfromcache
Executequeriesdirectlyoncachinglayer
NormalizedaccesstounderlyingcacheviaBeaconAPI
![Page 23: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/23.jpg)
Query
![Page 24: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/24.jpg)
UnderstandingQueriesDescribewhatyouwishtodisplay,ratherthanhowtogetit (SQL)
SupportforRealt ime(WebSocket)
Joindatafrommultiplecollections
Relativet imeframes
Advancedfi lters
DimensionandMetrictransformations
Manyaggregationoperators,includingUniqueCount
![Page 25: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/29.jpg)
RealtimeBuilt-inintoallvisualizationsandintegralpartofquery.fetchjoolaio.query.fetch({//queryparams,suchastimeframe,metrics,etc...realtime:true});
Firstexecutionreturnsentiret imeframe
Followingpacketsreturnonlydelta
Dataconsistencyassurance
![Page 30: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/30.jpg)
Visualization
![Page 31: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/31.jpg)
PlottingDataPartoftheJavascriptSDK
Easyascopy-paste
Shapetothedesiredlook,feelandbehavior
OffersjQueryplugins
RichDocumentationandPlayground
![Page 32: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/32.jpg)
VisualizationTypesMetricBox
Sparkline
PieChart
Timeline
Table
![Page 33: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/34.jpg)
Integrate,EmbedandExtend
![Page 35: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/35.jpg)
IntegrateDesignedandbuilt forintegration
Pushdatafromanydatasourcetypewhilekeepingcontroloflogic
Supportforhigh-ratedistributed,guaranteedwrites
JSONcollectionsprovideflexibil ityandsitespecificintegration
Collectdatafromallpartsofthebusiness
Leveragejoola.iotoreduceoverheadofoperationaldatabases
![Page 36: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/36.jpg)
EmbedSeamlessdrop-invisualizationsinyoursiteandapps
Eventdrivencommunicationwithcontainerpage
Copy-pastefromwiki
Onlyfront-enddevelopersareneeded,reduceDBAoverhead
Controlthet iniestdetailoflook,feelandflow
Responsive,HTML5,CSS3standards
![Page 37: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/37.jpg)
ExtendMissingafeature?
Easytolearninfrastructureandcode
Followsbestpracticesguidelinesandmethodology
Accesstosourcecode,issues,wikiandknow-how
Contributetoopensourceproject
Extendanythingfromcachinglayertovisualizations
![Page 38: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/38.jpg)
EndlessPossibilities
![Page 39: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/39.jpg)
Analytics-as-a-ServiceOfferanalyticsandvisualizationstoyourend-users
Scalableandredundanttosupportverylargeoperations
Multi-tenantandsecure
Easybrandingandclientintegration
![Page 40: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/40.jpg)
WebAnalyticsEasytosetupandconfiguration
Gatherandjoinmultipledatasourcesintoasinglestorejoolaio.beacon.insert('performance',window.performance);
Setupalertsonspecificuseractivityorthreshold
![Page 41: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/41.jpg)
AdServingNoneedtopre-determineaudiencesandsegments
Leveragesplit secondqueryt imes
Applyadvancedfi ltersandsegmentsinrealt ime
Determinebestmatchbyunlim itedparameters
Performfull/partialsegmentationon-the-fly
![Page 42: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/42.jpg)
InfographicsOffer"l ive"infographics
Combinerealt imecalculationsintostaticcontent
Segmentedinfographics
Secure/multi-tenantinfographics
![Page 43: [DRAFT] Workshop - Technical Introduction to joola.io](https://reader033.vdocuments.us/reader033/viewer/2022051110/54ba34fd4a7959041e8b4585/html5/thumbnails/43.jpg)
THANKYOUVisitourGitHubtoreadmoreaboutjoola.io