Pre- and Post-Release Checklist for an ASP.NET Application with IIS and SQL

Releasing an ASP.NET application requires careful planning to ensure a smooth deployment without disruptions. Below is a checklist that I use to cover essential pre- and post-release checks, focusing on database changes, application performance, and stability.

Pre-Release Checklist

TaskCheckbox
Prepare the Code and Database Changes
Peer-review all code changes. Make sure all code changes are reviewed and approved through pull requests.
Run automated tests (unit, integration, and functional tests).
Ensure proper logging and error-handling mechanisms are in place.
Compile the code in Release Mode and make sure it does not throw any errors.
Make a list of the files that need to be updated in live. Views/ASPX/ASCX/CSS/JS
Make a list of any hard-coded value that needs to be changed in any file.
Gather a list of newly added or updated third-party libraries, NuGet packages, or other resource files, such as images.
Verify all SQL table schema changes (new tables, column modifications, constraints, etc.) and prepare the script.
Use ALTER TABLE instead of DROP TABLE to prevent data loss.
Review and test stored procedures, triggers, and views. Make the script ready.
Verify new indexes are optimized and do not impact write operations.
Make a script if you need to add any new data to any table. Or update any existing data in any table.
Ensure that the SQL script does not have any hardcoded value that requires changing the live environment.
Make a list of what changes in in web.config or appsettings.json.
Make a list of any new application settings that are required in live(e.g., API keys).
Make a list of any dependent systems that need to be updated. Review and list any scheduled jobs and background services that need to change with this release.
Make a list of any site setup changes required in IIS for this release.
Database Backup
Take a full backup of the production database just before the start of the release process.
Prepare a rollback plan in case of deployment failure.
Deployment Package Preparation
Generate and package build the files (e.g., DLLs, CSS, JS files). Make sure the ddl is made in release mode. Minify css/js files.
Organize and test the SQL scripts with a test database.
Testing
Run all unit tests.
Perform integration testing with the database and external services.
Conduct performance testing.
Perform regression testing to ensure existing functionality works.
Documentation
Document release notes with changes, new features, and known issues.
Create a step-by-step deployment guide.
Communication
Notify stakeholders about the release schedule and potential downtime.
Brief the development, QA, and operations teams on the release process.

Follow the step-by-step deployment guide to make the release. For a major release, it is recommended to schedule downtime and include a maintenance page for the user.

Once the release is done, this is the post-release checklist.

Post-Release Checklist

TaskCompleted
Verify that the application is running correctly in the production environment.
Perform tests on critical functionalities.
Check logs for unexpected errors or warnings.
Validate integrations with external systems (APIs, third-party services, etc.).
Monitor database performance and query execution times.
Perform real-user testing to ensure functionalities work as expected.
Validate security settings post-release.
Gather user feedback and address any reported issues promptly.
Be prepared to roll back changes if critical issues arise.
Communicate fixes and updates to stakeholders as necessary.

This checklist ensures a structured and thorough approach to deploying your ASP.NET application and minimizing risks to ensure a smooth production environment. Let me know if I have missed anything!