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
About the Presentation – Part 2
Developer getting started from scratchGit clone, build, debug, deploy
Developing HTML(5) + jQuery UI on The BallDemonstrating Web / Worker Role responsibilities
The Ball – Architecture Overview & Deep Dive
#td2013fi
RégisLaurentDirector of Operations, Global KnowledgeCompetencies include:Gold LearningSilver System Management
What is the Platform?
#td2013fi
The Ball, SOS – whole package running on Windows AzureSize of the scope?
What is it?
Publishing system for authorised informationWeb contentDigital contentDigital 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.
”The Ball” / ”SOS” / WTF?
”The Ball” is fundamentalOriginated from information models for storing and processing informationContext-insensitive – shapeshifter
”SOS” = ”Service Operating System”Service model supporting incarnation of ”The Ball”Authorization boundariesContext-sensitive itself – content context insensitive
ADM = Abstraction Design MethodologyEnables mainstream developer to pull off the above...
RégisLaurentDirector of Operations, Global KnowledgeCompetencies include:Gold LearningSilver System Management
Reality Check!
#td2013fi
How does ”The Ball” apply for today’s tech & business?
Seeing is believing...
”git clone git://github.com/abstractiondev/TheBallOnAzure””cd TheBallOnAzure””gitupdateproject.cmd””notepad README.txt”
Visual Studio 2012 & Azure: Powered by ADM
Semantic Information
Models
Logical Business Operations
Integration Interfaces & Contracts
RégisLaurentDirector of Operations, Global KnowledgeCompetencies include:Gold LearningSilver System Management
”SOS” Design
#td2013fi
”SOS” constraints on ”The Ball”
Logical Architecture is...
Constraints Given and designwise chosen
Reflecting real world and practices TODAY
Giving the boundaries for practical implementation
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 BrowserHTML5 & jQuery Client Application Mobile Application
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 BrowserHTML5 & 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
Collaboration: Roles & Emails
People act as a role
People collaborate with other people because of their role
People trust emailsStronger trust is required for official actions
SOS enables all the above to be digitally accelerated
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
Case: Smart Traffic Privacy Issues
Where
Who + Where
Who
Separation
Where
Who
This is the problem.
Adding 3When3makes
critical problem even more critical.
This is the only solution.
The separation MUST be
transparent, neutral party enforced and
audited.
... Applies everwhere
Where
Who + Where
Who
Separation
Where
Who
Smart Phone / GPSGovernment
AuthorityProcessing
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.
RégisLaurentDirector of Operations, Global KnowledgeCompetencies include:Gold LearningSilver System Management
”SOS” Design
#td2013fi
Implementation Decisions
Collaboration: Roles & Emails
Trusted Email Address
Collaborator
Collaborating Group
Authentication throughGoogle, Windows Live, Facebook,
Twitter, LinkedIn
The BallEcosystem
Owns& Uses
PracticalTrust
Authenticates& Trusts
Strong Authentication
CollaborationProcesses
Role Authorization& Decisions
TrustedInfra
3Cloud3Infra
Authorization Contexts
Role is assigned to email(does not have to exist
in the system)
Collaborator
Collaborating Group
Manyemail
addressesRole: Moderator,Member, Visitor
Group owns the information.
Policy clearly statedbased on group rules.
DocumentsBinary/Media
Data
DocumentsBinary/Media
Data
Publiclypublished
information
AnonymousWeb Surfer
Can accesswithout login or
registration
Can access withoutauthorization
Security Boundaries Recognized
Official, Legal, Contract BoundCollaboration
GroupCo-Operative Collaboration
Group
Internal Expert
Internal Expert
Partner Role(can be a customer)
External Expert /Auditor, Acceptance
Customer Product – Joined Solutions
CollaborationInformation Flow
End Product
Drill Down to Relevance...
Users want unified experienceBased on the interface, not on the application
Applications and services are to serveFocus on usability not on ”bling-bling”
Applications need only fraction of information to operate their partAndroid apps partially use this kind of architecture
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 whereExplicit semantics apply in realityMyApp.Customer != YourApp.Customer
Client-Server Service Interfaces
Web ServicesFor App A
Listeners for App AProxies for App B
Native MobileClient
Proxy Classes
Web/HTTP ClientProxy + JavaScript UI
Web ServicesFor App B
Listeners for App B
InteropContracts
(App A with App B)
InteropContracts (App A)
InteropContracts (App A)
OccasionallyOffline Client
Proxy + Temporary Logic Routing
Agreed logical class/message structuresRequired for communication contracts
- Can be used as-is in mapping to local data structures
Service Bus Distributed Architecture
3The Ball3Web Facing Server
Queue Storage
Consuming/Producing
Consuming/Producing
Service Call
Pure Distributed Architecture
3The Ball3Web Facing Server
Service Call Queue Supporting ArchitectureCan still use servicebus, but also queue & blob storage.
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 3pluggable3.
Conversion services can provide compatibility between various models.
Account
Collaborating Group
Owner AuthorizedContext 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
OwnerAuthorized App
Integration
Providing Catalogues Services
Owner Authorized App Integration
3App3s 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 3pluggable3.
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.
RégisLaurentDirector of Operations, Global KnowledgeCompetencies include:Gold LearningSilver System Management
Discovering Services
#td2013fi
Matching Consumer-Provider
Information = Real World
Digital Automated ProcessOrder pizzaWhat kind of a Pizza?Pay your orderReceive your pizza
Manual Process
Order pizzaWhat kind of a pizza?Pay your orderReceive your pizza
What kind of a pizza?
ThereFs your money
ThereFs your pizza
Semantic Interface Matching
Accepting the fact about implicit semanticsMyApp.Customer != YourApp.Customer
Both apps still have Class customerIntegration 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 interfacesMapping interface values as accordingly
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/
RégisLaurentDirector of Operations, Global KnowledgeCompetencies include:Gold LearningSilver System Management
”SOS” Design
#td2013fi
Building Blocks
Information Storage
Internet-of-Things
Queue StorageProcessing
Media Streaming ServersWeb Servers
Store/Retrieve
Retrieve
Queue
Send/ReceiveSecurity Context
Specific Execution
Blob Storage
Internet-of-Things
Queue,Blob Storage
Worker Roles
Media ServicesWeb Roles
Store/Retrieve
Retrieve
Queue
Send/ReceiveSecurity Context
Specific Execution
Building blocks...
Information ModelClass models with namespaces
Process ModelService method model with orchestration sequence
ADM module will concretize these to:Service Interface (platform agnostic; native code)Class model, serialized to storageNative code execution sequence
Explicitly defined, documented, trackable, auditable...
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>...
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>
RégisLaurentDirector of Operations, Global KnowledgeCompetencies include:Gold LearningSilver System Management
Master Information Management
#td2013fi
Relations in concrete manner
Master of information recognized
Updates to master firstPopulating with subscription/monitoring
Evaluation chains topology-sortedSeries of updates updated as atomic sequence
Scales well, because context size is smallSecurity context or semantic context boundaries
Replaces traditional relationsInformation is complete at every relevant stage
Invoice Reports
InvoiceEventDetail ID: 1
Invoice Web Pages
InvoiceEventDetail ID: 2
InvoiceEventDetailMasterCollection
InvoiceEventDetailGroup ID: 4GroupName: CPU Cycles
InvoiceEventDetailGroup ID: 5GroupName: Storage Transactions
InvoiceEventDetailGroupMasterCollection
InvoiceSummaryContainer
CollectionFiltering
From Master
ReportPDF Templates Html5 + jQuery
Web Templates
Group Contains ConcreteInvoiceEventDetail items
Invoice Contains Concrete InvoiceEventDetail Item(s)
Recognized with unique IDs
InvoiceRow ID: 1
InvoiceRow ID: 2
InvoiceRowMasterCollection
InvoiceRowGroup ID: 6GroupName: External Services
InvoiceRowGroup ID: 7GroupName: Bought Products
InvoiceRowGroupMasterCollection
InvoiceUser
InvoiceUserMasterCollection
Invoice
InvoiceMasterCollection
Invoice MobileInterface
MobileApp
Templates
InvoiceFiscalExportSummary
User Interface Focused Information.
Not served as is.
Data to be exported in digital reusable form
RégisLaurentDirector of Operations, Global KnowledgeCompetencies include:Gold LearningSilver System Management
Demo
#td2013fi
Platform Executing
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentations. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Thank you for coming!Feedback can be given via mobile or laptop through techdays.fi seminar schedule.
#td2013fi