Oracle Reference Architecture - General
Oracle Reference Architecture - General
Oracle Reference Architecture - General
September 2010
ORA Application Infrastructure Foundation, Release 3.0
E14479-03
Copyright © 2009, 2010, Oracle and/or its affiliates. All rights reserved.
Contributing Author: Stephen Bennett, Dave Chappelle, Bob Hensle, Mark Wilkins, Jeff McDaniel, Cliff
Booth
Warranty Disclaimer
As individual requirements are dependent upon a number of factors and may vary significantly, you should
perform your own tests and evaluations when making technology infrastructure decisions. This document
is not part of your license agreement nor can it be incorporated into any contractual agreement with Oracle
Corporation or its affiliates. If you find any errors, please report them to us in writing.
This document may provide information on content, products, and services from third parties. Oracle is not
responsible for and expressly disclaim all warranties of any kind with respect to third-party content,
products, and services. Oracle will not be responsible for any loss, costs, or damages incurred due to your
access to or use of third-party content, products, or services.
Limitation of Liability
IN NO EVENT SHALL ORACLE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL OR
CONSEQUENTIAL DAMAGES, OR DAMAGES FOR LOSS OF PROFITS, REVENUE, DATA OR USE,
INCURRED BY YOU OR ANY THIRD PARTY, WHETHER IN AN ACTION IN CONTRACT OR TORT,
ARISING FROM YOUR ACCESS TO, OR USE OF, THIS DOCUMENT OR THE INFORMATION.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks
of their respective owners.
Contents
Preface ................................................................................................................................................................. ix
Document Purpose...................................................................................................................................... ix
Audience....................................................................................................................................................... ix
Document Structure .................................................................................................................................... x
How to Use This Document....................................................................................................................... x
Related Documents ..................................................................................................................................... x
Conventions ................................................................................................................................................. xi
1 Introduction
1.1 RASP Defined .............................................................................................................................. 1-2
1.1.1 Reliability .............................................................................................................................. 1-2
1.1.1.1 Message Reliability....................................................................................................... 1-2
1.1.1.2 Transaction Reliability ................................................................................................. 1-3
1.1.2 Availability ........................................................................................................................... 1-3
1.1.3 Scalability .............................................................................................................................. 1-3
1.1.4 Performance.......................................................................................................................... 1-4
1.2 RASP and Foundation Infrastructure ...................................................................................... 1-4
2 Computing Foundation
2.1 Distributed Computing.............................................................................................................. 2-2
2.2 On-Demand Computing ............................................................................................................ 2-2
2.3 Utility Computing....................................................................................................................... 2-2
2.4 Grid Computing.......................................................................................................................... 2-2
2.5 Cloud Computing ....................................................................................................................... 2-3
2.6 Elastic Computing....................................................................................................................... 2-3
2.7 Virtualization............................................................................................................................... 2-3
3 Distributed Computing
3.1 Choosing the right architecture ................................................................................................ 3-3
3.2 The Fallacies of Distributed Computing ................................................................................. 3-4
3.3 Distributed Computing and Java Enterprise Edition (JEE) .................................................. 3-4
3.4 Web Services Standards ............................................................................................................. 3-5
iii
3.5 Distributed Computing Principles ........................................................................................... 3-5
4 Grid Computing
4.1 Drivers for Grid Computing ..................................................................................................... 4-2
4.2 Grid Computing Capabilities.................................................................................................... 4-2
4.3 Grid computing and SOA.......................................................................................................... 4-3
4.4 Enterprise Grid ............................................................................................................................ 4-4
4.5 Application Grid ......................................................................................................................... 4-5
4.5.1 Drivers for Application Grid.............................................................................................. 4-6
4.5.2 Components of Application Grid...................................................................................... 4-6
4.5.3 Clustering.............................................................................................................................. 4-7
4.5.4 Architectural issues addressed .......................................................................................... 4-8
4.5.5 Data Grid............................................................................................................................... 4-8
4.5.5.1 Architectural issues addressed ................................................................................... 4-9
4.6 Database Grid ........................................................................................................................... 4-10
4.6.1 Service Grid Pattern ......................................................................................................... 4-12
4.7 Evolution of Grid Architecture .............................................................................................. 4-13
4.8 Grid Management .................................................................................................................... 4-15
4.9 Grid Computing Principles .................................................................................................... 4-16
4.10 Cloud Computing .................................................................................................................... 4-16
5 Virtualization
5.1 Server Virtualization .................................................................................................................. 5-2
5.1.1 Software Level Virtualization ............................................................................................ 5-3
5.1.2 Hardware Level ................................................................................................................... 5-3
5.1.3 Operating System Subsets .................................................................................................. 5-3
5.1.4 Paravirtualization ................................................................................................................ 5-3
5.2 Service Virtualization ................................................................................................................. 5-3
5.3 Virtual Machine (VM) Images or Templates .......................................................................... 5-4
5.4 Virtualization Principles ............................................................................................................ 5-4
5.5 Cloud Computing ....................................................................................................................... 5-4
6 Containers
6.1 Principles and best practices ..................................................................................................... 6-2
iv
7.1.4.2 Cluster-Node Affinity .................................................................................................. 7-5
7.1.4.3 Read/Write Ratio and Data Sizes .............................................................................. 7-5
7.1.4.4 Interleaving Cache Reads and Writes........................................................................ 7-5
9 Summary
A Further Reading
A.1 Related Documents.................................................................................................................... A-1
A.2 Other Resources and References.............................................................................................. A-1
v
List of Figures
1–1 ORA Application Infrastructure ............................................................................................... 1-1
2–1 Computing Model Relationships.............................................................................................. 2-1
3–1 Simple Client-Server Architecture............................................................................................ 3-2
3–2 Three-tier Architecture............................................................................................................... 3-2
3–3 N-Tier Architecture..................................................................................................................... 3-3
4–1 Enterprise Grid ............................................................................................................................ 4-5
4–2 Components of Application Grid ............................................................................................. 4-6
4–3 Data Grid...................................................................................................................................... 4-9
4–4 Database and Storage Grids ................................................................................................... 4-11
4–5 Service Grid Pattern................................................................................................................. 4-13
4–6 Evolution of Grid Computing ................................................................................................ 4-14
5–1 Virtualization Approaches ........................................................................................................ 5-2
7–1 Read-Through Cache.................................................................................................................. 7-2
7–2 Refresh-Ahead Cache ................................................................................................................. 7-3
7–3 Write-Through Cache................................................................................................................. 7-3
7–4 Write-Behind Cache.................................................................................................................... 7-4
8–1 ORA Foundation Infrastructure Oracle Technology Mapping............................................ 8-1
8–2 Grid Computing with Oracle Products ................................................................................... 8-3
8–3 Oracle Application Grid Components ..................................................................................... 8-3
8–4 JRockit Architecture.................................................................................................................... 8-5
8–5 Data Grid Using Oracle Coherence .......................................................................................... 8-9
8–6 Oracle Coherence and Oracle TimesTen .............................................................................. 8-10
8–7 Oracle TUXEDO ....................................................................................................................... 8-12
8–8 SALT .......................................................................................................................................... 8-14
8–9 Oracle VM ................................................................................................................................. 8-15
vi
Send Us Your Comments
Oracle welcomes your comments and suggestions on the quality and usefulness of this
publication. Your input is an important part of the information used for revision.
■ Did you find any errors?
■ Is the information clearly presented?
■ Do you need more information? If so, where?
■ Are the examples correct? Do you need more examples?
■ What features did you like most about this document?
If you find any errors or have any other suggestions for improvement, please indicate
the title and part number of the documentation and the chapter, section, and page
number (if available). You can send comments to us at [email protected].
vii
viii
Preface
Document Purpose
This document describes the concepts and capabilities of the application infrastructure
and defines the platform on which solutions are built. The primary focus of this
document is the middleware stack (Oracle Fusion Middleware) but it also touches
upon a few relevant areas outside the middleware stack.
Audience
This document is primarily intended for Infrastructure Architects responsible for
building next generation enterprise infrastructure. Enterprise Architects and Project
Architects that want to understand the best way to build applications, processes, and
SOA Services will gather valuable insight from a good understanding of the
capabilities of the ORA application infrastructure.
ix
Document Structure
This document is organized into the following sections.
Chapter 1 - gives an introduction to ORA application infrastructure.
Chapter 2 - gives an overview of the computing foundation concepts.
Chapter 3 - discusses distributed computing concepts.
Chapter 4 - defines grid computing and provides an overview of the grid capabilities
and architectural concepts.
Chapter 5 - discusses the concepts of virtualization and how it plays a key role in the
foundation infrastructure.
Chapter 6 - briefly covers the role of containers in the application infrastructure.
Chapter 7 - gives a brief overview of the data management capabilities and how
caching plays an integral role in the foundation infrastructure.
Chapter 8 - gives an overview of the Oracle products that map to the application
infrastructure layers.
Chapter 9 - provides a summary of this document
Appendix A - provides a list of documents and URLs for further reading
Related Documents
IT Strategies from Oracle (ITSO) is a series of documentation and supporting collateral
designed to enable organizations to develop an architecture-centric approach to
enterprise-class IT initiatives. ITSO presents successful technology strategies and
solution designs by defining universally adopted architecture concepts, principles,
guidelines, standards, and patterns.
x
ITSO is made up of three primary elements:
■ Oracle Reference Architecture (ORA) - defines a detailed and consistent
architecture for developing and integrating solutions based on Oracle
technologies. The reference architecture offers architecture principles and
guidance based on recommendations from technical experts across Oracle. It
covers a broad spectrum of concerns pertaining to technology architecture,
including middleware, database, hardware, processes, and services.
■ Enterprise Technology Strategies (ETS) - offer valuable guidance on the adoption
of horizontal technologies for the enterprise. They explain how to successfully
execute on a strategy by addressing concerns pertaining to architecture,
technology, engineering, strategy, and governance. An organization can use this
material to measure their maturity, develop their strategy, and achieve greater
levels of adoption and success. In addition, each ETS extends the Oracle Reference
Architecture by adding the unique capabilities and components provided by that
particular technology. It offers a horizontal technology-based perspective of ORA.
■ Enterprise Solution Designs (ESD) - are industry specific solution perspectives
based on ORA. They define the high level business processes and functions, and
the software capabilities in an underlying technology infrastructure that are
required to build enterprise-wide industry solutions. ESDs also map the relevant
application and technology products against solutions to illustrate how
capabilities in Oracle’s complete integrated stack can best meet the business,
technical and quality of service requirements within a particular industry.
This document is one of the series of documents that comprise Oracle Reference
Architecture. Underpinning Oracle Fusion solutions and infrastructure is a computing
platform that provides reliability, availability, scalability, and performance (RASP)
qualities for enterprise-class computing. ORA Application Infrastructure describes
these concepts and capabilities and defines the platform on which solutions are built.
Please consult the ITSO web site for a complete listing of ORA documents as well as
other materials in the ITSO series.
Conventions
The following typeface conventions are used in this document:
xi
Convention Meaning
boldface text Boldface type in text indicates a term defined in the text, the ORA
Master Glossary, or in both locations.
italic text Italics type in text indicates the name of a document or external
reference.
underline text Underline text indicates a hypertext link.
In addition, the following conventions are used throughout the Oracle Fusion
Reference Architecture documentation:
“SOA Service” - In order to distinguish the “service” of Service-Oriented Architecture
from the wide variety of “services” within the industry, the term “SOA Service”
(although somewhat redundant) will be used throughout this document to make an
explicitly distinction for services that were created as part of an SOA initiative; thus
distinguishing SOA Services from other types of services such as Web Services, Java
Messaging Service, telephone service, etc.
xii
1
Introduction
1
This infrastructure for SOA Services and business solutions requires a reliable, highly
available, scalable and high performance foundation that supports the stringent
non-functional requirements and core capabilities of the system. As shown in
Figure 1–1, the foundation infrastructure covers the following layers:
Introduction 1-1
RASP Defined
■ Platform:
■ Virtualization: Virtualization is a technique for hiding the physical
characteristics of computing resources from the way in which other systems,
applications, or end users interact with those resources. It creates a layer of
abstraction that allows the underlying resources to be managed independent
of the applications that run on them.
■ Containers: Containers provide a runtime platform for SOA Services and
applications. They provide common services like transaction support,
management, security, and network communications that can be leveraged by
the applications. Applications Servers (e.g. Oracle WebLogic Server), OLTP
monitors (e.g. Oracle TUXEDO), and Inversion of Control (IoC) containers
(e.g. Spring) are some of the examples in this category.
■ Computing Foundation:
■ Distributed Computing: Distributed computing allows multiple, autonomous
computers to work in concert to solve a problem or provide a business
solution. Distributed computing is used in the vast majority of modern
enterprise business solutions.
■ Grid Computing: Grid computing provides the ability to pool and share
physical resources. It is a form of distributed computing that allows software
to run on multiple physical machines in order to achieve availability and
scalability requirements. Load can be shifted from one physical machine to
another in order to recover from a failure or to respond to changes in demand.
■ Caching: Caching increases performance by keeping data in memory rather
than requiring the data to be retrieved from external storage. Distributed
caching uses the memory of multiple physical machines to store data while
keeping all instances of the data consistent regardless of physical location.
These models are discussed further in Chapter 7.
1.1.1 Reliability
Reliability is the ability of a system or component to perform its required functions
under stated conditions for a specified period of time. Another way to think about
reliability is that it is the percentage of time that an application is able to operate
correctly. For instance, an application may be available, yet unreliable if it cannot fully
provide the capabilities required of it. An example to illustrate high availability but
low reliability is a mobile phone network: While most mobile phone networks have
very high uptimes (referring to availability), dropped calls tend to be relatively
common (referring to reliability).
Several aspects of reliability are important within ORA, particularly the reliability of
the messages and the transaction reliability.
1.1.2 Availability
Availability is the degree to which a system or component is operational and accessible
when required for use. Availability is generally expressed in terms of the percentage
up time using 9s. For example, five 9s availability means 99.999% up time, which
translates to no more than 5.26 minutes of unplanned downtime per year.
In most cases, mission critical and business critical applications are deployed on
Oracle Fusion stack. This makes availability one of the high priorities of ORA. ORA
foundation must ensure that the platform can support the stringent availability
requirements of the solutions and SOA Services that run on top of it. In particular,
SOA is built around the principles of sharing and reuse. This means that the SOA
Services should support consumers with different consumption patterns and service
levels. The availability of the SOA Services is determined based on the aggregate
requirements of the consumer community, and it puts higher expectations on the
availability of the SOA Service itself. The infrastructure must be able to guarantee the
high availability requirements of the SOA Services.
1.1.3 Scalability
Scalability is the ability to seamlessly grow the system to support the increase in
capacity requirements. This has to be done by adding resources without the need to
modify the application. Today's businesses demand a high degree of flexibility and
agility. The architecture should be highly dynamic to meet the changes in business.
Most enterprises are concerned about capital expenses leading to the trend in
Introduction 1-3
RASP and Foundation Infrastructure
on-demand capacity. This drives the need to package and manage resources efficiently
and allocate them dynamically to achieve the scalability requirements.
Linear scalability is the goal of a scalable architecture, but it is difficult to achieve. The
measurement of how well an application scales is called the scaling factor (SF). A
scaling factor of 1.0 represents linear scalability, while a scaling factor of 0.0 represents
no scalability. When planning for extreme scale, the first thing to understand is that
application scalability is limited by any necessary shared resource that does not exhibit
linear scalability.
Vertical Scalability: Vertical scalability means adding resources to a single node in a
system, typically involving the addition of CPUs or memory to a single computer. It is
also referred to as scaling up.
Horizontal Scalability: Horizontal scalability means adding more nodes to an
operating environment, such as adding a new computer. It is also referred to as scaling
out. Grid infrastructures enable systems to scale out linearly and respond rapidly to
changes in load.
1.1.4 Performance
Performance refers to the responsiveness and throughput of the system. Performance
should be measured in the context of the Service Level Agreements (SLA). The
architecture should ensure that the performance requirements stated in the SLA are
met and there is sufficient room for future growth and contingency. Performance is
generally expressed in terms of the response time, latency, or transactions per second.
Performance is an important consideration in a Oracle Fusion environment. The
design and architecture should consider optimization of performance to address the
challenges faced. Each area in ORA has its own challenges and requirements for high
performance. For example, the key challenges for SOA performance in Oracle Fusion
environment are:
■ SOA is a distributed architecture. The SOA Service components and the
consumers are highly distributed and communicate over the network. This would
introduce network latency and other aggregation delays.
■ SOA is built on the principles of loose coupling and location transparency. This
introduces additional layers of abstraction in discovering and consuming SOA
Services.
■ Oftentimes SOA involves intermediaries for mediation, monitoring, and
management. This adds an additional cost to the performance.
■ SOA requires support for heterogeneous platforms. This drives the need for
standardized message formats and protocols that might not be the optimal from a
performance standpoint.
Introduction 1-5
RASP and Foundation Infrastructure
Over the past several decades, the field of computing has evolved quite rapidly. The
evolution has seen many paradigms including monolithic architecture, client/server
computing, object oriented computing, web computing, and distributed computing.
Businesses have started demanding a lot more flexibility, performanc,e and
effectiveness. The role of IT organizations has shifted from business support to
strategic partnership. Businesses required dynamic and cost effective business models
to expand and grow. IT organizations needed to get creative to keep up with the
demands of the business. This trend spawned a series of on-demand and utility
computing models. This means that architects have a lot more choices on the
computing foundation they want to implement. However, a deeper understanding of
these choices is required in order to run the tradeoff analysis and pick the most
appropriate model.
Figure 2–1 shows the various computing models and their relationships to each other.
Each of these models is described briefly below. Some of these models do not have
industry standard definitions and there is a lot of confusion around what these terms
mean and how they relate to each other. The objective of this diagram is to clarify the
definitions and roles of these models.
2.7 Virtualization
Virtualization is a technique for hiding the physical characteristics of computing
resources from the way in which other systems, applications, or end users interact
with those resources. Virtualization benefits both Grid computing and Cloud
computing. Virtualization can happen at different levels, server, hardware,
middleware, database, container, or services. Grid computing generally uses
middleware and database virtualization, while cloud computing uses server
In the three tier architecture, business logic is handled in the middle tier, presentation
rendering is handled on the client and data management is handled in the backend, as
shown in Figure 3–2. This architecture allows multiple clients to access centrally
deployed business logic components. This allows centralized distribution and
management of resources.
N-tier architecture refers to multi-tier architecture that may involve several layers. Web
architectures are typically N-tier architectures with client tier, web tier, application tier,
and data tier. N-tier architectures enable tiered optimization by allowing tuning and
scaling of individual tiers. A sample N-tier architecture is shown in Figure 3–3.
JEE provides a Java based distributed computing platform. The Java/JEE standards
like EJB, Servlet/JSP, JDBC, JMS, RMI and the associated design patterns allow
scalable distributed object platforms to be deployed as a sophisticated foundation for
SOA.
Today's enterprises gain competitive advantage by quickly developing and deploying
custom applications that provide unique business services. Whether they are internal
applications for employee productivity or internet applications for specialized
customer or vendor services, quick development and deployment are key to success.
Portability and scalability are also important for long term viability. Enterprise
applications must scale from small working prototypes and test cases to complete 24 x
7, enterprise-wide services, accessible by tens, hundreds, or even thousands of clients
simultaneously.
However, multitier applications are hard to architect. They require bringing together a
variety of skill sets and resources, legacy data and legacy code. In today's
heterogeneous environment, enterprise applications have to integrate services from a
variety of vendors with a diverse set of application models and other standards.
As a single standard that can sit on top of a wide range of existing enterprise systems,
database management systems, transaction monitors, naming and directory services,
and more, the JEE platform breaks the barriers inherent between current enterprise
systems. The unified JEE standard wraps and embraces existing resources required by
multitier applications with a unified, component-based application model. This
enables the next generation of components, tools, systems, and applications for solving
the strategic requirements of the enterprise.
The JEE specification also supports emerging Web Services technologies through
inclusion of the WS-I Basic Profile. WS-I Basic Profile compliance means that the
developers can build applications on the JEE platform as Web services that
interoperate with Web services from non-JEE compliant environments.
Enterprise Grids have two primary grid layers: Database Grid and Application Grid
that encompasses Data Grid.
Application Grid layer provides the following capabilities:
■ Application virtualization
■ Service virtualization
■ Provisioning on demand
■ Data Grid layer that provides the following capabilities:
■ Data virtualization services
■ Parallel processing.
■ Transaction integrity
Database grid layer provides the following capabilities:
■ Guaranteed Quality of Service
■ Scale out persistence
■ Automatic storage management
These layers are discussed in detail below.
Figure 4–2 above shows the components of Application Grid. The primary
components are:
■ Grid Services and Applications: are the SOA Services and applications that are
deployed on the Grid.
■ Data Grid: is the layer that provides in-memory distributed data caching services.
This is an important part of the Application Grid as it provides the ability to
cluster and replicate server instances while maintaining performance. This layer
provides persistence, events, messaging and analytics capabilities to maintain
integrity and consistency of data. Data Grids are explained more in Section 4.5.5.
■ Containers: host the applications, SOA Services and data grid components.
Application servers like Oracle WebLogic, Spring, TUXEDO, and CORBA are
some of the examples of containers. These containers run on JVMs or natively.
■ Management: Grid control and application/service monitoring and management
are provided by the management components.
■ Development tools: In addition to the application development tools and IDEs,
Grid will require addition configuration and management tools to provision and
manage the grid environments.
4.5.3 Clustering
The ability to distribute work across nodes in a cluster is the basic enabler for
containers to be assembled in a grid architecture and form the application grid. The
particular qualities of a container's clustering mechanism, like how quickly and
dynamically nodes can be added to and removed from clusters and how automatic
such adjustment can be made, strongly determine how effective a particular
application grid architecture can be made.
Clustering is one of the basic building blocks of grid computing and helps fulfill high
availability and fault tolerance requirements. Clustering is typically done at the
container level. The runtime “container” is the foundational element in middleware. In
the Java world the container is most commonly an application server such as Oracle
WebLogic Server; in the C/C++/COBOL world it is a transaction processing monitor
(TPM) such as Oracle Tuxedo.
There are two broad categories of functionality provided by a container: the functions
invoked explicitly by the contained code, and the functions carried out irrespective of
the contained code. The first category includes the application programming interfaces
(APIs) implemented by the container--in the case of Java application servers these are
the Java Enterprise Edition APIs such those supporting transactions, Web services, etc.
The second category includes management, availability, and scaling capabilities that
are independent of the contained code.
The first category, the APIs, are largely about developer productivity (developers
focus on higher level business logic rather than constantly re-inventing/rewriting
low-level code) reliability (API functionality implemented in the container is mature
and well-tested) and ease of integration (interfaces are standardized). The second
category of container functions is where “enterprise-class” is manifested: this is where
a basic piece of code becomes manageable, scalable, highly available, and
high-performance.
The fundamental mechanism that containers implement to achieve manageable and
reliable performance at scale is clustering. Clustering is the ability to have multiple
instances of the container (“nodes”) be grouped together and contain identical copies
of code and/or data. The nodes may each run on a different physical server or in some
more complex configuration.
A cluster can be used most simply as a high availability mechanism in which all nodes
in the cluster are identical, and in the event that one node fails, its workload is picked
up and carried on by another node in the cluster.
A more sophisticated use of container clustering is for “scaling out”. In this case the
cluster has nodes containing identical copies of the application code but workload is
“load balanced” across the nodes. Each node will be serving different users or sessions
or subsets of transaction work and thus have different data or “state”.
have to re-architect the legacy asset; the Data Grid enables IT to offer broader access
with high service levels.
When choosing an SOA strategy, corporations must rely on solutions that ensure data
availability, reliability, performance, and scalability. They must also avoid “weak link”
vulnerabilities that can sabotage SOA strategies. A data grid infrastructure, built with
clustered caching, addresses these concerns. It provides a framework for improved
data access that can create a competitive edge, improve the financial performance of
corporations, and sustain customer loyalty.
As shown in Figure 4–3, data grids provide distributed data persistence services to
various backend interfaces such as JPA, SDO, XML, Web Services etc. They provide the
data grid services to various consumers such as composite applications (Web 2.0), SOA
Services, JEE applications and standalone frameworks.
One of the hardest and most underestimated parts of building large scale grid based
applications is persistence integration, mapping the application model to a backend
database and maintaining transactional integrity. In Java EE 5.0 , this has formally
being standardized with the Java Persistence API (JPA) and is a natural complement to
the Data Grid services where clearly data eventually has to come to rest in a
persistence store.
As shown in Figure 4–4 above, the Database Grid is a hybrid that contains elements of
the (DBMS) application and storage grids. Like an application grid, it deploys DBMS
code redundantly on multiple servers (or nodes), which break up the workload based
on an optimized scheme and execute tasks in parallel against common data resources.
If any node fails, its work is taken up by a surviving node to ensure high availability.
The storage for the database is managed in a manner consistent with a storage grid.
Storage is made available on a range of disks, with data managed in an optimized way
to ensure scalability and high availability while ensuring that disks may be added or
removed in a manner that is transparent to the user and has no definitional effect on
the application or database (that is, the application or database does not need to be
changed to refer to different files on different volumes when disks are added or
removed); the application or user is insulated from the exact nature of the physical
storage layout.
Database clusters and automatic storage management capabilities provide:
■ Scalability, including the ability to build clusters of database servers with low-cost
hardware that do the kind of work once reserved for expensive symmetrical
multiprocessing (SMP) systems
■ High availability through automatic failover so that if one node in the cluster fails,
then the other nodes can take up the work.
■ Flexibility, since resources, including both systems and storage, can be assigned to
the database as needed, and removed if necessary, without reconfiguring the
database on either the server or the storage so that there is no need for excess
capacity and unused processor power or storage
In order to be effective in a grid environment, a Database Grid must provide the
following capabilities.
■ Workload Management: Workload management helps to manage and distribute
the load to provide peak performance and high availability and ensures
Figure 4–5 above shows the Service Grid pattern in which the Data Grid is caching the
data in memory. P and B represent primary and backup nodes respectively. The SOA
Services get and update the data from the primary node but the Data Grid replicates
the data to the backup node. Any updates to the data are also propagated back to the
source through the DB grid. The SOA Service providers get the data from the data grid
that fronts the data source.
Dedicated infrastructures that were built to serve the needs of individual business
units demanded high availability and scalability. This was achieved through
clustering and redundancy. The popularity of SOA, shared infrastructures and focus
on server efficiency paved the way for earlier Grid architecture. It brought in several
benefits including enhanced flexibility of the infrastructure, improved server
utilization, storage consolidation, and management efficiency. Mature Grid
infrastructure is geared towards real-time infrastructures that support policy based
service level automation. This requires a dynamic infrastructure that can seamlessly
adjust itself based on the demand conditions.
The table below shows how Grid is transforming as it matures.
communicate and negotiate with each other to deliver service level objectives
efficiently.
Always Online: means more than protection from failures. It means zero unplanned
and planned downtime. This will require online patching, upgrades, application
changes and real-time system health monitoring. It should provide the ability to
rejuvenate application components proactively and conduct root cause analysis after
eviction of problem nodes.
Standard Deployment: Grid becomes the standard infrastructure for all applications
and all tiers that include database, application servers/applications, web servers, and
storage. From the perspective of the applications, Grid is a scalable and highly
available platform that behaves like and is managed like a large single server.
Applications need not be grid-aware to run on the grid infrastructure.
Value for All: Grid optimizes resources for larger as well as smaller applications. Grid
virtualizes within and across resources to optimize any size application. Server
virtualization is a key new component of Grid that complements existing capabilities.
Virtualization makes it possible by enabling both aggregation and disaggregation of
resources. Large applications can dynamically scale across many resources to meet
service level objectives and small applications can share resources using server
virtualization technology.
Persistent Storage for All Data: Initial Grid implementations provided persistent
storage for database data and database files while mature Grid includes storage grid
manages all types of data and files. Data Grids and Applications Grids make it
possible to enhance performance through distributed caching while preserving data
integrity.
■ System Monitoring and Alerts: Grid management should provide the dashboard
capabilities to monitor the various components of the system and generate alerts
based on the health of the components.
Virtualization 5-1
Server Virtualization
Virtualization can be done at different levels such as hardware level, software level,
and service level. The basic idea is to encapsulate the details of the underlying
resources so that the services requiring those resources can be run independent of the
resources.
5.1.4 Paravirtualization
Server virtualization can also be implemented by a thin paravirtualization software
layer, which requires small modifications to the operating system. This layer partitions
the physical server into separate areas on which the virtual machines then run.
Computing resources from the underlying server are viewed as a pool of resources
that can then be shared amongst the virtual machines. With the exception of sharing
these computing resources, each virtual machine is independent.
Problems with an application on one virtual machine do not affect other virtual
machines on the same hardware platform. With paravirtualization, virtual machines
are similar to separate physical servers. Each has its own distinct hostnames, IP
addresses, and configurations. Each virtual machine is managed independently of the
others.
Virtualization 5-3
Virtual Machine (VM) Images or Templates
Containers play a key role in the foundation architecture. They provide the common
capabilities required for enterprise deployments so that the application developers can
focus on the business logic specific to their business. Containers create the extensible
foundation that is scalable and extensible. This allows the higher layers to leverage the
foundation capabilities and build value added services on top of them.
Containers provide several capabilities that include the following:
■ Transaction Support
■ A transaction is a unit of activity, in which many updates to resources can be
made atomic. The details of how a transaction is handled can be externalized
from the application logic and be provided as a container capability.
■ Security Support
■ A central point through which access to data and portions of the application
itself can be managed is considered a security benefit, passing responsibility
for authentication and authorization away from the potentially insecure client
layer without exposing the database layer.
■ Scalability and Performance
■ Containers provide scalability capabilities to grow the capacity of applications.
Most containers support clustering of servers to scale the system. They also
allow optimization of deployments to boost the performance of applications
and SOA Services.
■ Thread Management
■ Containers manage threads to enable multi processing of requests.
■ Data and Code Integrity
■ By centralizing business logic on an individual or small number of server
machines, updates and upgrades to the application for all users can be
guaranteed. There is no risk of old versions of the application accessing or
manipulating data in an older, incompatible manner.
■ Centralized Configuration
■ Changes to the application configuration, such as a move of database server,
or system settings, can be done centrally.
■ Connection and Session Management
■ Containers manage the client connections and sessions and provide
transaction timeout capability.
■ Abstraction
Containers 6-1
Principles and best practices
■ Containers shield the applications from the low level details of the hardware
and operating systems. They provide a uniform interface layer on top of the
hardware and operating systems to promote interoperability and portability.
Containers are available for several programming languages and platforms. Some of
the examples of containers include JEE application servers, CORBA servers,
transaction monitors like TUXEDO, and lightweight framework containers like Spring.
Containers may run applications, SOA Services, batch programs, and other types of
business solutions.
The foundation infrastructure for ORA must include robust and scalable data caching
capabilities. Unless designed properly, data access might become a bottleneck in
enterprise architectures due to the high volume and frequency of messages
transmitted. Also almost every component of the enterprise technology stack depends
on databases to manage information. Data management is a very broad area, and as
such is beyond the scope of this document. This section focuses on data caching
without delving into the underlying data persistence.
remaining 80% will provide only a minor improvement while requiring a significant
increase in resources.
However, if every object is accessed equally often (for example in sequential scans of
the dataset), then caching will require more resources for the same level of
effectiveness. In this case, achieving 80% cache effectiveness would require caching
80% of the dataset versus 20%. In practice, almost all non-synthetic (benchmark) data
access patterns are uneven, and will respond well to caching subsets of data.
In cases where a subset of data is active, and a smaller subset is particularly active,
Near caching can be very beneficial.
This section maps Oracle products to the ORA application infrastructure architecture
elements laid out in the previous section.
■ Caching Layer
■ Oracle Coherence
■ Oracle TimesTen
■ Grid Layer
■ Oracle Application Grid
■ Oracle Enterprise Manager - Grid Control
■ Oracle Exadata Storage
■ Oracle RAC
■ Distributed Layer
■ Oracle WebLogic Server (OWLS)
■ Oracle TUXEDO
■ Oracle SALT
■ Oracle Database
■ Containers Layer
■ Oracle WebLogic Server (OWLS)
■ Oracle TUXEDO
■ Virtualization Layer
■ Oracle VM
■ Oracle JRockit
Oracle Maximum Availability Architecture (MAA) aims at providing guidelines to
achieve high availability at every layer of the Oracle stack. It is Oracle's best practices
blueprint based on proven Oracle high availability technologies and
recommendations. The goal of MAA is to achieve the optimal high availability
architecture at the lowest cost and complexity. The principles around which Fusion
middleware Maximum Availability Architecture has been designed include
■ Process Management and death detection
■ If a process dies, detect it quickly and restart it if possible.
■ Redundancy
■ Provide redundant components that can take over in case of a planned or
unplanned downtime.
■ Connection management
■ Make sure that tiers load balance their outbound connections and respond
accordingly to failures in the other tiers.
Figure 8–4 shows the architecture of JRockit. The components shown in the figure are
described below.
■ I/O handles communication with files, databases, and network.
■ Memory Management is concerned with things like garbage collection, when the
JVM reclaims unused memory, and finding the optimal heap size for an
application.
■ Threads Management schedules threads, handles synchronization and locks.
■ The Java Model takes care of very java specific areas like reflection and class
loading.
■ In Code Generation the JVM translates the java code to assembler code that runs
directly on the target operating system. JRockit JVM will also detect and perform
possible optimizations of the application code.
■ The External Interfaces and Monitoring/Management are used to get information
directly from inside the JVM, and to control some of it's runtime features, used by,
among others, JRockit Mission Control.
JRockit Mission Control (JRMC) is a multi functional tool suite that allows users to
manage, monitor, and profile their applications. Designed for low overhead it can be
used in production environments. Oracle JRockit Mission Control consists of three
different tools, the management console, the runtime analyzer, and the memory leak
detector.
8.5.1.1 Availability
Coherence is used to achieve high availability in several different ways:
■ Supporting Redundancy in Java Applications
■ Coherence makes it possible for an application to run on more than one server,
which means that the servers are redundant. Coherence enables redundancy
by allowing an application to share, coordinate access to, update, and receive
modification events for critical runtime information across all of the redundant
servers.
■ Enabling Dynamic Cluster Membership
■ Coherence tracks exactly what servers are available at any given moment.
When the application is started on an additional server, Coherence is instantly
aware of that server coming online, and automatically joins it into the cluster.
This allows redundancy (and thus availability) to be dynamically increased by
adding servers.
■ Exposing Knowledge of Server Failure
■ Coherence reliably detects most types of server failure in less than a second,
and immediately fails over all of the responsibilities of the failed server
without losing any data. Consequently, server failure does not impact
availability.
■ Part of an availability management is Mean Time To Recovery (MTTR), which
is a measurement of how much time it takes for an unavailable application to
become available. Since server failure is detected and handled in less than a
second, and since redundancy means that the application is available even
when that server goes down, the MTTR due to server failure is zero from the
point of view of application availability, and typically sub-second from the
point of view of a load-balancer re-routing an incoming request.
■ Eliminating Other Single Points Of Failure (SPOFs)
8.5.1.2 Reliability
Coherence is explicitly built to achieve very high levels of reliability. For example,
server failure does not impact in-flight operations, since each operation is atomically
protected from server failure, and will internally re-route to a secondary node based
on a dynamic pre-planned recovery strategy. In other words, every operation has a
backup plan ready to go!
Coherence is designed based on the assumption that failures are always about to
occur. Consequently, the algorithms employed by Coherence are carefully designed to
assume that each step within an operation could fail due to a network, server,
operating system, JVM or other resource outage. An example of how Coherence plans
for these failures is the synchronous manner in which it maintains redundant copies of
data; in other words, Coherence does not gamble with the application's data, and that
ensures that the application will continue to work correctly, even during periods of
server failure.
8.5.1.3 Scalability
Coherence provides several capabilities designed to help SOA Services and
applications achieve linear scalability. Coherence helps to solve the scalability problem
by targeting obvious bottlenecks, and by completely eliminating bottlenecks whenever
possible. It accomplishes this through a variety of capabilities, including:
■ Distributed Caching
■ Coherence uses a combination of replication, distribution, partitioning, and
invalidation to reliably maintain data in a cluster in such a way that regardless
of which server is processing, the data that it obtains from Coherence is the
same. In other words, Coherence provides a distributed shared memory
implementation, also referred to as Single System Image (SSI) and Coherent
Clustered Caching.
■ Partitioning
■ Partitioning refers to the ability for Coherence to load-balance data storage,
access and management across all of the servers in the cluster.
■ Coherence accomplishes failover without data loss by synchronously
maintaining a configurable number of copies of the data within the cluster.
■ Coherence prevents loss of data even when multiple instances of the
application run on a single physical server within the cluster.
■ Partitioning supports linear scalability of both data capacity and throughput.
■ Session Management
■ This capability is provided by the Coherence*Web module, which is a built-in
feature of Coherence. Coherence*Web provides linear scalability for HTTP
Session Management in clusters of hundreds of production servers.
■ Coherence*Web has the same latency regardless of the size of the cluster since
all HTTP session read operations that cannot be handled locally are spread out
evenly across the rest of the cluster, and all update operations are likewise
spread out evenly across the rest of the cluster. The result is linear scalability
with constant latency, regardless of the size of the cluster.
8.5.1.4 Performance
Coherence provides a large number of capabilities designed to eliminate operations
that could possibly have high latencies.
■ Replication and Near caching
■ Replication ensures that a desired set of data is up-to-date on every single
server in the cluster at all times. Replication allows operations running on any
server to obtain the data that they need locally, at basically no cost, because
that data has already been replicated to that server.
■ To eliminate the latency associated with partitioned data access, near caching
maintains frequently- and recently-used data from the partitioned cache on
the specific servers that are accessing that data, and it keeps that data coherent
with event-based invalidation. In other words, near caching keeps the
most-likely-to-be-needed data near to where it will be used, thus providing
good locality of access, yet backed up by the linear scalability of partitioning.
■ Write-Behind
■ Since the transactional throughput in the cluster is linearly scalable, the cost
associated with data changes can be a fixed latency, typically in the range of a
few milliseconds, and the total number of transactions per second is limited
only by the size of the cluster.
■ Coherence provides a Write-Behind capability, which allows the application to
change data in the cluster, and those changes are asynchronously replayed to
the application's database.
The Coherence architecture has been shown to scale linearly as additional nodes are
added. High-availability is achieved by storing copies of the data on different servers
in the data grid to avoid a single point of failure in case an individual middle-tier
system crashes or is taken offline for maintenance.
Oracle Coherence's grid architecture enables the addition of application instances to be
started on the fly. Oracle Coherence is designed for lights-out management, which
provides the ability to expand and contract Oracle Coherence almost instantaneously
in response to changing demand.
It allows grouping of hardware nodes, databases, and application servers into single
logical entities and manage a group of targets as one unit. Grid Control provides a
simplified, centralized management framework for managing enterprise resources and
analyzing a grid's performance. Grid administrators can manage the complete grid
environment via a Web browser throughout the entire system's software lifecycle, front
to back, from any network location.
In terms of its monitoring capabilities, Grid Control provides administrators with
proactive tools, letting them create representative transactions that give them a
window into actual performance across the grid. It generates alerts that are based on
the application's actual performance, not just that of individual components such as
the database, application server, HTTP server, or network routers. A key attribute of
Grid Control is that it's designed for multitier, heterogeneous environments with an
ability to reach across all the tiers of resources that affect the environment.
Grid Control is but one aspect of Oracle Enterprise Manager. The ORA Management
and Monitoring document describes a complete monitoring and management
architecture.
Oracle SALT can be integrated with Oracle Service Registry and Oracle Enterprise
Repository to publish Tuxedo services metadata for broad access within the enterprise,
enabling their use in Oracle BPEL PM, Oracle Business Rules, and Oracle Service Bus
as well as any third party users of the Registry and Repository.
8.11 Oracle VM
Oracle VM is server virtualization software that fully supports both Oracle and
non-Oracle applications, and delivers more efficient performance. Oracle VM offers
scalable, low-cost server virtualization. Consisting of open source server software and
an integrated Web browser-based management console, Oracle VM provides an
easy-to-use graphical interface for creating and managing virtual server pools, running
on x86 and x86-64-based systems, across an enterprise.
Summary 9-1
9-2 ORA Application Infrastructure Foundation
A
Further Reading
A
The IT Strategies From Oracle series contains a number of documents that offer
insight and guidance on many aspects of technology. In particular, the following
documents pertaining to the SOA infrastructure may be of interest:
■ http://en.wikipedia.org/wiki/Fallacies_of_Distributed_
Computing - Fallacies of distributed computing
■ http://en.wikipedia.org/wiki/Software_as_a_service - Software As
A Service
■ http://www.oracle.com/technologies/virtualization/index.html -
Oracle Virtualization
■ http://www.oracle.com/ondemand/collateral/virtualization-oracle
-vm-wp.pdf - Oracle virtualization white paper
■ Grid computing with Oracle database 11g - IDC Whitepaper
■ Next-Generation Grid-Enabled SOA: Not Your MOM's Bus, Chappell & Berry, SOA
Magazine, Jan 2008
■ A move to cloud computing should involve SOA and BPM; Kavis, Mike;
SearchCIO.com
■ The Grid 2, Second Edition: Blueprint for a New Computing Infrastructure, Foster and
Kesselman
■ http://www.oracle.com/database/exadata.html : Oracle Exadata
■ http://www.oracle.com/technology/deploy/availability/htdocs/maa
.htm - Oracle Maximum Availability Architecture - MAA
■ http://en.wikipedia.org/wiki/Rete_algorithm - Rete algorithm for
rules engines.
■ http://www.oracle.com/technology/products/ias/business_
rules/pdf/businessWhitepaper.pdf - Oracle Business Rules whitepaper
Please refer to the ORA Master Glossary for a comprehensive list of glossary terms.
CAPEX
Capital expenditures or CAPEX are expenditures creating future benefits. A capital
expenditure is incurred when a business spends money either to buy fixed assets or to
add to the value of an existing fixed asset with a useful life that extends beyond the
current year.
OPEX
An operating expenditure or OPEX is an on-going cost for running a product,
business, or system. In contrast to the CAPEX model, OPEX model is aimed at
incurring the expenses as the services are rendered.
Glossary-1
Universal Description, Discovery and Integration (UDDI)
Glossary-2