Separation of Concerns is one of the key principles of software architecture that makes it easier to design, build and maintain scalable applications. In practice, it means that each piece of software has a single, clearly defined role that is distinct from another piece of the system. If that role cannot be defined in one or two words, then it is time to refactor. By applying this principle at every level of the system we can turn old monoliths into a collection of services that are much easier to understand and maintain and therefore reduce the total cost of ownership over their lifetime. Couple this with a faster turnaround time for feature requests and the application becomes much more responsive to customer needs. In this blog I’m going to outline how to apply the Separation of Concerns to a monolithic application.
The breakout launch of the Apple iPhone heralded a new era of popular mobile computing. With the launch of Android, mobile phones came to be dominated by software platforms, and the pervasion of networked smart phones and tablets in our society is now almost complete. Apple, Google and Microsoft vie for our imaginations with diminishing innovation to differentiate them, so that the choice of mobile platform is now as electable as one’s politics or football team. So how do you choose the right platform for your business when much of the complexity is hidden from view? For those embarking on a mobile development, I’ll explore the immediate question of which (if not all) to target, and what might be the most effective way to do so.