Wednesday Apr 17, 2013

Increase the Availability of Your Tuxedo Applications and Improve IT Productivity with TSAM Plus--By Deepak Goel, Senior Director, Software Development

Find out how you can increase the productivity of your IT staff and the availability of your Tuxedo applications using Oracle Tuxedo System and Application Monitor Plus 12c (TSAM Plus 12c).  Check out YouTube video below by Todd Little, Managing Tuxedo Applications with TSAM Plus 12c and OEM CC12c.  


TSAM Plus 12c is a management and monitoring solution for Tuxedo 12c applications.  It helps improve performance and availability of Tuxedo applications and expedite  problem resolution in both dev/test and production environments, while monitoring several domains at the same time.  TSAM 12c has many features, which help automate day-to-day operations such as resource deployments, scale up and out of application nodes and service level management, increasing the productivity of IT staff as they do not need to worry about writing scripts, or moving from one console to another console or correlating messages from one product to another in order to diagnose a critical production problem. 

TSAM Plus 12c includes a plugin for Oracle Enterprise Manager Cloud Control 12c, which allows Tuxedo applications to be monitored and managed from the same console as other Oracle products, including WebLogic and Database.

TSAM Plus 12c Functionality can be broadly categorized as follows:

  1. Application Performance Management:  TSAM Plus 12c greatly improves application performance by providing unique functionality to automatically detect performance bottlenecks; quickly diagnose these performance problems, and identify their root cause
  2. Operations Automation: TSAM Plus 12c automates common manual and error prone operations allowing administrators to focus on more strategic initiatives. With TSAM Plus 12c , Tuxedo applications can be packaged in a self contained application package along with required configuration artifacts and stored in a central repository, ready for deployment, to an existing domain, or to interactively create a new Tuxedo domain or to add additional nodes to an existing domain. Both physical and virtual environments are supported.  In addition, With TSAM Plus 12c, it is much easier to make changes in configuration of Tuxedo applications in production environment without having to restart the application, thus avoiding costly downtime. With TSAM Plus 12c, A Tuxedo domain can be changed dynamically, in addition to creating a new Tuxedo domain from scratch. TSAM Plus 12c also helps with day-to-day operational tasks, such as manually start and stop applications and start new instances of an application server.
  3. Service Level Management: TSAM Plus 12c helps IT organizations to achieve high availability, performance, and optimized service levels for their business services.

More Information

Datasheet:  Oracle Tuxedo System and Application Monitor

Web Page:  Tuxedo page on oracle.com

Stay Connected

Follow Tuxedo:


Stay Connected
Follow Cloud Application Foundation:

Sunday Apr 14, 2013

Developing and Deploying Services in Java on Tuxedo 12c is Easy and Straightforward by Todd Little, Oracle Tuxedo Chief Architect

One of the 187 new features in Tuxedo 12c is the ability to develop Tuxedo services in Java.  Prior to Tuxedo 12c, to create a Tuxedo service in Java meant adding another application server such as WebLogic Server or IBM WebSphere to the environment and using either the WebLogic Tuxedo Connector (WTC) or the Tuxedo JCA Adapter.  The service was then developed in Java, deployed to the Java EE application server, and then connected to existing Tuxedo applications via the Tuxedo domain gateway.  This meant that every request from Tuxedo to these Java services entailed a network hop and any distributed transactions required a subordinate transaction to be started in the Java EE application server.  As well, any native Tuxedo service called by the Java service now required another network hop--all in all usable, but requiring more administration, more resources, and more complexity.

Java Server Support

The Java Server support in Tuxedo uses a POJO programming model based upon Java SE.  The programming environment and APIs used for service development is JATMI, the same API used in WTC.  JATMI is essentially an object oriented version of the standard Tuxedo Application to Transaction Monitor Interface (ATMI).  It supports virtually all of the ATMI features and should be very familiar to anyone that has developed Tuxedo services in another language.  Yet being Java developers have access to the rich set of class libraries that Java developers have come to know and love.  Since the environment is Java SE based, Java EE features such as transaction management are provided by the JATMI classes instead of the Java Transaction API.

Developing & Deploying Java Service on Tuxedo is easy

Developing and deploying services in Java on Tuxedo is extremely easy and straightforward.  The basic steps are to create a Java class that extends the TuxedoJavaServer class provided by JATMI.  Create one or more methods that will handle Tuxedo service requests.  These methods take a TPSVCINFO instance as the only parameter that contains such information as the name of the service called and the typed buffer the caller passed to the service.  The method extracts whatever information it needs from the typed buffer, performs its business logic and then creates a typed buffer to reply to the caller.  Finally the class calls the tpreturn() method to return the reply buffer back to the caller.

Configuring the Tuxedo Java Server

Once the server class or classes have been developed and compiled, the Tuxedo Java Server TMJAVASVR needs to be added to the Tuxedo UBBCONFIG file.  This Tuxedo provided server will load the JVM, load the server classes, and take care of dispatching incoming requests to the methods in the server classes.  Which classes to load and the mapping between Tuxedo service names that the server will offer are defined in an XML based configuration file. By default each public method in the server classes is advertised as the name of the Tuxedo service.   This configuration file also specifies such things as the classpaths to be used, JDBC driver and connection information for accessing a database, and resources such as FML/FML32 field tables and VIEW/VIEW32 classes.  After updating and loading the UBBCONFIG file, the application is ready to be booted and tested.

Sample Implementation and Configuration

Here is what a simple Java service implementation might look like:

public void JAVATOUPPER(TPSVCINFO rqst) throws TuxException {
        TuxAppContext myAppCtxt = getTuxAppContext();         /* The the application context */
        TypedBuffer svcData = rqst.getServiceData();        /* Get the callers data */
        TypedString TbString = (TypedString)svcData;        /* Assume it's a STRING buffer */
        String newStr = TbString.toString().toUpperCase();    /* Get the string and upper case it */
        TypedString replyTbString = new TypedString(newStr);    /* Create the reply buffer */
        myAppCtxt.tpreturn(TPSUCCESS, 0, replyTbString, 0);    /* Return reply buffer to caller */
    }



The entry in the UBBCONFIG for the Tuxedo Java Server might look like:

TMJAVASVR SRVGRP=GROUP1 SRVID=2  CLOPT="-A"
         CLOPT="-- -c TJSconfig.xml"
         MINDISPATCHTHREADS=2 MAXDISPATCHTHREADS=10


which would start a single copy of the Tuxedo Java Server with 10 threads to handle requests. The configuration file TJSconfig.xml for this server might look something like:

<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig>
    <TuxedoServerClasses>
        <TuxedoServerClass name="MyTuxedoJavaServer"></TuxedoServerClass>
    </TuxedoServerClasses>
</TJSconfig>

where MyTuxedoJavaServer is the name of the Java class that extends the TuxedoJavaServer class.Multiple copies of the Tuxedo Java Server can be run just as any other Tuxedo server using the same configuration file or each using their own configuration file.  All standard Tuxedo buffer types are supported, so services can use STRING, CARRAY, MBSTRING, FML/FML32, XML, or VIEW/VIEW32 buffers.  As well, Java services can call other Tuxedo services by using the tpcall() method on the TuxAppContext.

Summary

As the Tuxedo Java Server is a standard Tuxedo server, all of the monitoring, management, and administration capabilities that Tuxedo provides to C or other language servers is available to services written in Java.  These services also benefit from the unmatched reliability, availability, scalability, and performance that Tuxedo has proven to provide at thousands of customer sites.  By providing Java support in Tuxedo, customers are free to choose the language that best suits their application development needs, whether it is C, C++, COBOL, Python, Ruby, PHP, and now Java, and they all work together seamlessly to provide one integration application.

Stay Connected
Tuxedo:


Cloud Application Foundation (CAF):

Friday Apr 05, 2013

Three New Features Improve Availability of Tuxedo Based Applications- by Todd Little, Oracle Tuxedo Chief Architect

Tuxedo 12cR1 introduced several new features to help improve the availability of Tuxedo applications.  While Tuxedo is known for providing extremely high reliability, availability, scalability, and performance (RASP), there are always things Oracle can do to improve the availability of an application.  This post will cover three new features that help improve the availability of Tuxedo based applications.

Highly available systems try to avoid single points of failure to ensure the survivability of an application even in the midst of a failure.  Tuxedo has provided means to avoid single points of failures in virtually all scenarios except one, and that is when customers use data dependent routing or DDR.  DDR allows an application to be partitioned based upon the values contained in a field of a request buffer.  In the Tuxedo sample bankapp application, the ACCOUNT_ID field in a request message is used to determine which group of servers should handle the request.  This is controlled by the *ROUTING section in the UBBCONFIG file.  For each range of values, a server group can be specified to handle requests.  The issue with regards to availability is that only a single server group can be specified in releases prior to Tuxedo 12cR1.  While a server group can have multiple servers in it such that the failure of a single server won't cause a problem, a server group can only reside on a single machine in a cluster.  Thus if the machine that the server group is on fails, there will be some period of time that the partition of the application associated with that group of servers is unavailable.  Requests to the servers in that partition will fail until the machine is restarted or the server group migrated to another machine.


Improved *ROUTING Section

With Tuxedo 12cR1 the *ROUTING section can now specify up to three server groups that can be associated with a range of values.  This now allows the application partition to span up to 3 machines allowing the partition to still be available even if two of the machines completely fail.  Besides improving the availability of a partition, it also increases the scalability of a partition as now the resources of up to three machines can be utilized to process requests.  This same improvement is included in the Tuxedo domain gateway as well.  This allows the domain gateway to specify up to three remote domains that can be associated with a range of values in a field.  When combined with multiple gateways, multiple domains, and multiple network links, applications can achieve unmatched levels of availability.

Automatic Migration of Machines and Server Groups

Another feature increasing availability of Tuxedo applications introduced in Tuxedo 12cR1 is the automatic migration of machines and server groups.  Since very early on, Tuxedo has had mechanisms to allow a machine to be migrated from one host to another, or for a server group to be migrated from one machine to another.  This provides a recovery mechanism in the case of a machine or server group failure.  Prior to Tuxedo 12cR1 the migration process was a manual one that required either manual intervention or the creation of scripts that could perform some level of automated migration.  

While the failure of a machine or server group by itself doesn't typically affect the availability of a properly configured application, it may leave the application with one or more single points of failure.  This can be mitigated by ensuring there are always at least three copies of servers or server groups such that if one fails, redundancy is still maintained.  Even though it's not possible to define more than one BACKUP machine for the MASTER machine, and there is only one MASTER machine at any point in time, the failure of the MASTER machine doesn't necessarily impact application availability.  This is one misconception many Tuxedo customers have about MP or clustered operations with Tuxedo.  They see the MASTER machine as a single point of failure, but in fact normal application processing goes on even if the MASTER machine fails.  This is because the DBBL process which runs on the MASTER machine isn't involved in normal request routing.  All that happens if the MASTER fails or for some other reason the DBBL can't be reached is that configuration changes can't occur until the DBBL becomes available.

What automatic migration does under most failure scenarios, is to automate the migration of a machine to its backup, or a server group to its backup machine.  This eliminates the possibility of human error causing even more problems during a failure, and as well minimize the time to restore the system to normal operation or reducing the mean time to repair (MTTR).  Reducing MTTR is one of the most effective ways of increasing overall system availability.  Enabling these features is a simple matter of adding two new options to the *RESOURCES section of the UBBCONFIG file.  For more details, see the Migrating Your Application [http://docs.oracle.com/cd/E35855_01/tuxedo/docs12c/ada/admigt.html] section of the Tuxedo 12cR1 documentation.

Service Versioning

Finally the last availability related feature added in Tuxedo 12cR1 is service versioning.  While that may not sound particularly related to high availability, what it allows is the concurrent deployment of multiple versions of an application.  By being able to run multiple versions of an application simultaneously, customers can gradually introduce new versions of their application without having to shut down their application or impacting existing users in any way.

Service version requires no changes to the application code, although presumably there are changes, probably even incompatible changes, which is why Oracle introduced service versioning.  The only required changes are in the UBBCONFIG file.  The APPVER option needs to be set in the *RESOURCES section, and then the REQUEST_VERSION, VERSION_RANGE, and VERSION_POLICY options added to the *RESOURCES section or to any server groups that need versioning support.  The REQUEST_VERSION indicates the version number requests will have.  For native clients and servers it is either the value specified at the *RESOURCES section or then *GROUPS section, with the latter having precedence.  Subsequent calls in the call path will have the request version associated with the server that made the request, unless the VERSION_POLICY is set to PROPAGATE which means the callers service version should be used.  The VERSION_RANGE then indicates what request versions a server is able to process.  When Tuxedo performs request routing, it will determine the request version number and then only select servers that support that version number.  Thus when an incompatible change is made, you would associate a new request version with any updated callers of the service, and set the version range of servers appropriately to ensure that only updated servers handle the requests.  This allows for the introduction of gradual changes and lets the application developer decide what versions of a service interface any given server supports.

These new features further enhance Tuxedo's capability to support highly available applications without requiring the customers to build those capabilities into their application code.  The result is that customers can deploy applications that provide 99.999% or better availability, while being able to scale those applications to 100s of thousands of services executed per second.

Was this information helpful? Please share your comments and let us know if there are any Oracle Tuxedo topics you would like us to discuss.

More Information

Oracle Tuxedo Release Notes

Stay Connected

Follow Tuxedo on:
LinkedIn
YouTube
Tuxedo Blog

Follow Cloud Application Foundation (CAF):

Twitter
Blog




About

This is the Tuxedo product team blog.

Search

Categories
  • Oracle
Archives
« April 2013 »
SunMonTueWedThuFriSat
 
1
2
3
4
6
7
8
9
10
11
12
13
15
16
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today