What is Oracle Tuxedo?
By Todd Little on Aug 27, 2010
Surprisingly this is an all too common question. It recently came up in the Tuxedo OTN forum and based upon the response I got to my answer to this question, I thought it would be useful to post that here as well. So my answer was (and still is):
Tuxedo is an application server for non-Java languages. Specifically what this means is that it provides a bunch of facilities that help customers build and deploy enterprise applications written in C, C++, COBOL, and with the SALT add-on applications written in Python and Ruby. As an application server, it provides containers to host your business logic written in those languages. It provides facilities to transparently distribute your application across a cluster of machines and to route and load balance requests across the machines in the cluster and the servers within a machine. If machines fail or network links fail, Tuxedo will automatically route requests to the remaining accessible servers in the cluster, thus providing extremely high availability. When those resources are returned to service, Tuxedo will automatically start making use of those resources, thus you get failover and failback. Tuxedo tends to be used where RASP (Reliability, Availability, Scalability, and Performance) are paramount in the application. Tuxedo customers regularly get 99.99% to 99.999% availability for their applications with some customers running continuously for years without an outage. As a highly optimized application server, Tuxedo can invoke a service in another process and get a response back in around 35 microseconds. That performance combined with Tuxedo's clustering capabilities allows it to be able to handle 100,000's of requests/second, as Tuxedo scales nearly linearly from a single process on a single machine, to clusters of clusters.
As one of the original SOA platforms, everything in Tuxedo is a service that is accessed by name. A client simply calls a service by name passing a buffer of information. Tuxedo automatically routes the request to the least loaded server that can handle the request and then automatically dispatches the request in the server to the business logic associated with that service. The service implementation then processes the request in the buffer and returns a buffer to the caller containing the response from the service. Requests can be made synchronously, asynchronously, queued, or one-way. Other services provided by Tuxedo include transaction monitoring to support distributed XA transactions, store and forward messaging with a variety of QoS options, pub/sub messaging, a variety of gateways to provide transparent access to MQ Series queues, SNA and TCP gateways to transparently connect to CICS and IMS applications, and Java connectors that provide connectivity to JEE application servers. Clients for Tuxedo services can be written in C, C++, COBOL, .Net, and Java.
With an add-on product called SALT, Tuxedo can support bi-directional SOAP/HTTP(S) web services, thus providing easy integration into other SOA environments. With SALT, existing Tuxedo services can be made available as SOAP/HTTP(S) services without any change to the existing Tuxedo servers. As for "wrappers", SALT does use wrappers, or more accurately stubs and skeletons, in its support of the SCA standards. This allows business logic to implemented as a simple C++, Python, or Ruby function and all of the messaging and buffer handling is handled transparently by the SALT generated stubs and skeletons. This can make it quite easy to take an existing monolithic application and break it up into a set of Tuxedo services with little to no changes to the existing monolithic application code.
Tuxedo also provides extensive management and monitoring capabilities, especially with the TSAM (Tuxedo System and Application Monitor) add-on which provides detailed end-to-end performance monitoring of a Tuxedo application.
Lately Tuxedo has been used by many customers to migrate their COBOL applications from legacy environments such as IBM's CICS and IMS on expensive mainframe systems to much less expensive distributed systems. Two recent Tuxedo related products ART and ART Workbench provide tooling and a runtime infrastructure to help in these migrations, which are performed with primarily or only automated code transformation that replaces mainframe specific APIs with Tuxedo compatible APIs. Thus the business logic remains untouched, and only the technical APIs are modified. These customers often find that their total cost of ownership of the migrated application is reduced by 50-80%, while still maintaining mainframe or better quality of service.