how to build applications using a domain driven architecture

13
How to Build Business Applications Leveraging a Domain Driven Architecture

Upload: brian-anderson

Post on 24-May-2015

1.718 views

Category:

Technology


0 download

DESCRIPTION

Our presentation deck from the #GLSEC13 conference on 4/29/2013. Learn how to build modern, scalable and malleable greenfield apps the right way from the beginning.

TRANSCRIPT

Page 1: How to build applications using a domain driven architecture

How to Build Business Applications Leveraging a Domain Driven Architecture

Page 2: How to build applications using a domain driven architecture

Who are we?•Brian Anderson

• Founded OST project-based App Dev team (http://ostusa.com / @OSTgr)

• 15+ years business and software development consulting experience• Crowe Chizek• SageStone -> NuSoft - > RCM Technologies• OST

• Co-founder of Tourneytopia.com, PayItSquare.com and TourneyLogic.com

• Twitter: @brianmatic, Github: https://github.com/brianmatic

•Brian Scaturro• Consultant @OSTgr• Worked for OneUpWeb on the bay in Traverse City• Author of Paratest – https://github.com/brianium/paratest• Avid reader and open source developer• Twitter: @scaturr, Github: https://github.com/brianium

Page 3: How to build applications using a domain driven architecture

OST is headquartered right here in GR

Page 4: How to build applications using a domain driven architecture

Here we go

Developing greenfield apps is hard Most get locked into an architecture that doesn't scale and change becomes difficult and slow as the system grows.

Page 5: How to build applications using a domain driven architecture

Why does this happen so often?

Too many times application architects focus on the technical problems instead of designing for the problem domain.

“The most significant complexity of many applications is not technical. It is in the domain itself, the activity or business of the user" – Evans

Page 6: How to build applications using a domain driven architecture

Example Architecture

•Tiers •UI• Business •Data Access•Database

•Does this architecture represent the business?

•No…

Page 7: How to build applications using a domain driven architecture

How to do it right?

•Domain Driven Design•Focus on the domain model first.•What the heck is the domain model?• Official definition:

• A domain model in problem solving and software engineering is a conceptual model of all the topics related to a specific problem. It describes the various entities, their attributes, roles, and relationships, plus the constraints that govern the problem domain

•Let us just show you…

Page 8: How to build applications using a domain driven architecture

Let’s Model• Idea = Trello.mini• Wireframes• Domain Model

Page 9: How to build applications using a domain driven architecture

Onion Architecture

•The domain model is the core.•Build your architecture around it.

Page 10: How to build applications using a domain driven architecture

OST Open Source Contributions•nDriven• .Net-based•https://github.com/OSTUSA/ndriven

•nDriven CLI – command line interface for creating a nDriven boilerplate project.• https://github.com/OSTUSA/ndriven-cli

•Driven•PHP-based•https://github.com/OSTUSA/driven

Page 11: How to build applications using a domain driven architecture

Let’s code it• nDriven – Baseline Onion Architecture Project

• Setup a new project

• Develop the domain model• Look at how easy it is to interact with

• Make the domain model persist to a db in the Infrastructure layer• DB schema• Create a DB through a migration• Map models to DB• Leverage the Repository design pattern

• Finally, build the Presentation layer• Develop against the domain model• Use an MVC framework• Users expect modern client side interactions• It has to have a responsive design that works on all devices

Page 12: How to build applications using a domain driven architecture

Want our code?

•Reference sample application•OST Todo’s•https://github.com/OSTUSA/ost-todos•Great reference for• .Net MVC 4•Angular JS – Javascript MV-Whatever•Bootstrap•Built on nDrive

Page 13: How to build applications using a domain driven architecture

Q&AThank You