Yesterday I presented “Big data in the cloud – Welcome to cost oriented design” @ BDX2016 (slides are available here, and I think the video would be available soon).
One of the points I made that was that you need to continuously optimize the solution to handle costs (of course there can be and there are other drivers to that like performance, security etc.) – these optimizations may result in the need to change the architecture either by replacing a technology or redesigning parts of the solutions. I demonstrated this with a couple of such transformations we did (and doing, and will be doing in the future) @ AppsFlyer.
Ripping out a technology and implanting another in a running system sounds like a scary and risky move, but truly – architectures should be as agile and evolvable as any other part of your system. If you can be agile about adding features you should also be agile about your architecture. This is something we must be able to do
*Rant on*
Hardware vs. Software -the mere names tell you the difference. Hardware is rigid, fixed, Software is flexible, easy to change, soft … software. lots of years ago when I worked on a system that developed both hardware and software components – the hardware guys always said they had to finalize designs before they start “cutting down the iron” – after that, changes get expensive , hard, .. hardware.
Along came virtualization and then the cloud, hardware is probably still rigid but for all intents and purposes, it is as flexible as you want it to be. You can change instance type to a bigger, stronger machine without effort,you can customize the vm sand you can add as many more machines as you’d like – flexible, easy, soft… er… hardware
Software cannot be the bottleneck to change – I don’t want to sound too much like Trump but it is time to make software soft again!
*Rant off
By the way, this is not just a rant – I actually wrote about evolving architectures in the past (2010). You might want to read these posts to learn more: