One of the jobs I’m currently working on is writing a technical whitepaper on Delivering DBaaS using EM12c. I realized as I was starting it that a technical whitepaper really isn’t the place for a step-by-step how-to sort of description, so I thought I’d better blog about it instead. Actually, I’m going to write a whole series of blog posts since, much like the series of blogs Kellyn and I wrote on the EM 188.8.131.52 release, the area is so damn big it’s impossible to cover in a single blog post! So this post will be the introduction, and I will add links to the additional areas as they get covered. If you’re already following this blog, you’ll be informed of each one as it gets posted, so don’t forget to follow the blog to get the whole series!
Database as a Service primarily started as a consolidation exercise for reducing capital expenditures (CAPEX), but as it evolved, organizations started looking into other key drivers such as self-service, showback / chargeback, and so on.
The various consolidation models that can be used to provide DBaaS are shown in the picture below. The simplest and most prevalent form of consolidation exists around server virtualization. Server virtualization offers a simple way of running multiple operating system instances on the same hardware. A better model, platform consolidation, consolidates multiple databases on the same operating system or a cluster. However, in both these cases, database sprawl is still an issue that invariably leads to larger administrative overheads and compliance challenges. An even better consolidation model is the ability to host multiple schemas from different tenants within the same database, using Oracle Database 12c’s multitenant architecture:
Oracle Enterprise Manager Cloud Control 12c delivers the complete spectrum of database consolidation as depicted above. This blog series describes the methodologies used for delivering DBaaS using Enterprise Manager 12c. Before we can look describe such methodologies, however, it is important to have a common understanding of the components that make up the underlying architecture.
DBaaS Architecture and Components
In Oracle terminology, hosts containing monitored and managed targets are grouped into logical pools. These pools are collections of one or more Oracle database homes (used for database requests) or databases (used for schema requests). A pool contains database homes or databases of the same version and platform – for example, a pool may contain a group of Oracle Database 184.108.40.206 container databases on Linux x86-64.
Pools can in turn be grouped into zones. In the DBaaS world, a zone is typically comprised of a host, an operating system, and an Oracle database. In a similar vein, when defining Middleware as a Service (MWaaS) zones, a zone is comprised of a host, an operating system, and an Oracle WebLogic application server. Collectively these MWaaS and DBaaS zones are called Platform as a Service (PaaS) zones. Users can perform a few administrative tasks at the zone level, including starting and stopping, backup and recovery, and running chargeback reports for the different components making up a PaaS zone.
In the DBaaS view of a PaaS zone, self-service users may request new databases, or new schemas in an existing database can be created. The databases can be either single instance or a Real Application Clusters (RAC) environment, depending upon the zones and service catalog templates that a user can access.
Diagrammatically, these components and their relationships are shown in the picture below:
Now that we understand the architecture and components that are used in the different consolidation models, we need to examine some standard deployment issues that need to be addressed. These include security, operational, resource and fault isolation, as well as scalability and high availability.
Security isolation is often the first pain point that that management worries about in any cloud model. Is my data safe? What options do I have for securing my consolidated infrastructure? How can I prevent the cloud DBA from accessing and viewing my data? How can I ensure that my network traffic is secured? Can I ensure I meet compliance regulations?
With all of these questions, security isolation has become an essential component of any cloud deployment. Security breaches can arise not only externally but internally as well, so all aspects of your cloud infrastructure must be secured.
Operational isolation in a DBaaS cloud requires that any maintenance being performed, on either a database or the environment it operates in, affects the smallest number of other databases in the same pool. Clearly this becomes more problematic for operating system or Grid Infrastructure maintenance, though this can be minimized by rolling upgrades where allowed. Isolation for patching an Oracle database kernel can be provided by minimizing the number of databases per Oracle home, but adding Oracle homes also increases management overheads. Database startup and shutdown would normally be considered database-dependent operations, but administrative errors like having the wrong ORACLE_SID set can lead to unforeseen impacts on other databases. Again, isolation can be provided at the ORACLE_HOME level and by having different user ID’s / group ID’s at the kernel level, but this also leads to more management overhead, and, it must be said, more likelihood of human error.
In a DBaaS cloud, resource isolation deals with the allocation and segregation of resources such as CPU, memory, network (public and private) and storage (I/O per second and overall capacity). How does the CPU usage of my database affect other databases in the DBaaS cloud? How much memory should I allocate to a specific database? Can I restrict the network utilization, both at the public network and interconnect levels, to not impact other databases? Likewise, how can I guarantee storage capacity and I/O’s per second for my databases?
Fault isolation in a DBaaS cloud is normally provided at the database level, since that is the unit of granularity in the multitenant architecture. Each database and its associated instance (or instances, in the Real Application Clusters environment) need to be isolated from other databases. Even when all databases run from a single ORACLE_HOME, database faults are normally isolated to a failing instance, so fault isolation is maintained by fencing off the offending instance. However, other failures may require handling at different levels. For example, how do I deal with a server, network or storage failure? These are normally handled by some form of redundancy e.g. multi-node setups, active / passive switches, bonded networks, or redundant storage such as ASM redundancy.
Scalability is a fundamental characteristic of DBaaS architectures by virtue of their support for self-service, elasticity, and multi-tenancy. Oracle’s database technologies provide a number of different ways to support scalability when delivering database services, including resource management / quality of service, addition of extra storage through such functionality as multiple Exadata Database Machine frames, horizontal scaling via Real Application Clusters when service demands increase beyond the capabilities of a single machine, and scalable management resources where Enterprise Manager can add management nodes as the number of targets under management grows.
DBaaS High Availability
Not all consumers require the same level of availability in a cloud environment. Oracle’s DBaaS self-service catalog allows the capability to include different levels of availability using a metals model, as shown in the table below:
For example, Bronze provides a single instance database service (possibly via RAC One Node), while if you look at the other extreme of Platinum that would normally include a RAC database with multiple standbys. These standbys might include a near standby in the same data center as your RAC database and a far standby in a completely separate remote data center. All of this helps to improve the high availability and disaster recovery goals you have for that database. In EM 220.127.116.11 with the added support for Data Guard, you now have the ability with just a few clicks to provision the primary and multiple standbys across different data centers. The standbys can be either single instance or a RAC configuration.
Links to other blog posts
That’s enough to start with. As I add more details to the whitepaper, I’ll add more blog posts here so stay tuned!
Database Consolidation in EM 18.104.22.168 – PDBaaS Setup
Using the Self Service Portal with PDBaaS in EM 22.214.171.124
Schema Consolidation in EM 126.96.36.199 – Setup
Using the Self Service Portal with Schema as a Service in EM 188.8.131.52
Metering and Chargeback