Build is an overloaded term in the world of software engineering. Building software used to be mainly a fancy way of saying “programming”. Now after the construction of the code, the actual build process is kicked off, that takes the work from the individual programmer and turns it into something far more than that: team owned code that is ready to be shipped (deployed to production). In a few words, there is a lot of meaning. The step from an individual developer’s working code to a shippable product is a huge one.
The code to be adopted by the team must have test coverage and passing tests, must comply with coding standards and guidelines and must be thoroughly peer reviewed. It must be compiled, configured and deployed in automated, zero-touch processes. And when deployed it must be operable. The next picture visualizes this road from a twinkle in the product owner’s eye to running software.
Different technologies and platforms require a trajectory that is similar in structure and specialized in tools and actual implementation. The pipeline that produces a Java Web Application from the developer’s source code uses a different set of tools and rules than for example an Oracle Database application.
Databases are special – because they combine structures or configuration instructions (DDL) with stateful data. We cannot just throw away the structures to create the new version of those structures – because these structures are database tables that contain data that we most probably do not want to lose. Database applications are more than just tables – they consist of other database objects such as Views and Synonyms as well as executable code in the form of triggers and stored procedures. The interaction with the runtime platform – not the operating system or the application server but the database – is different in the CI/CD pipeline for database applications than we are used to for other types of applications. And in all honesty: the world of databases has not gone through the same evolution in terms of software engineering as for example application development with Java, .NET/C#, Python or many other technologies have.
Senior Oracle architect and DevOps engineer Gert-Jan Paulissen has been active with database technology (especially Oracle) for a very long time. And he has worked on software build – in the CI/CD sense of the word as well as the software development meaning – for decades too. He has dedicated a lot of time to investigating best ways of working with CI/CD for (Oracle) Database applications. How to structure directories containing the sources, how to use the source code control system and how to work with naming. And: which tools are best to automate the process of taking source code, verifying its quality and functionality, producing deployable software and actually rolling it out.
Gert-Jan has written six articles to share his findings with the rest of us. These articles are a valuable guide to anyone dealing with the challenge of bringing Oracle Database applications into production in a structured, efficient, repeatable and error free (or at least error poor) way. The articles have been published on the AMIS Technology Blog for you to benefit from.
I would like to thank Gert-Jan for allowing us the benefit of his research and practical experience.
All articles in this series
3. Oracle Database and Oracle APEX
“How to build an Oracle Database application (that supports APEX, Java, React or any other front-end) (3)”
4. Oracle SQL Developer Data Modeler
“How to build an Oracle Database application (that supports APEX, Java, React or any other front-end) (4)”
5. Git, Subversion, Maven and Flyway
“How to build an Oracle Database application (that supports APEX, Java, React or any other front-end) (5)”
6. Oracle SQL Developer, utPLSQL, SonarQube, Perl, Ant and DevOps
“How to build an Oracle Database application (that supports APEX, Java, React or any other front-end) (6)”