Prime Considerations for Enterprise Level Software Solutions

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.

Advertisements

Abhishek is a software architect, developer and Pluralsight author. He is very passionate about working with data especially in the field of machine learning. He has authored several courses on machine learning which are available on Pluralsight. He has been involved in several software development projects, which involves various machine learning techniques. His work focuses on architecting and developing applications especially in the area of monitoring, optimization, pattern recognition, and fault detection. His professional interests include software design patterns, agile practices, and various technologies such as WCF, WF, WPF, Silverlight, SQL Server, Entity Framework and ASP.NET MVC. He is also a Microsoft Certified Professional (HTML5, Javascript, CSS3).

Tagged with:
Posted in Technical

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s

About Me


Software Architect, Developer & Pluralsight Author

Software Architect, Developer & Pluralsight Author, Twitter Handle :

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 117 other followers

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my current or previous employer's view in anyway.
Live Feed
%d bloggers like this: