What if deploying a system as a monolith as a set of microservices was just an implementation detail? Can we create this option by designing the system well?
to argue that you shouldn't start a new project with microservices, even if you're sure your application will be big enough to make it worthwhile. Martin Fowler http://martinfowler.com/bliki/MonolithFirst.html
able to add functionality without changing any existing code“ Like: Adding the option to deploy the system as a set of micro services to a monolithic software.
clients to: • Work together more effectively as a team • Improve their technical practices • Improve their software quality / design • Re-gain control of their legacy code http://davidtanzer.net
over a single part of the functionality provided by the software, and that responsibility should be entirely encapsulated by the class.“ “A class should have only one reason to change.”
then objects of type T may be replaced with objects of type S (i.e. objects of type S may substitute objects of type T) without altering any of the desirable properties of that program (correctness, task performed, etc.)“ “Subclasses should not override behavior in an incompatible way“
modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions.“ “Your business logic should not depend on your infrastructure code.“
to: • Work together more efficiently as a team • Improve their technical practices • Improve their software quality / design • Re-gain control of their legacy code http://davidtanzer.net