We’ve posted recently about database developers feeling left out of agile processes. You may wonder how application developers can have it so easy – scrums, sprints and automation – to deploy updates at what can seem like an astonishing pace.
Of course, the risk factors in application development are different from those in database development. For one thing, rolling back buggy application code to an earlier version is pretty easy. You can’t simply roll back a database containing buggy scripts, because the risk of transactional data loss is too great.
So instead your process is a cautious one. You test, review and stage changes to your database manually.
How will you ever be able to synchronize database and application releases when your processes don’t match theirs and you have to work manually?
To keep pace with the agile application development teams who rely on your database as a back end, you can work toward achieving agile database development by automating the following important steps in the development process:
Everyone on the database development team needs to see project requirements, folders, standards and database object references, and utilize version control consistently. By enabling sharing via server-based application, all developers can access the project details they need to do their jobs more effectively.
It’s a lot of work to write test cases — on the order of 10x more work to thoroughly test. This area of development is ripe for automation. Instead of laboriously writing test code or skipping some testing steps altogether, it’s more efficient to describe the required tests in terms of the use cases they have to cover, then have a tool interpret them as a PL/SQL package. That way, developers spend more time on their core responsibilities and the tests stay closer to the true function of the apps.
“Terry’s got a PROCEDURE outside of a package. Again.”
Everybody’s tired of reminding Terry that PROCEDUREs and FUNCTIONs belong inside a package. That’s a good reason to streamline code reviews by automating the analysis of PL/SQL against the team’s rules and best practices. Developers look for hundreds of things when they review one another’s code, so automating the process and storing results are good ways to deliver higher-quality code faster.
Writing SQL queries is one thing; cracking them back open to optimize performance is another. There’s not much time for optimization when you’re working within an agile process, so automate with a tool that looks for inefficiencies and rewrites optimal SQL implementations for you. You can then choose the best-performing execution plan and syntax for your environment.
Manually running project-wide code reviews, PL/SQL regression tests and performance tests can certainly reduce risk, but it can introduce human error at the same time. With the frequent code updates that agile is known for, delivering high-quality, high-performing code is like aiming at a moving target. Using continuous integration with a utility like Jenkins removes much of the labor without increasing risk.
We’ve put together a tech brief, Enabling Agile Database Development with Toad, describing how you can streamline your agile process with Toad Development Suite for Oracle and Toad Intelligence Central. Read it for details on simplifying and automating database development processes to enable agile in your organization. The sooner you automate labor-intensive, repetitive tasks, the sooner you and your fellow database developers can get back to writing killer code.
Photo credit: Peter Mooney (CC BY 2.0)