5 secrets 10% of Fortune 500 use to double application development output
This article liberally uses sections from The Threat That Lies Within by Yaniv Yehuda
Databases receive much attention so they will not become THE risk factor of IT. Budgeting DRPs, backups, top of the line DBAs – and yet, they still pose a major threat. Why?
In a fast-moving competitive market, if your competitor delivers relevant products, faster and with better quality, you’re eventually going to lose market share. This is exactly why companies need to be agile. They need to have better control over information, make quicker decisions, accelerate software delivery, and optimize quality control.
To answer revenue driving business questions companies are constantly improving applications and creating new applications. Application development depends upon provisioning environments for developers and QA. Once developers and QA teams are up and running on it these environments, code development requires means of managing the changes and the deployment of the changes. The slower and more costly provisioning and managing the development environments the more delays, bugs there will be in the applications and the less revenue businesses will generate.
The Database Bottleneck
One of the slowest, most difficult and costliest steps in application development is provisioning copies of and managing changes in databases for development and QA.
Code management has become straight forward with the use of source control tools such as Git, SVN and Perforce. Provisioning development environments has become efficient with Chef, Puppet and Jenkins.
But what about the database? How does one provision environments with multi-terrabyte databases and version control these databases as changes are made by multiple different developers and as multiple versions of code and database states need to be maintained? For all the advances in application development such as machine virtualization, agile development and DevOps practices, the database still stands as a huge barrier to development agility.
Database branching, development, merges and deployments are tricky; unlike code, a database is not a collection of files. Following best practices using proven file based tools often fails when dealing with the database – the container of our most valued asset – the business data. Too often the database is left behind and becomes the weakest link in the chain.
The difference between database development and application code development is so great, that in time, silos were created.
While application developers are moving forward, adopting great new tools and practicing Agile, automation, and continuous delivery, database development is done using a less controlled process. More craft than engineering, database development is often disconnected from the entire SDLC process. Tools, processes, and best practices are not shared.
The database, being such a valued asset, can very easily become that wobbly wheel that destabilizes the whole car.
Database Agility: Key to Fast Development
Databases can be managed just as efficiently as code.
In order to minimize the risks databases pose during the development cycle, the following should be addressed:
- Agile – implement database changes as part of shorty cycle task-based development. Deploy code changes and database changes hand-in-hand based on change requests. To accomplish use tools such as Jira
- Virtual – Virtualize your application stack and databases. Data virtualization can be accomplished with Delphix. Virtualized data and databases can be created in minutes no matter the size, can be branched and can be made via a self service interface or with by automated systems using APIs. A virtualized copy of a production environment will allow you to test production deployments, true to production’s latest data, and allow data to be developed and tested in parallel with with multiple environments. With this change, companies have doubled their application development output. Delphix also includes data masking in their solution to insure that each virtual database to insure data security.
- Change Management – Implement database tools to make sure database changes are properly managed as part of SDLC . By using DBmaestro to enforce version control and track and merge all changes, you’ll always have full control over who is doing what, where, and why. Once a development cycle has concluded, relevant changes can be automatically deployed into integration environments, identifying change conflicts and merging them, or pushing them to production.
- Testing automation – Follow change-focused testing and make sure nothing breaks as a result of changes will provide a solid safety net. Running unit tests with Oracle SQL Developer or Microsoft-focused tSQLt is a cost-free way to introduce unit testing for the database. Yet another way to test your database along with the application code, as one unit by using TestComplete to validate your common – and later less-common – scenarios will provide great confidence in your ability to deliver releases .
- Release Automation – The more you automate, the more accurately you can reproduce the changes introduced in development, test in testing environments, and repeat safely when going to production. A healthy SDLC with minimum risk and maximum efficiency can be achieved once you automate its processes and address its challenges on daily basis. Using IBM Urbancode Deploy can help manage your release activities and your configurations, and orchestrate the overall process.
Best of all, these types of solutions play very nicely with each other. So creating a virtual development branch with Delphix and masking its confidential content, managing development tasks with Jira, version controlling changes and packaging a release with DBmaestro, automatically testing this release with tSQLt or SQL Developer, and orchestrating the release process with uDeploy can all be combined into one slick, automated, and safe process.
The database presents a real challenge when it comes to following best practices. This is exactly how silos are created. A development department might follow different processes when dealing with code development vs. database development, or follow best practices for only some of its change efforts.
The best way to eliminate major risks and bottlenecks is to virtualize and automate and using the above virtualization and automation tools companies have doubled their application development output while at the same time eliminating bugs and increasing quality.