SlideShare uma empresa Scribd logo
1 de 47
Lets focus on business value




         Power point template by
            Colin Eberhardt
Agenda



How to focus on business value

Domain Driven Design

Concrete patterns; CQRS, MVVM

Bifrost – an open-source framework to cover it all
Who am I




                 Einar Ingebrigtsen




       @einari           einar@dolittle.com


                      http_//www.dolittle.com
                        http://blog.dolittle.com
                 http://www.ingebrigtsen.info
Statistics

Software projects
2009:
- 32% successful
- 24% failed
- 44% challenged

2004:
 - Cancelled projects cost $55 Billion Annually
 http://www.projectsmart.co.uk/docs/chaos-report.pdf
Statistics




http://www.typemock.com/blog/2012/07/18/the-severity-of-bugs-are-we-doomed/
What are we getting paid to do?



Use the most fancy technology out there
 C# 5.0, Roslyn, F#, TPL, ASP.net MVC 3,
 SignalR, RavenDB


Join the alpha geek crew and use all the
latest buzz words and create an architecture
around that showcase our technical skills?
What is business value?


               The short answer

Helping the business achieve its
           objectives

 Faster   Simpler   Cheaper   Better   More
Why is this hard to do?



Developers don’t understand what the
business needs

The Business doesn’t understand what the
business needs
Why is this hard to do?


Even if we do understand what they want,
      we can’t build it because of ...

   Race                                                  Eager
 conditions
              Transactions   Logging    Serialization               Performance
                                                        loading


                                                                      Lazy
 Caching      Mapping        Auditing   Concurrency     Staleness
                                                                    loading
Why is this hard to do?

    If somehow we’ve managed to get our
infrastructure in place and give the business
         what it needs, it’s TOO LATE!


           Legal           New          Market
          Changes        Priorities     Changes



                           New           New
         Acquisitions
                        Requirements   Competitor
Be agile!



Not just in terms of process
 (Scrum, Kanban, XP)


We need to be able to change
 decisions
 priorities
 CODE!!
Understand who your user is
Feedback loop



Talk to users regularly

Test
 TDD / BDD
 Executable Specifications
 Testers
Please fail!




Fail regularly and fail fast

Be Agile and really iterate

Be honest!
Domain Driven Design


Focus on the core domain

Creative collaboration between domain
experts and software practitioners

Create a common language and common
understanding of the domain
Domain Driven Design



Building blocks
 Aggregate Roots
 Value Objects
 Services
 Repositories
 Entities
 … and more…
Bounded Contexts




Different representations in different
contexts
Bounded Contexts - Shopping
Bounded Contexts – Shift Management


Employee
 Plays a central role – identified by Social Security
 Number


Substitute
 It refers to the Employee by concept, but we do
 not need its address – only its availability and
 possibly its name for display purposes
Decoupling


Application Level
 Make many applications


Unit Level
 Interchangeable components


New Code
 Velocity
The opposite of decoupling




DRY – Don’t Repeat Yourself

Use of concrete implementations
Single Responsibility Principle


Types represent one thing

Methods do only one thing

Be fine grained and clear

Easier to name
CQRS

                                  Client


   Command


                                                       Queries
     Domain                    Event Handlers
                     Publish

         Persist               Update




Domain Persistence                              Read Model
Command




Expresses what should happen

Should express intent
 AddItem- / AddAccessory- ToCart - maps to
 AddProduct() on the AggregateRoot
EventSource




The source of events

The place that events originate from
Aggregate Root




Holds only internal state, if needed - no
public state

Exposes behavior as methods
Event




Represents the truth in the system; 
“... this
is what happened...”

Simple DTO with primitive properties only!
MVVM


                  Model   Get from server




           View


Observes
                          Observable
             ViewModel
bifrost
Bifrost


Full end to end framework for line-of-
business application development

Promotes good practices such as CQRS,
MVVM through high focus on DDD

You don’t need the entire thing, but will get
benefits for every component you add
Bifrost




Our motivation
 A platform for us to build LOB applications on
 Make us focus on delivering business value
 Easy to use, hard to use wrong
 “It just works!”
Bifrost



Client focus
 JavaScript
 ASP.net
 Single Page Applications
 Web in general
 Silverlight
 WinRT (Experimental)
Bifrost



Backend
 CQRS
 Cloud scale


Realtime applications
 Clients persistently connected to the server
Bifrost - Architecture
                       Client




  Result that affect
  Queries and                   Invoke Behavior               Results /
  Read Models                                                 Meta Data




                       Server

  Queries                                          Domain

Read Models                                       Meta Data
CQRS – Bifrost Style
                  Client

                                     Command

                                      Command
                                     Coordinator

                                      Command
                                      Handler(s)

                                    Aggregate Root


 Read Model   Event Subscriber(s)       Events


                                      EventStore
User story


Persona: Hannah
 Works with human resources, she is responsible
 for hiring of permanent employees but also for
 finding substitutes when people are on sick
 leaves


As Hannah I need to be able to quickly
register any employees coming in before we
got all the details about the person
User story




Requirements
 First Name - Required
 Last Name - Required
 Social Security Number – Required
  This is what identifies a person uniquely
Where are we??
                  Client

     Model          View            ViewModel



                                      Command

                                      Command
                                      Handler(s)

                                    Aggregate Root


 Read Model   Event Subscriber(s)       Events


                                      EventStore
Bifrost – What did we solve?




Decoupling
  Commands representing the behavior
  Events are the contract
  Read and behavior are two different things


Working in parallel

Making it easier to apply agile principles
Bifrost - Roadmap


Realtime applications
  Clients persistently connected to the server


Refine client model

Formalizations
  Bounded Context, Modules …


Simplifications

Scale out options
  Redis, Azure ++
Getting started
Summary




Domain Driven Design
Will help you establish a language and understand what you’re creating


CQRS
Lets you establish a set of good patterns and practices, mind opener

Bifrost
One incarnation – but not look at it as a CQRS implementation, it is so much more

Please rate the talk at
http://tinyurl.com/BusinessValue2


  http://blog.dolittle.com http://bifrost.dolittle.com
Thanks for your
   attention
Lets focus on business value

Mais conteúdo relacionado

Mais procurados

How to Leverage the Value of Your Application
How to Leverage the Value of Your ApplicationHow to Leverage the Value of Your Application
How to Leverage the Value of Your Application
Flexera
 
Peter Coffee at share2010seattle
Peter Coffee at share2010seattlePeter Coffee at share2010seattle
Peter Coffee at share2010seattle
Peter Coffee
 
Crm application analysis tool
Crm application analysis toolCrm application analysis tool
Crm application analysis tool
Ralph Paglia
 
Cloud product presentation
Cloud product presentationCloud product presentation
Cloud product presentation
SKALI Group
 
Cisco live 2013 anything as a service david deakin
Cisco live 2013 anything as a service david deakinCisco live 2013 anything as a service david deakin
Cisco live 2013 anything as a service david deakin
OptusBusiness
 
Stream 3 - IT optimisation & virtualisation
Stream 3 - IT optimisation & virtualisationStream 3 - IT optimisation & virtualisation
Stream 3 - IT optimisation & virtualisation
IBM Business Insight
 
Gen-i Cloud 101 presentation
Gen-i Cloud 101 presentationGen-i Cloud 101 presentation
Gen-i Cloud 101 presentation
Simmy_online
 

Mais procurados (17)

How to Leverage the Value of Your Application
How to Leverage the Value of Your ApplicationHow to Leverage the Value of Your Application
How to Leverage the Value of Your Application
 
Having the Cloud Conversation: Why the Business Architect Should Care
Having the Cloud Conversation: Why the Business Architect Should CareHaving the Cloud Conversation: Why the Business Architect Should Care
Having the Cloud Conversation: Why the Business Architect Should Care
 
Peter Coffee at share2010seattle
Peter Coffee at share2010seattlePeter Coffee at share2010seattle
Peter Coffee at share2010seattle
 
Retaj Tech & hr Update
Retaj Tech & hr UpdateRetaj Tech & hr Update
Retaj Tech & hr Update
 
Crm application analysis tool
Crm application analysis toolCrm application analysis tool
Crm application analysis tool
 
AT2012_Pune_UserStories_BhawanaGupta
AT2012_Pune_UserStories_BhawanaGuptaAT2012_Pune_UserStories_BhawanaGupta
AT2012_Pune_UserStories_BhawanaGupta
 
Peter Coffee CIO Forum 20100406
Peter Coffee CIO Forum 20100406Peter Coffee CIO Forum 20100406
Peter Coffee CIO Forum 20100406
 
Cast Iron Overview Webinar 6.13.12 Final(Jb)
Cast Iron Overview Webinar 6.13.12 Final(Jb)Cast Iron Overview Webinar 6.13.12 Final(Jb)
Cast Iron Overview Webinar 6.13.12 Final(Jb)
 
SugarCON partner presentation by IBM
SugarCON partner presentation by IBMSugarCON partner presentation by IBM
SugarCON partner presentation by IBM
 
Cloud product presentation
Cloud product presentationCloud product presentation
Cloud product presentation
 
ARC Recruiting
ARC RecruitingARC Recruiting
ARC Recruiting
 
HeadTracker Value Proposition
HeadTracker Value PropositionHeadTracker Value Proposition
HeadTracker Value Proposition
 
Cisco live 2013 anything as a service david deakin
Cisco live 2013 anything as a service david deakinCisco live 2013 anything as a service david deakin
Cisco live 2013 anything as a service david deakin
 
Designing DDD Aggregates
Designing DDD AggregatesDesigning DDD Aggregates
Designing DDD Aggregates
 
Sailing in the cloud
Sailing in the cloud Sailing in the cloud
Sailing in the cloud
 
Stream 3 - IT optimisation & virtualisation
Stream 3 - IT optimisation & virtualisationStream 3 - IT optimisation & virtualisation
Stream 3 - IT optimisation & virtualisation
 
Gen-i Cloud 101 presentation
Gen-i Cloud 101 presentationGen-i Cloud 101 presentation
Gen-i Cloud 101 presentation
 

Semelhante a Lets focus on business value

Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for Enterprises
Wade Wegner
 
Brighttalk understanding the promise of sde - final
Brighttalk   understanding the promise of sde - finalBrighttalk   understanding the promise of sde - final
Brighttalk understanding the promise of sde - final
Andrew White
 

Semelhante a Lets focus on business value (20)

RavenDB overview
RavenDB overviewRavenDB overview
RavenDB overview
 
CQRS recipes or how to cook your architecture
CQRS recipes or how to cook your architectureCQRS recipes or how to cook your architecture
CQRS recipes or how to cook your architecture
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
 
Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud Management
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for Enterprises
 
The Road To Event-Driven Architecture
The Road To Event-Driven ArchitectureThe Road To Event-Driven Architecture
The Road To Event-Driven Architecture
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
 
Why there is no future for Model Driven Development
Why there is no future for Model Driven DevelopmentWhy there is no future for Model Driven Development
Why there is no future for Model Driven Development
 
Agile Development in .NET
Agile Development in .NETAgile Development in .NET
Agile Development in .NET
 
Business Event Driven Architecture & Governance in Action
Business Event Driven Architecture & Governance in ActionBusiness Event Driven Architecture & Governance in Action
Business Event Driven Architecture & Governance in Action
 
AWS case study: real estate portal
AWS case study: real estate portalAWS case study: real estate portal
AWS case study: real estate portal
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft Microservices
 
Jumpstart Azure
Jumpstart AzureJumpstart Azure
Jumpstart Azure
 
Computational Patterns of the Cloud - QCon NYC 2014
Computational Patterns of the Cloud - QCon NYC 2014Computational Patterns of the Cloud - QCon NYC 2014
Computational Patterns of the Cloud - QCon NYC 2014
 
The Cloud, The Enterprise Architect and the CIO
The Cloud, The Enterprise Architect and the CIOThe Cloud, The Enterprise Architect and the CIO
The Cloud, The Enterprise Architect and the CIO
 
A perspective on cloud computing and enterprise saa s applications
A perspective on cloud computing and enterprise saa s applicationsA perspective on cloud computing and enterprise saa s applications
A perspective on cloud computing and enterprise saa s applications
 
External should that be a microservice
External should that be a microserviceExternal should that be a microservice
External should that be a microservice
 
Deconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven DesignDeconstructing Monoliths with Domain Driven Design
Deconstructing Monoliths with Domain Driven Design
 
Brighttalk understanding the promise of sde - final
Brighttalk   understanding the promise of sde - finalBrighttalk   understanding the promise of sde - final
Brighttalk understanding the promise of sde - final
 
Business and Online Services - Ben Kepes
Business and Online Services - Ben KepesBusiness and Online Services - Ben Kepes
Business and Online Services - Ben Kepes
 

Mais de Einar Ingebrigtsen

Making your application realtime with signal r
Making your application realtime with signal rMaking your application realtime with signal r
Making your application realtime with signal r
Einar Ingebrigtsen
 
Windows Azure Camps - Oktober 2012
Windows Azure Camps - Oktober 2012Windows Azure Camps - Oktober 2012
Windows Azure Camps - Oktober 2012
Einar Ingebrigtsen
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
Einar Ingebrigtsen
 

Mais de Einar Ingebrigtsen (9)

Making your application realtime with signal r
Making your application realtime with signal rMaking your application realtime with signal r
Making your application realtime with signal r
 
It's Primetime: A Javascript Story
It's Primetime: A Javascript StoryIt's Primetime: A Javascript Story
It's Primetime: A Javascript Story
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
 
Windows Azure Camps - Oktober 2012
Windows Azure Camps - Oktober 2012Windows Azure Camps - Oktober 2012
Windows Azure Camps - Oktober 2012
 
Developing on Windows 8
Developing on Windows 8Developing on Windows 8
Developing on Windows 8
 
Windows 8 BootCamp
Windows 8 BootCampWindows 8 BootCamp
Windows 8 BootCamp
 
Closing the gap between Web and Desktop with WinRT
Closing the gap between Web and Desktop with WinRTClosing the gap between Web and Desktop with WinRT
Closing the gap between Web and Desktop with WinRT
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
Sugarcoating your frontend one ViewModel at a time
Sugarcoating your frontend one ViewModel at a timeSugarcoating your frontend one ViewModel at a time
Sugarcoating your frontend one ViewModel at a time
 

Lets focus on business value

  • 1.
  • 2. Lets focus on business value Power point template by Colin Eberhardt
  • 3. Agenda How to focus on business value Domain Driven Design Concrete patterns; CQRS, MVVM Bifrost – an open-source framework to cover it all
  • 4. Who am I Einar Ingebrigtsen @einari einar@dolittle.com http_//www.dolittle.com http://blog.dolittle.com http://www.ingebrigtsen.info
  • 5. Statistics Software projects 2009: - 32% successful - 24% failed - 44% challenged 2004: - Cancelled projects cost $55 Billion Annually http://www.projectsmart.co.uk/docs/chaos-report.pdf
  • 7. What are we getting paid to do? Use the most fancy technology out there C# 5.0, Roslyn, F#, TPL, ASP.net MVC 3, SignalR, RavenDB Join the alpha geek crew and use all the latest buzz words and create an architecture around that showcase our technical skills?
  • 8. What is business value? The short answer Helping the business achieve its objectives Faster Simpler Cheaper Better More
  • 9. Why is this hard to do? Developers don’t understand what the business needs The Business doesn’t understand what the business needs
  • 10. Why is this hard to do? Even if we do understand what they want, we can’t build it because of ... Race Eager conditions Transactions Logging Serialization Performance loading Lazy Caching Mapping Auditing Concurrency Staleness loading
  • 11. Why is this hard to do? If somehow we’ve managed to get our infrastructure in place and give the business what it needs, it’s TOO LATE! Legal New Market Changes Priorities Changes New New Acquisitions Requirements Competitor
  • 12. Be agile! Not just in terms of process (Scrum, Kanban, XP) We need to be able to change decisions priorities CODE!!
  • 14. Feedback loop Talk to users regularly Test TDD / BDD Executable Specifications Testers
  • 15. Please fail! Fail regularly and fail fast Be Agile and really iterate Be honest!
  • 16. Domain Driven Design Focus on the core domain Creative collaboration between domain experts and software practitioners Create a common language and common understanding of the domain
  • 17. Domain Driven Design Building blocks Aggregate Roots Value Objects Services Repositories Entities … and more…
  • 19. Bounded Contexts - Shopping
  • 20. Bounded Contexts – Shift Management Employee Plays a central role – identified by Social Security Number Substitute It refers to the Employee by concept, but we do not need its address – only its availability and possibly its name for display purposes
  • 21. Decoupling Application Level Make many applications Unit Level Interchangeable components New Code Velocity
  • 22. The opposite of decoupling DRY – Don’t Repeat Yourself Use of concrete implementations
  • 23. Single Responsibility Principle Types represent one thing Methods do only one thing Be fine grained and clear Easier to name
  • 24. CQRS Client Command Queries Domain Event Handlers Publish Persist Update Domain Persistence Read Model
  • 25. Command Expresses what should happen Should express intent AddItem- / AddAccessory- ToCart - maps to AddProduct() on the AggregateRoot
  • 26. EventSource The source of events The place that events originate from
  • 27. Aggregate Root Holds only internal state, if needed - no public state Exposes behavior as methods
  • 28. Event Represents the truth in the system; 
“... this is what happened...” Simple DTO with primitive properties only!
  • 29. MVVM Model Get from server View Observes Observable ViewModel
  • 31. Bifrost Full end to end framework for line-of- business application development Promotes good practices such as CQRS, MVVM through high focus on DDD You don’t need the entire thing, but will get benefits for every component you add
  • 32. Bifrost Our motivation A platform for us to build LOB applications on Make us focus on delivering business value Easy to use, hard to use wrong “It just works!”
  • 33. Bifrost Client focus JavaScript ASP.net Single Page Applications Web in general Silverlight WinRT (Experimental)
  • 34. Bifrost Backend CQRS Cloud scale Realtime applications Clients persistently connected to the server
  • 35. Bifrost - Architecture Client Result that affect Queries and Invoke Behavior Results / Read Models Meta Data Server Queries Domain Read Models Meta Data
  • 36. CQRS – Bifrost Style Client Command Command Coordinator Command Handler(s) Aggregate Root Read Model Event Subscriber(s) Events EventStore
  • 37.
  • 38. User story Persona: Hannah Works with human resources, she is responsible for hiring of permanent employees but also for finding substitutes when people are on sick leaves As Hannah I need to be able to quickly register any employees coming in before we got all the details about the person
  • 39. User story Requirements First Name - Required Last Name - Required Social Security Number – Required This is what identifies a person uniquely
  • 40. Where are we?? Client Model View ViewModel Command Command Handler(s) Aggregate Root Read Model Event Subscriber(s) Events EventStore
  • 41. Bifrost – What did we solve? Decoupling Commands representing the behavior Events are the contract Read and behavior are two different things Working in parallel Making it easier to apply agile principles
  • 42. Bifrost - Roadmap Realtime applications Clients persistently connected to the server Refine client model Formalizations Bounded Context, Modules … Simplifications Scale out options Redis, Azure ++
  • 44.
  • 45. Summary Domain Driven Design Will help you establish a language and understand what you’re creating CQRS Lets you establish a set of good patterns and practices, mind opener Bifrost One incarnation – but not look at it as a CQRS implementation, it is so much more Please rate the talk at http://tinyurl.com/BusinessValue2 http://blog.dolittle.com http://bifrost.dolittle.com
  • 46. Thanks for your attention

Notas do Editor

  1. Bring up Saga, EventStore, View->Query->ReadHonesty is really omportant – people tend to cover up failures!
  2. Fewer regression bugsMore stabile softwareEasier to estimate and be on timeLess complexityWriting mostly new code at this point – true velocity!
  3. DRY : Inheritance for instance – to save propertiesPut in place abstractions for your application needs – not rewrite things!
  4. The S in SOLID