This blog post is focused towards some of the prime considerations and strategies to take into account while designing, developing, deploying and maintaining any enterprise level software solution. Here are few prime considerations :
1. Modification & Up-gradation Strategy : If your solution is in the development phase, or if it is a very big project. There might be chances of modifications at different stages. With due course of time, you would like to have more and more features in your solution. Sometimes, changes could be very small, but even though if the solution has not been designed to adapt to small changes then this could have ripple effect on you complete project life cycle and ultimately can lead to very high cost. So, earlier you provision you application to adapt changes, better it will be.Various software patterns like MEF, Repository patterns, Factory patterns etc. can help you in achieving separation of concerns (SOC) so that interdependence of modules can be avoided to the extent possible. By minimizing the interdependence you can modify your module without worrying its effect on other modules.
If you are upgrading your existing solution, always duly check its backward compatibility, if every part of your solution is not getting upgraded for every user. If you solution is going under major revision, then make sure all of your users are mandated to use revised solution only.
2. Reliability Strategy : High availability and reliability is one major consideration for any enterprise level solution. High availability should be considered at every level. From software to hardware. By providing redundancy at different levels, high availability can be achieved. For example, using fail over clusters for databases, mirroring and raid levels for hardware etc. could be few things you might want to consider.
3. Performance Strategy : No will like your solution, if your solution is not up to mark on performance scales. You must create all your performance indices before hand, so that you can track and benchmark your solution performance over different phase of development, deployment and maintenance. You need to identify and outline potential performance bottlenecks and then work on that. Performance could be improved at different levels from hardware level to application level. If it is database application, there are numerous ways to track and improve database performance. At application level, you might want to incorporate various features such as caching etc.
4. Security Strategy : Security is a prime concern of enterprise level solution. The solution you are developing might be backbone of your company , and you cannot overlook security aspects. For some companies, there could be mandatory auditing process. So have your security measures in place before you run into a bigger problem.
5. Backup and Restore Strategy : As per Murphy’s law “If something can go wrong, it will be”. So, don’t be overconfident that nothing will happen to your system, or application and hardware. One day, all of your servers might go boom, and you will end up in a very gloomy phase, if you do not have regular backups with you. So plan your backups well, as per your need. For critical applications, plan disaster recovery mode too.Now, what the backups will do, if you don’t have proper backup restoration strategies chalked out. Proper restore strategies will help you in minimizing the solution downtime.
6. Deployment Strategy : Efficient deployment mechanisms can avoid sleepless nights for every project stakeholder. It would be great if you have continuous deployment & delivery model in place. For example, automatic builds, automated tests, quality assurance tests and automated deployment could help you in achieving a smoother deployment process.
7. Exception Handling Strategy: Exceptions are important part of any software solution. Have a proper exception handling mechanism, so that users might not get annoyed by extra-technical stack traces thrown at them. Exceptions at users end should be handled gracefully. Unhandled exceptions should be logged properly and should be sent back to the development team, so that they can take care of that.
Here, I have mentioned only a few of the major considerations for enterprise level software solutions. Plan and design your solution well, and it will pay off in a long run.