yourfanat wrote: I am using another tool for Oracle developers - dbForge Studio for Oracle. This IDE has lots of usefull features, among them: oracle designer, code competion and formatter, query builder, debugger, profiler, erxport/import, reports and many others. The latest version supports Oracle 12C. More information here.
In many cases, the end of the year gives you time to step back and take stock of the last 12 months. This is when many of us take a hard look at what worked and what did not, complete performance reviews, and formulate plans for the coming year. For me, it is all of those things plus a time when I u...
This article outlines a set of best practices for service-oriented integration (SOI) by reviewing the evolution of integration practices, applying those lessons to service-oriented architectures (SOA), and finally analyzing SOA and SOI with the specific technology set of Web services today and into the future.
Services and Integration: How Did We Get Here? The advent of the information age has brought an increased emphasis on timely access to information. Use of the Internet to reach employees, customers, and business partners creates corresponding demands to deliver solutions through different kinds of interfaces in shorter time frames. These compressed time frames frequently eliminate some traditional options for satisfying new application requirements, such as migrating to a new, state-of- the-art packaged application; or creating a custom solution built in isolation from the existing enterprise systems.
Enterprise-level integration offers a potential solution. By leveraging existing assets and building out only the required new logic, integration can shorten time frames and costs while providing the new interface access. The ongoing issue has been the difficulty in actually achieving the potential. While there are many different ways to view mainstream integration practices, we think it is useful to divide it into three main categories:
Custom-coded projects: For consultants or IT staff, composing a custom solution is potentially viable on a small scale. Over time and scale, this approach has some obvious limitations. Many complex problems such as security, reliability, scalability, support for transactions and related semantics are solved and then maintained by each enterprise over and over again. Increasing complexity and decreased timelines are making this path risky. The savings in technology acquisition is being swamped by the cost of maintenance and time to delivery.
Messaging middleware and integration brokers: Products such as IBM's WebSphere Business Integration Message Broker or webMethods' Integration Platform take the form of central "hub-and-spoke" messaging systems that transform and route messages based on custom sets of rules. The brokers are often packaged as suites with process automation tools and interfaces to popular databases and applications. These products have typically been built around proprietary technologies that were designed to solve data synchronization problems on a massive scale, resulting in hugely complex products with unfamiliar tools. The out-of-the-box interfaces in these products often struggle with higher level forms of integration that involve business logic, leading to unexpected custom coding. These two factors result in products that are very expensive and require many successful projects to show a return on investment.
Application servers: J2EE implementations, Microsoft's .NET, and other platforms have been developed and marketed as robust and scalable platforms with standard sets of services such as security and transaction monitoring. Adapter frameworks and business process features allow a customer to build automated processes in addition to user-facing applications. A high degree of skill is needed to effectively leverage these features. Coupled with the need to design and code an entire solution from the ground up, achieving the best architectures and solutions still requires a substantial investment beyond technology acquisition.
Thus, many organizations find themselves with seemingly conflicting needs. On the one hand, incremental delivery of application functionality with a quick return on investment (ROI) must be provided in short time frames. On the other hand, a sustainable and manageable enterprise architecture must be developed that can support the business into the future. This is where service-oriented integration can provide some assistance (see Figure 1).
SOI Defined In the most generic sense, a "service" can be defined as a piece of functionality that is transparently accessible over a network. As the underlying concept behind SOI, serviceoriented architecture brings some refinement to the broad notion of a service:
Components in an SOA ecosystem are often published: The clients that use them are not predefined. Theoretically, any client that understands the interface could utilize the functionality.
The notion of multiple clients extends to an expectation of interoperability with multiple technology mediums: As an example, the service can be created using J2EE, an initial client with .NET, and a future client in a new language altogether.
In SOA, a service is usually "discoverable:" This means there is some directory that potential clients can use to discover interface metadata and/or location.
Service-oriented technologies can be applied to many different problems, such as business-to-business data exchange, Web application development, and point-to- point application data exchange. The important architectural requirements for use-of-service technologies are not necessarily the same. Thus, there are two important points to keep in mind:
We use the term "integration" to refer to the process of making a set of disparate enterprise systems work together to support common purposes. While developing a user-facing application may leverage integration components, enterprise integration and application development are distinct in purpose, scale, and complexity.
Our interest is specifically in how to apply a service-oriented architecture to the complex problem of sustainable, enterprise-level integration. While we will argue that a benefit of SOI is an enterprise architecture that can be built out on a project basis, our recommendations are about developing the architecture as a whole over time.
With these basic definitions in mind, we can consider the possible benefits of SOI to the enterprise (see Figure 2).
SOI: Theoretical Benefits A consistent theme in the section on traditional integration methods is that of cost. The cost can stem from long-term, highly skilled development (custom coding and application servers) or from initial capital expenditure for acquisition and deployment (integration brokers). At the core, SOI holds out the promise of reducing the cost of developing integration architecture:
As an integration approach, SOI promotes reuse of existing assets with new business applications such as Web selfservice, employee portals, and supplychain management.
By utilizing a services-based approach, SOI encourages architectures built around services that can be produced on a project-byproject basis and can support reuse over time by multiple clients constructed with a variety of technologies. This leads to earlier return on investment and potentially lower costs over time.
If built around the standards-based services technologies discussed in succeeding sections, there is a strong possibility that the skill sets and the infrastructures for security, management and the like will cost substantially less than those required by traditional integration approaches.
These benefits are only theoretical, however. Failure to recognize the potential pitfalls of service-oriented architectures can quickly lead to failure on a massive scale. This is where a set of best practices becomes important.
SOI: Best Practices At least three best practices can be derived directly from our notion of service-oriented architectures:
A repository supports future development: A core tenet of SOI is that services can be developed independent of a particular client. In turn, at a future design time, an application or service developer will need to know what services are available, what they do, and how to interface with them. A repository, or directory of service metadata, provides a common place to search and analyze what work has already been done. This is essential to promoting reuse, which is one key component to cost reduction.
A directory service provides flexibility: Enterprise integration is a complex undertaking. The underlying hardware and software infrastructures are likely to change over time. Thus, at deployment time affording clients the ability to ask a directory where to find the required service adds a key element of flexibility to the SOI architecture. The directory can be something as simple as a configuration file or environment variable or as sophisticated as an enterprise directory server using UDDI or LDAP.
Client neutrality assists in cost reductions: Choose a service technology that is independent of the service's implementation medium. This enables both sets of developers, those writing clients and those creating the actual services, to leverage the technologies with which they are most familiar and/or those technologies most applicable to the job at hand. In the context of SOI specifically, we believe in three additional best practices:
Ensure proper granularity of the service: Because services can be developed semi-autonomously, a client developer should not be expected to have intimate knowledge of the underlying enterprise system. Such a requirement slows the project down and risks the client containing implicit dependencies on the service's underlying system. Thus, encapsulation of complexity increases productivity and long-term flexibility to change implementation.
Furthermore, network exchange can be a performance bottleneck due to the overhead of formatting data for the network and reformatting it in the original form on the other side. Thus, a service should take as few trips across the network as possible to accomplish an atomic task. In particular, the fact that it might be easy to wrap a traditional component with a "service interface" does not mean that is the right architectural decision.
Minimize the impact of additional client load: You cannot assume knowledge of where or how often a service will be used. Consider carefully whether a service can be productively used in an asynchronous fashion, meaning a client leaves a request on a queue and expects a response later. This architecture allows the service configuration to dictate processing load, not the number of clients. As another example, in many cases an integrated service can be "stateless," meaning only a single exchange of data is necessary to accomplish a task. The service's client application or process has more particular knowledge of its own purpose; that is often the more desirable place to store state information.
Audit service usage: Tracking the actual usage of services provides information about which services are still in use, how often, and by whom. In a loosely coupled system this is probably the only realistic mechanism available to understand service interdependencies. In addition, auditing permits legacy services and service versions to be retired, those which receive heavy usage to be optimally deployed, and so forth. Lack of information in these areas will quickly render the enterprise services architecture unmanageable.
Service-oriented integration can be pursued with a number of technologies. However, Web services are among the most intriguing due to the corresponding development of industry standards.
SOI and Web Services Web services standards provide some key building blocks for our new integration paradigm:
XML is the common, text-based lexical format for data exchange.
WSDL is an XML-based language for describing service interfaces in a manner that is neutral to client technologies.
UDDI allows Web services to advertise their existence.
The related SOAP standard provides standard protocol bindings.
The catch in all of this is that Web services are just a collection of new technology standards. By themselves, these technologies don't constitute a service-oriented architecture, but only enable it. There are still many issues that must be carefully considered in the context of integration:
Reliability and security: These features of message-based and some application platform solutions have not been directly addressed. For example, the use of Secure Sockets Layer (SSL) encryption can address basic security requirements, but this does not directly provide message integrity and application-level authentication and authorization capabilities. These issues make the maturation of standards such as WS-Reliability and WS-Security or their equivalents an essential piece of the Web services puzzle.
Transaction support: In many cases, this is an important element of integration architecture. Web services transaction support presents an interesting problem because the resources involved could include almost any kind of system that resides almost anywhere. Once again, there are emerging standards, such as WS-Transaction, that should address this shortcoming.
Management: Since a service is intended to offer a loosely-coupled solution, this by definition means it is published over a network to any number of clients in any number of environments. Thus, there is no clear-cut method to manage changes to the service over time. The WS-Management and related standards bear watching in this area.
Technology acquisition provides the most promising avenue for addressing these concerns. While careful analysis regarding compatibility with existing enterprise assets will be essential, very little benefit is likely to be derived from a custom implementation of these complex standards.
Applying Web Services to Integration Today The benefits of the standards-based services paradigm to enterprise development are quite compelling for many departments that need to break the cycle of monolithic application development and find new avenues for extensibility and reuse of existing assets.
The initial architectural consideration is building out services that are client-neutral, abstracted interfaces to existing functionality. This can be applied today in existing projects such that an extensive adoption of SOI can be made more easily in the future. The ability of enterprise applications, integration tools, and adapters to encapsulate the systems they represent should form the basis of one key purchase criterion for each type of product.
As Web services standards for management, security, transactions, and reliability mature, more and more products currently used to support integration efforts will begin to incorporate and interoperate with them. This will allow organizations with existing integration infrastructures to use Web services in a complementary fashion. For those with an existing componentbased architecture, the maturation of these standards will permit adoption of the SOI paradigm as a lower-cost option around which to build out the next generation architecture.
In the short term, the best strategy on implementing Web services in support of SOI will be to start with small departmental projects. This will enable your organization to experiment with the SOI methodology presented in this article. In addition, it enables your team to gain experience with the various tools and technologies available today in support of the serviceoriented approach to integration. You'll find that the initial projects will be leveraged over and over again as you build out your enterprise-wide set of services in support of current and future business initiatives.
About Scott Rosenbloom Scott is a strong proponent of service-oriented integration. He looks for ways to help customers address current integration needs while building a foundation for future initiatives. He helps shape the future of the WRQ Verastream product line. Prior to WRQ, Scott spent 10 years at IBM in software design, development and consulting.
About Bill DeForeest Bill DeForeest is an expert in the development of software that enables customers to implement integration solutions in host-intensive environments. He is responsible for requirement analysis and authoring for WRQ Verastream, as well as strategic and tactical planning. Previously, Bill was a software engineer for LECO Corporation, and was a system administrator with the Spokane Intercollegiate Research and Technology Institute.
Scott Rosenbloom is a strong proponent of service-oriented integration. He looks for ways to help customers address current integration needs while building a foundation for future initiatives.
Containers and Kubernetes allow for code portability across on-premise VMs, bare metal, or multiple cloud provider environments. Yet, despite this portability promise, developers may include configuration and application definitions that constrain or even eliminate application portabil...
Most DevOps journeys involve several phases of maturity. Research shows that the inflection point where organizations begin to see maximum value is when they implement tight integration deploying their code to their infrastructure. Success at this level is the last barrier to at-will d...
DevOpsSummit New York 2018, colocated with CloudEXPO | DXWorldEXPO New York 2018 will be held November 11-13, 2018, in New York City.
Digital Transformation (DX) is a major focus with the introduction of DXWorldEXPO within the program. Successful transformation requires a laser focus ...
CloudEXPO New York 2018, colocated with DXWorldEXPO New York 2018 will be held November 11-13, 2018, in New York City and will bring together Cloud Computing, FinTech and Blockchain, Digital Transformation, Big Data, Internet of Things, DevOps, AI, Machine Learning and WebRTC to one l...
In his session at 20th Cloud Expo, Scott Davis, CTO of Embotics, discussed how automation can provide the dynamic management required to cost-effectively deliver microservices and container solutions at scale. He also discussed how flexible automation is the key to effectively bridging...
Modern software design has fundamentally changed how we manage applications, causing many to turn to containers as the new virtual machine for resource management. As container adoption grows beyond stateless applications to stateful workloads, the need for persistent storage is founda...