domain driven design - Microservices architecture and breaking away from monolithic application -
i start process of breaking our legacy application (build on top of episerver cms). break smaller, more manageable components (microservices). i'm leaning towards nservicebus , type of domain model. tools me?. start? there can me identifying different abstraction points?
i understand broad topic. it's i've been put in charge of , feedback great.
generally advice against doing work on legacy applications unless involved parties understand doing complete rebuild.
the thing problem trying solve. maintainability of reporting tool? increased deployment speed? implement interface other system? solve performance issue?
once identified problem trying solve cut smalles piece makes sense (for microservices) , can start defining domain model (ddd). example make separate reporting service generate weekly report. try decide if solving problem. add 2 months estimates , check if business still wants it.
if that's case go ahead , build replacing pieces 1 1. if don't know start don't overcomplicate things. try solve 1 problem business has , make smallest possible prototype show feature can delivered. if that's possible got goodwill other changes need doing. don't decide use ddd or microservices or nservicebus tools solve problem. should result after doing analysis of problem trying solve.
update2 ddd great when communication big problem. when there complex business domain , or when developers (slightly) misinterpret business wants.
microservices great tool when need able scale. helps when want try out new things often. maintaining , debugging events can real pain though. , carefull when need stack/aggregate events (i need x happen if event & b both raised in flow)
servicebusses great when large part of application can happen asynchronously. email needs send sometime in near future not microsecond. document generation, generating monthly invoices, or processing incomming requests (async). pain if ever need wait response message of event.
update , solve real problem. don't add simple , use introduce service bus (or cool technology x). if need scaling solve problem requires scaling.
Comments
Post a Comment