2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
The Ball Launch on 2013 Microsoft TechDays Part 1/2
1. The Ball / SOS on Azure Part 1
Kalle Launiala, Citrus Solutions Oy
kalle.launiala@citrus.fi
2. About the Presentation – Part 1
What is The Ball / SOS platform about?
“SOS” Design: Logical Architecture
“SOS” Design: Building Blocks, Master Information vs.
Relations
Demo: Platform Executing on Azure
#td2013fi
3. About the Presentation – Part 2
Developer getting started from scratch
Git clone, build, debug, deploy
Developing HTML(5) + jQuery UI on The Ball
Demonstrating Web / Worker Role responsibilities
The Ball – Architecture Overview & Deep Dive
#td2013fi
4. Régis
Laurent
Director of Operations,
Global Knowledge
Competencies include:
Gold Learning
Silver System Management
What is the
Platform?
The Ball, SOS – whole package running
on Windows Azure
Size of the scope?
7. What is it?
Publishing system for authorised information
Web content
Digital content
Digital app/service development & integration
So is it like SharePoint or BizTalk or IIS?
Yes
How do you install it?
You don’t. Just deploy and run.
8. ”The Ball” / ”SOS” / WTF?
”The Ball” is fundamental
Originated from information models for storing and processing
information
Context-insensitive – shapeshifter
”SOS” = ”Service Operating System”
Service model supporting incarnation of ”The Ball”
Authorization boundaries
Context-sensitive itself – content context insensitive
ADM = Abstraction Design Methodology
Enables mainstream developer to pull off the above...
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22. Régis
Laurent
Director of Operations,
Global Knowledge
Competencies include:
Gold Learning
Silver System ManagementReality Check!
How does ”The Ball” apply for today’s
tech & business?
24. ”The Ball” Applies & Accelerates
Core
Software
Development
Services
Information
Management
+
Collaboration
System
Integration
Services with
Master Data
Model
Business
Process + EA
Automation
Mobile
Worker
Solutions
25. Visual Studio 2012 & Azure: Powered by ADM
Semantic
Information
Models
Logical Business
Operations
Integration
Interfaces &
Contracts
28. Generic ”App” Architecture
External Data
Access Services
Internal Database Integration Synchronization
Internal Data
Access Services
External Systems
External
Service
Access
Client To Back-End Service Layer
Business Logic
Processing
Web Browser
HTML5 & jQuery
Client Application Mobile Application
29. Implicit or explicit; architecture is
External Data
Access Services
Internal Database Integration Synchronization
Internal Data
Access Services
External Systems
External
Service
Access
Client To Back-End Service Layer
Business Logic
Processing
Web Browser
HTML5 & jQuery
Client Application Mobile Application
Service Interface
- Information model
- Logical Operations
Client To Server Proxy
- Proxy class data model
- Proxy class methods
Service Server
- Implementation Structure
UI Layer
- Page model
- Layout model
- Field model
- Data binding model
Semantic UI Model
- UI Information model
- UI Operations
Semantic Business Logic
- Information model
- Logical Operations
Semantic Data Model
- Information model
- Logical Operations
- Transactional behavior
Semantic Data Model
- Information model
- Logical Operations
- Transactional behavior
Synchronization
- Support for external
readers and writers
- Support for Service
Based Data Access
Semantic Service Access
- Information model
- Logical Operations
30. Collaboration: Roles & Emails
People act as a role
People collaborate with other people because of their
role
People trust emails
Stronger trust is required for official actions
SOS enables all the above to be digitally accelerated
31. Information is Owned
Information has always owner
Owner does not mean ”copyright holder”
However ”copyright holder” IS an owner
Owner authorizes the further use/distribution
Privacy aspect is CRITICAL
32. Case: Smart Traffic Privacy Issues
Where
Who + Where
Who
Separation
Where
Who
This is the
problem.
Adding
When makes
critical
problem even
more critical.
This is the only
solution.
The separation
MUST be
transparent,
neutral party
enforced and
audited.
33. ... Applies everwhere
Where
Who + Where
Who
Separation
Where
Who
Smart Phone / GPS
Government
Authority
Processing
Software running on-device
needs to be audited not to
leak or fabricate
information.
Software running on processing
needs to be distributed (to
prevent points of control) and
audited not to leak or fabricate
information.
This person
here, should
be in control of
where his
information is
stored and by
whom.
35. Collaboration: Roles & Emails
Trusted
Email Address
Collaborator
Collaborating Group
Authentication through
Google, Windows Live, Facebook,
Twitter, LinkedIn
The Ball
Ecosystem
Owns
& Uses
Practical
Trust
Authenticates
& Trusts
Strong
Authentication
Collaboration
Processes
Role Authorization
& Decisions
Trusted
Infra
Cloud
Infra
36. Authorization Contexts
Role is assigned to email
(does not have to exist
in the system)
Collaborator
Collaborating Group
Many
email
addresses
Role: Moderator,
Member, Visitor
Group owns
the information.
Policy clearly stated
based on group rules.
Documents
Binary/Media
Data
Documents
Binary/Media
Data
Publicly
published
information
Anonymous
Web Surfer
Can access
without login or
registration
Can access without
authorization
37. Security Boundaries Recognized
Official, Legal,
Contract Bound
Collaboration
Group
Co-Operative
Collaboration
Group
Internal Expert
Internal Expert
Partner Role
(can be a customer)
External Expert /
Auditor, Acceptance
Customer Product
– Joined Solutions
Collaboration
Information Flow
End Product
38. Drill Down to Relevance...
Users want unified experience
Based on the interface, not on the application
Applications and services are to serve
Focus on usability not on ”bling-bling”
Applications need only fraction of information to
operate their part
Android apps partially use this kind of architecture
39. Service / Service Bus Interface
Interface definition is like pseudo-language method call
<Return value>
<Method name>
<Parameter 1>
<Parameter 2>
...
Executing code ALWAYS knows what to call and from
where
Explicit semantics apply in reality
MyApp.Customer != YourApp.Customer
40. Client-Server Service Interfaces
Web Services
For App A
Listeners for App A
Proxies for App B
Native Mobile
Client
Proxy Classes
Web/HTTP Client
Proxy + JavaScript UI
Web Services
For App B
Listeners for App B
Interop
Contracts
(App A with App B)
Interop
Contracts (App A)
Interop
Contracts (App A)
Occasionally
Offline Client
Proxy + Temporary Logic
Routing
Agreed logical class/message structures
Required for communication contracts
- Can be used as-is in mapping to local data structures
41. Service Bus Distributed Architecture
The BallWeb Facing Server
Queue
Storage
Consuming/Producing
Consuming/Producing
Service Call
42. Pure Distributed Architecture
The BallWeb Facing Server
Service Call Queue Supporting Architecture
Can still use servicebus, but also
queue & blob storage.
43. Auhtorized Producer - Consumer
Providing
Secure Data
Consuming
Secure Processing
Providing
Secure Data
Consuming
Secure Processing
Owner Authorized App Integration
Models and operations can be
identified to be compatible
pluggable .
Conversion services can provide
compatibility between various
models.
44. Account
Collaborating Group
Owner Authorized
Context Trust
Providing
Secure Data
Consuming
Secure Processing
Providing
Secure Data
Consuming
Secure Processing
Owner Authorized App Integration
Providing
Secure Data
Consuming
Secure Processing
Providing
Secure Data
Consuming
Secure Processing
Owner Authorized App Integration
Owner
Authorized App
Integration
Providing Catalogues Services
Owner Authorized App Integration
App s are independent digital
services.
They use common model for
defining semantic information
models and semantic operations.
Models and operations can be
identified to be compatible
pluggable .
Conversion services can provide
compatibility between various
models.
Converting and publication services are services
among other services. Catalogues for available
services are services just like others.
46. Information = Real World
Digital Automated Process
Order pizza
What kind of a Pizza?
Pay your order
Receive your pizza
Manual Process
Order pizza
What kind of a pizza?
Pay your order
Receive your pizza
What kind of a pizza?
There s your money
There s your pizza
49. Semantic Interface Matching
Accepting the fact about implicit semantics
MyApp.Customer != YourApp.Customer
Both apps still have Class customer
Integration needs to do semantic mapping
<Return value> (semantic.namespace.included)
<Method name> (semantic.ns.included)
<Parameter 1> (semantic.ns.included)
<Parameter 2> (semantic.ns.included)
...
Hash value is used to identify matching interfaces
Mapping interface values as accordingly
50. Case ETLA: Real World Hospital
Bluetooth, Acceleration Meters, GPS to track down
real world nurses
Real world processes != Consultant made processes
More info from:
http://blogs.etla.fi/palveluprosessi/
54. Building blocks...
Information Model
Class models with namespaces
Process Model
Service method model with orchestration sequence
ADM module will concretize these to:
Service Interface (platform agnostic; native code)
Class model, serialized to storage
Native code execution sequence
Explicitly defined, documented, trackable, auditable...
55. Example of Information Model
<TheBallCoreAbstraction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="TheBallCore_v1_0.xsd">
<InstanceOfTheBall semanticDomainName="TheBall.CORE">
<InformationModel>
<InformationObject name="InvoiceFiscalExportSummary" designDesc="Annual export summary of invoices">
<InformationItems>
<InformationItem name="FiscalInclusiveStartDate" logicalDataType="Time_Date"/>
<InformationItem name="FiscalInclusiveEndDate" logicalDataType="Time_Date"/>
<InformationItem name="ExportedInvoices" logicalDataType="InformationObject“
informationObjectName="InvoiceCollection"/>
</InformationItems>
</InformationObject>
...
56. Example of Process Model
<Operation name="CreateAdditionalMediaFormats">
<OperationSpec>
<Description />
</OperationSpec>
<Parameters>
<Parameter dataType="string" name="MasterRelativeLocation" designDesc="Relative location of original" state="underDesign" />
</Parameters>
<Execution>
<SequentialExecution>
<TargetDefinition dataType="Bitmap" name="BitmapData" designDesc="Bitmap image if existing" state="designApproved">
<Parameter name="MasterRelativeLocation"/>
</TargetDefinition>
<TargetDefinition dataType="object" name="VideoData" designDesc="Videodata" state="designApproved">
<Parameter name="MasterRelativeLocation"/>
</TargetDefinition>
<MethodExecute name="CreateImageMediaFormats" designDesc="Create various media formats (if bitmap is not null)" state="underDesign">
<Parameter name="MasterRelativeLocation"/>
<Target name="BitmapData"/>
</MethodExecute>
<MethodExecute name="CreateVideoMediaFormats" designDesc="Create various video media formats (if object is not null)" state="designApproved">
<Parameter name="MasterRelativeLocation"/>
<Target name="VideoData"/>
</MethodExecute>
</SequentialExecution>
</Execution>
</Operation>
58. Master of information recognized
Updates to master first
Populating with subscription/monitoring
Evaluation chains topology-sorted
Series of updates updated as atomic sequence
Scales well, because context size is small
Security context or semantic context boundaries
Replaces traditional relations
Information is complete at every relevant stage
59. Invoice
Reports
InvoiceEventDetail ID: 1
Invoice
Web Pages
InvoiceEventDetail ID: 2
InvoiceEventDetail
MasterCollection
InvoiceEventDetailGroup ID: 4
GroupName: CPU Cycles
InvoiceEventDetailGroup ID: 5
GroupName: Storage Transactions
InvoiceEventDetailGroup
MasterCollection
InvoiceSummaryContainer
Collection
Filtering
From Master
Report
PDF Templates Html5 + jQuery
Web Templates
Group Contains Concrete
InvoiceEventDetail items
Invoice Contains
Concrete InvoiceEventDetail Item(s)
Recognized with unique IDs
InvoiceRow ID: 1
InvoiceRow ID: 2
InvoiceRow
MasterCollection
InvoiceRowGroup ID: 6
GroupName: External Services
InvoiceRowGroup ID: 7
GroupName: Bought Products
InvoiceRowGroup
MasterCollection
InvoiceUser
InvoiceUser
MasterCollection
Invoice
Invoice
MasterCollection
Invoice Mobile
Interface
Mobile
App
Templates
InvoiceFiscalExportSummary
User Interface Focused
Information.
Not served as is.
Data to be exported in digital
reusable form