YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Mind Your Business. And Its Logic

AND ITS LOGICMIND YOUR BUSINESS

Page 2: Mind Your Business. And Its Logic

Vladik Khononov Chief Architect @ Internovus

@vladikk

http://vladikk.com

Page 3: Mind Your Business. And Its Logic

BUSINESS LOGIC

Page 4: Mind Your Business. And Its Logic

PRESENTATION LAYER

BUSINESS LOGIC LAYER

DATA ACCESS LAYER

Page 5: Mind Your Business. And Its Logic

💵

Page 6: Mind Your Business. And Its Logic

PRESENTATION LAYER

BUSINESS LOGIC LAYER

DATA ACCESS LAYER

Page 7: Mind Your Business. And Its Logic

Transaction Script

Active Record

Domain Model

Event Sourced Domain Model

Page 8: Mind Your Business. And Its Logic

TRANSACTION SCRIPT

Page 9: Mind Your Business. And Its Logic

TRANSACTION SCRIPT

▸ Simple Business Logic

▸ CRUD

▸ Input Validation

▸ Extract Transform Load (ETL)

▸ Simple Data Structures

▸ Always leave the database in a consistent state

Page 10: Mind Your Business. And Its Logic

APPLICATIONCREATE USER UPDATE USER SEARCH USERS

DATABASE

UI

Page 11: Mind Your Business. And Its Logic

public class CreateUser {

public void Execute(name, email) {

try {

DB.StartTransaction();var row = DB.NewUserRow(); row.Name = name;row.Email = email;DB.Append(row);DB.Commit();

} catch {

DB.Rollback();throw;

}

}

}

Page 12: Mind Your Business. And Its Logic

ACTIVE RECORD

Page 13: Mind Your Business. And Its Logic

ACTIVE RECORD

▸ Simple Business Logic

▸ CRUD

▸ Input Validation

▸ Extract Transform Load (ETL)

▸ Complex Data Structures

▸ References / Collections

▸ Multiple Tables

Page 14: Mind Your Business. And Its Logic

USER INTERESTS

ID

NAME Hasmany

ADDRESSCOUNTRY CITY

STREET

Page 15: Mind Your Business. And Its Logic

APPLICATIONCREATE USER UPDATE USER SEARCH USERS

DATABASE

UI

Page 16: Mind Your Business. And Its Logic

APPLICATIONCREATE USER UPDATE USER SEARCH

USERS

UI

ACTIVE

RECORDSUSER

DATABASE

Page 17: Mind Your Business. And Its Logic

public class CreateUser {

public void Execute(userDetails) {

try {

DB.StartTransaction();var user = new User();user.Name = userDetails.Name;user.Email = userDetails.Email;user.Save();DB.Commit();

} catch {

DB.Rollback();throw;

}

}

}

Page 18: Mind Your Business. And Its Logic

public class User {

public Guid Id { get; set; }public string Name { get; set; }public List<Interest> Interests { get; set; }public Address Address { get; set; }

public void Save() { … }public void Delete() { … }public static User Get(Guid id) { … }public static List<User> GetAll() { … }

}

Page 19: Mind Your Business. And Its Logic

DOMAIN MODEL

Page 20: Mind Your Business. And Its Logic

DOMAIN MODEL

▸ Complex Business Logic

▸ Business rules

▸ Invariants

▸ Calculations

▸ Complex algorithms

Page 21: Mind Your Business. And Its Logic

APPLICATIONCREATE USER UPDATE USER SEARCH

USERS

UI

ACTIVE

RECORDSUSER

DATABASE

Page 22: Mind Your Business. And Its Logic

APPLICATIONCREATE USER UPDATE USER SEARCH USERS

UI

DOMAINMODEL

USER

DATABASE

Page 23: Mind Your Business. And Its Logic

APPLICATIONCREATE USER UPDATE USER SEARCH USERS

UI

DOMAINMODEL

USER

INFRASTRUCTURE

Page 24: Mind Your Business. And Its Logic

DOMAIN MODEL

▸ Complex business logic

▸ Model business domain

▸ Objects: data + behavior

▸ Plain objects

▸ Minimal application level use cases

Page 25: Mind Your Business. And Its Logic

public class UpdateUser {

public void Execute(userDetails) {

try {

var user = usersRepository.Get(userDetails.Id);user.UpdateDetails(userDetails);usersRepository.Save(user);

} catch {

DB.Rollback();throw;

}

}

}

Page 26: Mind Your Business. And Its Logic

public class User {

public Guid Id { get; private set; }public string Name { get; private set; }public List<Interest> Interests { get; private set; }public Address Address { get; private set; }

public void UpdateDetails() { … }public void AddInterest() { … }public static User InitializeNew() { … }

}

public interface IUsersRepository {

User Get(Guid id);void Save(User user); void Delete(User user);

}

Page 27: Mind Your Business. And Its Logic

APPLICATIONCREATE USER UPDATE USER SEARCH USERS

UI

DOMAINMODEL

USER

INFRASTRUCTURE

Page 28: Mind Your Business. And Its Logic

EVENT SOURCED DOMAIN MODEL

Page 29: Mind Your Business. And Its Logic

EVENT SOURCED DOMAIN MODEL

▸ Complex Business Logic

▸ Business rules

▸ Invariants

▸ Complex algorithms

▸ Deals w/ money

▸ Data analysis required

▸ Audit required by law

Page 31: Mind Your Business. And Its Logic

public class NewUserInitialized {

public Guid UserId { get; private set; }public string Name { get; private set; }public string Email { get; private set; }

}

public class NameChanged {

public Guid UserId { get; private set; }public string NewName { get; private set; }

}

public class EmailChanged {

public Guid UserId { get; private set; }public string NewEmail { get; private set; }

}

Page 32: Mind Your Business. And Its Logic

EVENT SOURCED DOMAIN MODEL

▸ UserInitialized(1, John, [email protected])

▸ NameChanged(1, James)

▸ EmailChanged(1, [email protected])

Page 33: Mind Your Business. And Its Logic

APPLICATIONCREATE USER UPDATE USER SEARCH USERS

UI

DOMAINMODEL

USER

EVENT STORE

Page 34: Mind Your Business. And Its Logic

Transaction Script

Active Record

Domain Model

Event Sourced Domain Model

Page 35: Mind Your Business. And Its Logic

APPLICATION ARCHITECTURE

Page 36: Mind Your Business. And Its Logic

LAYERED ARCHITECTURE

PRESENTATION LAYER

BUSINESS LOGIC LAYER

DATA ACCESS LAYER

Page 37: Mind Your Business. And Its Logic

HEXAGONAL / PORTS & ADAPTERS / ONION / CLEAN ARCHITECTURE

CORE

SERVICES

INFRASTRUCTURE

Page 38: Mind Your Business. And Its Logic

CQRS - COMMAND QUERY RESPONSIBILITY SEGREGATION

WRITE MODEL

COMMANDS

UI

READ MODEL

QUERIES

Page 39: Mind Your Business. And Its Logic

«SHLIKHTA» ARCHITECTURE

EVERYTHING

Page 40: Mind Your Business. And Its Logic

EVENT SOURCED DOMAIN MODEL

• Shlikhta Architecture

• Layered Architecture

• Hexagonal Architecture

• CQRS

• Transaction Script

• Active Record

• Domain Model

• Event Sourced Domain Model

Page 41: Mind Your Business. And Its Logic

TESTING STRATEGIES

Page 42: Mind Your Business. And Its Logic

TESTS PYRAMID

UI/

End to End

Service / APIlayer tests

Unit Tests

Page 43: Mind Your Business. And Its Logic

TESTS PYRAMID

UI/

End to End

Service / APIlayer tests

Unit Tests

Page 44: Mind Your Business. And Its Logic

TESTS PYRAMID

UI/

End to End

Service / APIlayer tests

Unit Tests

Page 45: Mind Your Business. And Its Logic

TESTS PYRAMID

UI/

End to End

Service / APIlayer tests

Unit Tests

Page 46: Mind Your Business. And Its Logic

TESTING STRATEGIES

• End to end tests

• API layer tests

• Unit tests

• Unit tests

• Transaction Script

• Active Record

• Domain Model

• Event Sourced Domain Model

Page 47: Mind Your Business. And Its Logic

LANGUAGE AND TECHNOLOGY

Page 48: Mind Your Business. And Its Logic

PROGRAMMING STYLE

• Procedural

• Procedural / OOP

• OOP

• Functional

• Transaction Script

• Active Record

• Domain Model

• Event Sourced Domain Model

Page 49: Mind Your Business. And Its Logic

DYNAMIC / STATIC TYPING

• Dynamic

• Dynamic

• Static

• Static

• Transaction Script

• Active Record

• Domain Model

• Event Sourced Domain Model

Page 50: Mind Your Business. And Its Logic

RAMIFICATIONS

▸ Architectural style / pattern

▸ Testing strategy

▸ Language and technology

▸ Programming style

▸ Language type

Page 51: Mind Your Business. And Its Logic

DECISION HEURISTIC

▸ Is the business logic mostly CRUD / ETL? Yes

▸ Are the data structures simple? yes - Transaction Script

▸ Are the data structures simple? No -Active Record

▸ Is the business logic mostly CRUD / ETL? No

▸ Is advanced analysis required, or dealing w/ money? NoDomain Model

▸ Is advanced analysis required, or dealing w/ money? YesEvent Sourced Domain Model

Page 52: Mind Your Business. And Its Logic

TRANSACTION SCRIPT

ACTIVE RECORD

DOMAIN MODEL

EVENT SOURCED DOMAIN MODEL

Page 53: Mind Your Business. And Its Logic

AGILE ARCHITECTURE

Page 54: Mind Your Business. And Its Logic

TRANSACTION SCRIPT / SHLIKHTA

ACTIVE RECORD / LAYERS

DOMAIN MODEL / HEXAGONAL

EVENT SOURCED DOMAIN MODEL / CQRS

Page 55: Mind Your Business. And Its Logic

DECISION SCOPE

Page 56: Mind Your Business. And Its Logic

CAMPAIGN MANAGEMENT LEAD MANAGEMENT

Page 57: Mind Your Business. And Its Logic

CAMPAIGN MANAGEMENT

LEAD MANAGEMENT

CREATIVE CATALOG

CAMPAIGN PUBLISHING

BILLING

USERS MANAGEMENT

SALES

COMMISSIONS CALCULATION

DESK MANAGEMENT

VOIP MANAGEMENT

Page 58: Mind Your Business. And Its Logic

SUMMARY

Page 59: Mind Your Business. And Its Logic

Business Driven Architecture

Page 60: Mind Your Business. And Its Logic
Page 61: Mind Your Business. And Its Logic

QUESTIONS?

Page 62: Mind Your Business. And Its Logic

THANK YOU

Vladik Khononov Chief Architect @ Internovus

@vladikk

http://vladikk.com


Related Documents