Raytheon Company is collaborating with Red Hat to develop a new, security-focused software development solution, known as DevSecOps, for enterprise environments.
Organizations need to make a concerted effort to "shift left" with their overall data architecture discussions. This shift allows more of the right questions about data to be asked, answered and incorporated early on in the design of the overall application.
Asking the Right Questions About Data
Part of this early collaborative work may involve asking key questions about data. These include the best ways for an application and its users to interact with the underlying data, such as:
■ How will data be ingested and from where?
■ How will we access the data?
■ How and where will we store it?
■ How do we update and/or maintain legacy databases as we build for new use cases?
■ What types of data will we have? How will the types change or be increased over time?
■ How will we query from it (and what are the most common queries users will want to run?)
■ How will we manage and scale the data in use?
■ How will we protect the data from data loss, disaster or corruption?
■ How will we secure the data?
If these questions sound a lot like features in a data lifecycle, you're right. But, such basic questions about data are often overlooked in the rush to deliver, integrate, test and deploy application code. So often, what happens instead is an application team creates a design, then hands it off saying, "Okay, now create a data architecture to support the application."
This fundamental miss with data and collaboration at the start often leads to poor database architecture decisions later. It can also cause DevOps teams to resort to workarounds to accommodate such wrong architecture choices made at the start. This may cause some development teams to choose to circumvent DBA involvement altogether. In this case, they might even find themselves opting to use public cloud services instead (or some other types of data management) to support their application.
Instead, application teams should choose the path of early collaboration between developers and all functions of IT (including DBAs). This approach can offer better DevOps outcomes. It also helps move organizations toward a future where data architects provide an effective "bridge" between all parties critical to the application's success: From the needs of developers to the platforms provided by DBAs and the underlying infrastructures needed to enable them.
Changing Skillsets, Changing Minds
As with most things DevOps-related, success at the data layer has as much to do with changing the education, mindset and culture toward database architectures and database deployment methods as it does with the specific steps in the DevOps pipeline.
For example, if most DBAs in your organization are narrowly focused in one area (such as an Oracle DBA or SQL Server admins), your organization may benefit from investing in education to close skill gaps. Such investment can help expand the knowledge and exposure of that workforce to DevOps practices or emerging database approaches to cloud-native application patterns.
It can also help some organizations to first identify those individuals in the organization who want to transform, innovate, and learn about new tools, methods and practices.
Hiring those with that expertise already in place is another option. When you hire new skillsets, however, the answer may not be just to hire several noSQL administrators. This tactic will not necessarily solve your data problem, either. It may be just as beneficial (or more so) to hire someone with little specific noSQL skills but who is good at thinking about data in a different way.
Business First, Technology Second
In our practice, we are often asked to weigh in on technology choices to support DevOps efforts in emerging areas like IoT, Big Data and advanced analytics. Organizations ask us about using traditional relational databases (SQL Server, Oracle, etc.) vs. NoSQL databases (MongoDB, Cassandra, etc.). They ask about the merits of one NoSQL iteration over another. They ask about how to manage persistent data in container environments. They even ask about workarounds when the data choices they've made cause other, unexpected problems.
We do our best to answer these questions. But, whenever possible, we also tell organizations to back up a few steps and start, instead, from their business objectives:
■ What are you trying to accomplish?
■ What are your business drivers?
■ How do you hope data will be used in these contexts?
Answers to these questions can help you make better choices about the best data architecture to support your growing applications.
Ultimately, new tools and technologies can enable a lot of impressive data architectures. But, just throwing tools at the data problem is not enough. Early effort and investment in people, process and cross-departmental communication is just as important to a successful data outcome for any project.
Many of the discussions we have now are trying to take everyone back to the steps they skipped. This harks back to the fundamentals of software engineering: Addressing things early so you don't have problems later.
Unfortunately, data is the one component in the technology stack that you can't easily undo once you've chosen a specific path with your application's data architecture. When it comes to planning for data, it really is a "Pay Now" or "Pay Later" equation.
Isn't it best to take the time and choose your data path wisely rather than paying later for slowdowns or other issues with deployment and performance?