How do you eat an elephant? - Creating architectures supporting deferred decisioning 1
so....
How do you eat an Elephant?
piece by piece!
How do you look at a software architecture?
piece by piece!
How do you design a software architecture?
piece by piece!
Deferring design decisions
Innovation and speed
Two cases Power management on a farm Handling of Meter data
Current handling of Meter data
Nightly data collection Powerline communication
ZigBee
Periodic exports
Periodic data collection
ETL process
Internal business systems
Case goals Faster ETL and in a streaming manner Easier handling of alarms On the fly data aggregation Lightweight way to integrate new options A way to handle growing data volumes
Choosing Akka.Net
Goal architecture for handling Meter data
Realtime incoming data and push alarms
Akka node REST API Akka node Core Cluster
Nightly data collection Powerline communication
Periodic exports
ETL
Akka node Import Service Akka node REST API
ETL
ZigBee
Periodic data collection
Internal business systems
Choosen Technologies Akka.Net SQL Server and a nosql-ish data model TopShelf for “micro Windows services” NancyFx for REST services OWIN for “hosting”
Technology deferred decisioning Akka.Net can scale with our needs Database can be migrated if needed Hosting where needed
How do you create a architecture that support deferred decisioning?
piece by piece!
In short Change a “single� technology at a time, and for the rest stick with the good old stuff
In short Choose designs and technologies that allows us to revert and grow
In short Choose a data model that can coexist with the old
In short Keep focus on the business goals, keep innovating piece by piece, keep the speed up and have fun
How do eat an Elephant?
Jesper FĂŚrgemann Lead Software Architect
jef@mjolner.dk
+45 41 95 36 51