• Save
RealSMA Architecture - Concepts
Upcoming SlideShare
Loading in...5

RealSMA Architecture - Concepts






Total Views
Views on SlideShare
Embed Views



10 Embeds 388

http://realsma.com 125
http://project.realsma.com 92
http://localhost 59
http://derickschoonbee.com 48
http://www.realsma.com 45 9
http://realsma.local 5
http://derick-schoonbee.github.io 3
http://dockerhost 1
http://sol 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

RealSMA Architecture - Concepts RealSMA Architecture - Concepts Presentation Transcript

  • RealSMAReally Smart Custom Solutions!
  • Overview Solutions Concepts MethodologyAgenda
  • Overview
  • • Allows the creation of business solutions using a methodology running on an Application Framework • Solution – composition of core and custom web service components • Methodology - specify, model and apply • Application Framework – A runtime that runs the solutionWhat is RealSMA?
  • Solution Core Components Custom Identity and Access Management Specification Components rs-iam Specification rs-spec System Modeling Tool rs-model rs-xxx RealSMA Solution
  • Specify Solution Apply Model Meta ModelRealSMA Methodology
  • O P C D S M A S D Objectives Components People Domain ModelSpecify Model Apply Data System Functional Technical Non Functional Specification Specification Requirements RealSMA Methodology
  • Solution Implements Application Meta Framework Model runsRuntime Components
  • Application Solution Meta model Framework• Business • Integrators • Application • use the • implement the • RealSMA solution solution delivers • specify the • model with application requirements meta model runtime binariesRoles
  • Solutions
  • Identity and Access Getting Things DoneManagement (Phase II) (Phase I) Manages Users, Roles - Personal productivity and permissions II I system Run spec - Single User / No Roles rs-iam rs-gtd I Specification System Auth* (Phase I+II) rs-spec - Manages application specifications - Living documentation - Run Executable IV III specification (Continued Integration) Modeling Tool rs-model rs-xxx (Phase IV) Tools to model Custom Solution REST interface and (Phase III) Domain Model System developed using the RSMA methodology Components
  • rs-iam rs-spec• Captures application specifications in a structured way• Specification is executed from rs-spec against target system• Act as living documentation - System executes the spec and Users can also read the specSpecification System
  • rs-specSpecification System
  • • In order to capture everything that has my Collect attention I want.. rs-gtd • In order to make decisions about what I’m going Process to do about it I want.. • In order to place decisions in a trusted organized Organize place I want.. • In order to Reflect on the choices from a clear Review current and creative place I want.. Do • In order to make the best action choice I want.. • Used as a proof of concept to help drive out core requirements for the RealSMA application frameworkGetting Things Done
  • rs-gtdGetting Things Done
  • • Currently under planning rs-iam• Will use Role Based Access Control: • User • Roles • Permissions• Manages identity for multiple solutions and applications• Identity management: • List of systems and roles • Audit trail • Etc.Identity and AccessManagement
  • rs-model• Currently • rs-model has lower priority compared to other solutions • Modeling is done by “manually” writing XML • Focus is on getting core features developed for the framework and then configuring rs-model as solution (Chicken-egg dilemma)• Future: • Will model solution via web app • Deploy XML configuration from rs-modelModeling Tool
  • Concepts EventCQRS REST Sourcing
  • Concepts CQRSCommand QueryResponsibility Segregation
  • REST/GUI/ Presentation SOAP-WSRead data Write flow data flow Domain Business Logic / Application Server Data Data Access Later / ORM DatabaseTraditional 3tier Architecture
  • Domain Presentation Data Read + WriteTraditional 3tier Architecture
  • Domain W Presentation Updates Data RSeparate Reads from Writes
  • CQRS - Command Query Responsibility Segregation Commands Domain W Presentation A-Sync / Sync Data R QueriesCQRS as an ArchitectureStyle
  • Concepts RESTRepresentational StateTransfer (Architecture Style)
  • • Components • Origin Server, User Agent, Gateway, Proxy• Connectors • Client - Initiates request • Server - Responds to request• Data Elements • Resources + Resource Identifiers (URI) • All interesting bits of information are identified with URIs and 
are usually accessed via URL • Representations, Meta Data, Control Data • Manipulation of resources happens with representationsArchitectural Elements
  • SolutionClient Server A Server B Runtime Process 1 Runtime Process 1 HTTP Component Component HTTP In Memory Component IPC Runtime Process 2 Native/ODBC Component (Not REST) DatabaseComponents +Connectors
  • Client Layer Web Service Data Layer Layer Layer User Agent cloud1.realsma.com Amazon Load Balancer Web app Web service HTTP HTTP Amazon RDB cloud2.realsma.com Web app Web serviceLayered Components
  • Artifact: S M ALoad balanced - Stateless
  • Uniform Interface Origin Server POST /resource-uri Commands + Queries Server ConnectorClient Connector PUT /resource-uri Domain Hyper Media Objects GET /resource-uri (Read + Write HEAD /resource-uri/{variable} Model) $ $ DELET E /resource-uri/{variable} Connector + Resource Server Operations Cache Identifiers ResourcesData Elements
  • • Representations have a Media Type so that you can process it: • Hyper Media • Is a representation with linking to other media • Eg. application/xhtml+xml (if you add links) • Regular Media (No links) • application/zip • application/javascript • audio/mpeg • image/gif • text/csv • application/vnd.ms-excel • application/x-www-form-urlencoded • application/xhtml+xml (without links)Data Element - Representation
  • • Maps an operation to the domain model (actual resource): • GET - Retrieve information • PUT - Change something in the domain • DELETE - Remove something • POST - Add something to a list of things• Identified by a URI • Very cheap to generate • Can be any concept in the domain• URL: http://example.com/cusomter/{id}/addresses• URI: /customer/{id}Data Element - Resource
  • • Hypermedia • Media with links • html – Good for human consumption • xhtml – Well formed, good for machine to machine • xml + links – e.g. Atom • json + links• Hypermedia as the engine of application state: • Only need to know entry point URI • Links are state transitions - just “follow the links” • State of application on client (like State Machine) • Discover the Domain Application Protocol (DAP) • User Agent are decoupledData Element - Hypermedia
  • • Client / Server • Request + Response messages• Stateless • Each request contains all info to process the request• Cache • Content marked as non-cacheable and cacheable (HTTP Headers)• Uniform Interface • Interaction with resources through a standardized set of operations, with well understood semantics (GET,PUT,POST..)• Layered System • Separates concerns. Hides complexity behind.• Code-On-Demand (Optional constraint) • Java scripts, Flash, Java AppletsConstraints
  • Concepts Event SourcingEvent Sourcing
  • Order Aggregate Cart Line Item Line Item Line Item Address Created Added Added Removed Added• Mature industries use events – e.g. Financial Ledger• Changes to the system can be represented by a series of domain events (Event Stream)• Aggregates are reconstructed from an Event Stream• “No” information loss, we collect ALL Domain events• All events a kept in an Event Store since we not know value of data laterEvent Sourcing
  • Order Aggregate • Looses information • Static snapshot in Order timeAddress Line • Will you use a bank 1..1 0..N Item that shows only balance?Structural Model
  • Projection (BI) Projection (Transactional) OrdersUnpaid Order LineOrdersPerCity .. Address .. 1..1 0..N Item Replay Stream Cart Line Item Line Item Line Item Address Created Added Added Removed Added Event Sourcing – Rebuild Projections
  • • Can travel back in time: • New ideas can be applied to history • Example: • Marketing found that when item was added and then removed from cart, customer will be more likely to purchase in the future. • Thus, propose the item to customer on next purchase. • Can now replay events to propose products, with structural model this information would have been lost.• Can create any structural model• Found a bug? • Reload Commands and Events • See status as it was at a point in timeEvent Sourcing
  • Concepts
  • Client rs-xxx Web Service Domain Model Event Store Command Hyper Media REST Server REST Client Events BI Query View Model (Projection) XRealSMA = REST+CQRS+ES
  • REST Web Service Domain Model View Model Create ManagePOST /projects Project Project Aggregat Table: e project-GET /projects Project List Composition listGET /projects/{uri} Project Details Composition Add Goal toPOST /projects/{uri}/goals Project Table: project-goalsDELET /projects/{uri}/goals/{nam Deactivate E e} Goal CommandsOperations URI Events and Queries RealSMA = REST+CQRS+ES
  • MethodologySpecify Model Apply
  • O P C D S M A S D Objectives Components Runtime • Objectives Model • Resources • Key Features • Operations People Domain ModelSpecify Model Apply • Organization • Commands • Process Flow • Events • Use Cases • Aggregates Data • Projections / Queries • Business Data • Data Dictionary System • Context Map • System Flow Functional Technical Non Functional Specification Specification Requirements RealSMA Methodology
  • Business Key Features Business Objective (Product Concept) Problem 2 Business Feature Business Objective Objective FeatureBusiness BusinessProblem 1 Problem 3 Business Feature Business Objective Objective Feature Business Problem 4 Feature Business Objective Objectives Model S M A O P S D Specify - Objectives
  • Organization Sales Marketing IT New Sales Customer ServiceOrganization Chart S M A O P S D Specify - People
  • President VP Sales VP Marketing VP IT CustomerParts Sales Marketing Service IT Manager Manager Manager Manager Product Parts Sales Rep CSR BA Manager Consultant ArchitectOrganization Roles S M A O P S D Specify - People
  • Objectives Vision and Goals Evolving Documentation System (Purpose) Objective Objective Objective (Metric) (Metric) (Metric) Feature Feature Feature Feature Use Process People … Case… Flow... Requirem Requirem … ent… ent… System + Data Scenario .. …Specify - Integrator View
  • In order to sell more products (outcome)Feature As the head of Web Marketing (stakeholder) Set I want consumers (stakeholder) to order goods online and have them delivered In order to buy online As a consumer I want to be able to search some goods in a catalog Pulled Stories In order to.. As a consumer I want to be able to put goods in a basket and order the basket In order to.. As a consumer I want to have a choice of delivery options In order to.. As a consumer I want to have free shipping when orders are over a certain minimum value Feature Set
  • Story: In order to buy online As a consumerI want to have free shipping when ordersare over a certain minimum value (feature)Scenario: Super ShippingGiven min value of 50€ And my order total is 49.99€,When I check out,Then shipping charge is 1 000.00€Scenario: Free ShippingGiven min value of 50€ And my order total is 50€,When I check out,Then shipping charge is 0€ • Stories pull QAs to create scenarios Executable Scenarios
  • rs-spec/projects/{project-uri}
  • rs-spec/projects/{uri}/featuresets
  • rs-spec…/featuresets/{name}
  • rs-spec…/stories/{story-name}
  • rs-specScenarios (Executable)
  • MethodologyModel
  • /resource Write Side POST Operation Aggregate Root GET Form Entity @ map Command map Entity ControlServer Connector Property Control /location Property Read Side GET Operation Events Projector Composition SQL Query (Query/Command) View SQL Query (SQL Table) CompositionModeling Blocks
  • <ResourceList> GET /projects Project List <Resource> <Name>/projects</Name> POST /projects Create Project <OperationList> <Operation> <Type>POST</Type> <Name>CreateProject</Name> … <Operation> <Operation> <Type>GET</Type> <Name>ProjectList</Name> … <CompositionList>…</CompositionList> <Operation> </OperationList> </Resource> <Resource>…</Resource> …</ResourceList>Resources + Operations
  • GET /projects Project List (Query) HTTP GET Command Query Command Composition (Options) Query Composition Hypermedia Reference (Link) Web TemplateGET Operation
  • <Operation> GET Project List /projects <Type>GET</Type> … (Query) <CompositionList> Command Query <Composition> <Name>ListOfProjectCommands</Name> <Type>Command</Type> <OptionList> <Option> <Uri>/projects</Uri> POST / projects <Operation>POST</Operation> <Redirect>/projects/{Aggregate:uri}</Redirect> </Option> </OptionList> Redirect User Agent </Composition> after creation <Composition>…</Composition> …GET - Command Composition
  • <Operation> GET Project List /projects <Type>GET</Type> … (Query) <CompositionList> Command Queryselect * from <Composition> project_list <Name>ProjectList</Name> <Type>Query</Type> <Table>project_list</Table> <QueryType>List</QueryType> <Class>project-list<Class> <ColumnList> project_list.project_name <Column> <Value>project_name</Value> <HRef>/projects/{project_name}</HRef> … <Column> Hypermedia </ColumnList> Reference (Link) </Composition> <Composition>…</Composition> … GET - Query Composition
  • <Operation> POST /projects Create Project<Type>POST</Type><Aggregate>ProjectConfigPolicy</Aggregate><Command>CreateProject</Command> … Renders as Html form <ControlList> with inputs <Control> <Label>Project Name:</Label> <Name>project</Name> <Type>text</Type> </Control> <Control> <Label>What the project should accomplish:</Label> <Type>textarea</Type> <Name>vision</Name> </Control> <Control>…</Control> … </ControlList> …POST - Controls
  • POST /projects Create Project Operation: GET /projects/@post “project” Control Operation: POST /projects Command: CreateProjectPOST - Controls (Form)
  • <Operation> POST /projects Create Project<Type>POST</Type><Aggregate>ProjectConfigPolicy</Aggregate><Command>CreateProject</Command> … <ControlList> … </ControlList> <MapControlList type=“list”> <MapControl name="{uri:name}">Uri</MapControl> <MapControl name="name">Name</MapControl> <MapControl name="vision">Vision</MapControl> <MapControl name="value">Value</MapControl> </MapControlList > … Control names Command Properties</ControlList> …POST - Maps Controls
  • POST /projects Create Project Post Operation Controls Controls mapped to Domain CommandPOST - Processed
  • MethodologyApply
  • Application Runtime Meta Data Solution (Web Service) Web App Template and images Domain Objectsrs-spec – Runtime Win32
  • Domain Objectsrs-spec – Runtime Mac
  • URIs HTTP Server Connector on port 8182rs-spec – Runtime Mac
  • derick.schoonbee@gmail.com <EOF>