16 Mar 2017

Database Auditing & the Task of Managing Continuous Database Change

8 Tags 0 Comments

A fundamental part of keeping your company on the cutting edge is managing continuous database changes, which are crucial to producing results as quickly and seamlessly as possible.

Yet, there are many issues that can occur concurrently with continuous database changes, some of which can can be quite costly and detrimental. In fact, around 80% of unplanned database downtime is due to these changes. This is because our systems have become increasingly complex as they work to handle data from large corporations and organizations. 

Thus, any small change needs to be able to run smoothly across this wide system, which likely includes web, cloud, and mobile environments. For these reasons, it's extremely important to stay on top of continuous database changes and to implement proactive (rather than reactive) database auditing in order to ensure that transitions and revisions occur without causing damage.

continuous-database-delivery

3 Common Challenges in Managing Continuous Database Change

While it's becoming more common for core applications to use agile database development, there are three common challenges that tend to show up when implementing continuous database changes with agile methodologies. These include:

  1. An inability to accurately capture all configuration changes.
  2. Having too many errors in deployment or production.
  3. The inability to rollback.

When these challenges are left unaddressed, agile methodologies slow down processes instead of speed them up.  This is because the development process and tools were originally created in order to handle a system that was making 2-3 changes per year using a waterfall system, instead of continuous changes.

Continuous database changes require a new set of skills that might have atrophied or never been there to begin with in a waterfall system. For example,  continuous testing and tagging each change cycle are necessary steps that must now be done extremely fast. It's therefore crucial to establish some manner of deployment automation with a high level of visibility and manageability.

DB Change Management Best Practices

The best way to navigate through this complex process is by organizing these changes during the development stage. This includes:

  • Code changes 
  • Continuous database change
  • Configuration changes 
  • Metadata changes

This is important so that all the relevant requirements are identified for each piece of code and each change. This way, in the testing an staging environments, you can differentiate between the changes to determine which are ready to be deployed and which are not.

It's important to note that there's a myth that asserts that lumping all the changes together and deploying them at once saves time. More often than not, the opposite is true, with more mistakes as a result of individual changes not being taken into account before deployment.

While the development stage has adapted, and is able to pump out changes quickly, the operations department needs more time to monitor each change before publishing and deploying them. This is the problem that many organizations run into.

DevOps, Database Auditing & Error-Free Continuous Change

This is where DevOps comes in. Instead of the development and operations teams only communicating when introducing a change, the philosophy of DevOps insists that development and operations unite as a single team and work together from the onset.

DevOps-and-smart-database-auditing.png

While there is still a bit of apprehension regarding embracing DevOps for the database, database tools such as enforced database source control, database build automation tools, and database verification processes help transform the database into a stable resource in the DevOps tool chain.

The right database auditing solution, for example, monitors and controls changes to database objects. By enforcing defined roles, authenticating user privileges, and implementing internal as well as compliance policies, you can be confident in the operational integrity of your database at all times.

With proper controls in place, à la DevOps best practices and smart tools, you can effortlessly prevent unauthorized and counter-policy changes to your database, while producing a deep audit trail that outlines who did what to your database, when they did it and why it was done.  With this level of system transparency, you can instill complete security, ensure changes are being made in line with policy and regulatory requirements, and gain a new window into database performance with end-to-end automated database auditing. 

Most importantly, when something does go wrong, it'll be automatically flagged and you'll receive advanced notice that non-policy actions are being attempted in your database. The key to managing continuous database change is taking a proactive approach and automating as well and as deep safeguards as possible.

Putting it All Together: Smarter Practices, Better Outcomes

With a well-defined, well-enforced, and well-monitored database continuous integration policy in place  coupled with a watchdog database auditing apparatus running in the background at all times  you can rest assured that changes are being managed, quickly and appropriately, while minimizing manual documentation requirements for your development team.

When authorized team members check out and make changes to database objects or data, the check-in process documents who made changes, when the changes were made and from where, and requires the developer to enter additional notes documenting the reason for the change.

This streamlines database management through all stages of the development process  from development through testing to production, and allows for development to introduce continuous database changes in collaboration with operations  greatly diminishing the chances that these revisions would cause costly damage.  


Master the best practices for safe, efficient, and continuous database delivery  >>

continuous-database-delivery

About the Author

Yaniv Yehuda is the Co-Founder and CTO of DBmaestro, an enterprise software development company focusing on database development and deployment technologies. Yaniv has over 30 years of experience in software engineering, design and development. In recent years, his focus has been on raising awareness about the challenges around database process modernization, and how to support database Continuous Delivery.

Recent Posts