Ergebnis für URL: http://www.antipatterns.com/vendorlockin.htm Vendor Lock-in
Vendor Lock-in [1]Wolf Ticket
AntiPattern Name: Vendor Lock-In
Also Known As: Product-Dependent Architecture, Bondage & Submission, Pottersville
Most Frequent Scale: System
Refactored Solution Name: Isolation Layer
Refactored Solution Type: Software
Root Causes: Sloth, Apathy, Pride/Ignorance (Gullibility)
Unbalanced Forces: Management of Technology Transfer, Management of Change
Anecdotal Evidence:
We have often encountered software projects that claim their architecture is
based upon a particular vendor or product line, for example, they make statements
such as:
"Our architecture is the vendor's database".
"Our architecture is CORBA".
Other anecdotal evidence occurs around the time of product upgrades and new
application installations:
"When I try to read the new data files into the old version of the application,
it crashes my system"
"Once you read data into the new application, you can never get it out again"
"The old software acts like it has a virus, but its probably just the new
application data".
"Safe upon solid rock the ugly house stands: Come and see my shining palace built
upon the sand!
-- Edna St. Vincent Millay
A worst case scenario of this AntiPattern would occur if your data and software
licenses were completely allocated to on-line services, and one day, a modal
dialog box popped up as follows:
lock-in.gif (63938 bytes)
A situation in your future under vendor lock-in.
Background
The name Pottersville comes from the popular film "It’s a Wonderful Life".
In the film, there are two alternative realities presented. In one reality, the
city is controlled by a miserly banker who refuses to give people control over
their own lives and property. This results in a culture of violence, hatred, and
envy between citizens.
General Form
A software project adopts a product technology and becomes completely dependent
upon the vendor’s implementation. When upgrades occur, software changes and
interoperability problems occur. Continuous maintenance, based upon product
upgrades, is required to keep the system running. Expected new product features
are often delayed; causing schedule slips and inability to complete desired
application software features.
Symptoms and Consequences
[rombul1a.gif] Commercial product upgrades drive the application software
maintenance cycle.
[rombul1a.gif] Promised product features are delayed or never delivered, causing
missed application feature deliveries.
[rombul1a.gif] The product varies significantly from the advertised open systems
standard.
[rombul1a.gif] If a product upgrade is missed entirely, then a product repurchase
and re-integration is often necessary.
Typical Causes
[rombul1a.gif] The product varies from published open system standards because
there is no effective conformance process for the standard.
[rombul1a.gif] The product is selected based entirely upon marketing and sales
information, and not upon more detailed technical inspection.
[rombul1a.gif] There is no technical approach for isolating application software
from direct dependency upon the product.
[rombul1a.gif] Application programming requires in-depth product knowledge.
[rombul1a.gif] The complexity and generality of the product technology greatly
exceeds that of the application needs; direct dependence upon the product
involves lost management of complexity of the application system architecture.
Known Exceptions
The Vendor-Lock-In AntiPattern is acceptable when a single vendor's code makes up
the majority of code needed in an application.
Refactored Solution
This solution is called Isolation Layer. An Isolation Layer provides separation
from other software packages and technology. It can be used to provide software
portability from underlying middleware and platform-specific interfaces.
This solution is applicable when one or more of the following conditions apply:
[rombul1a.gif] Isolation of application software from lower-level infrastructure
is needed. This infrastructure may include middleware, operating systems,
security mechanisms, or other low-level mechanisms.
[rombul1a.gif] Changes to the underlying infrastructure are anticipated within
the life cycle of the affected software. For example , new product releases or
planned migration to new infrastructure.
[rombul1a.gif] A more convenient programming interface is useful or necessary.
The level of abstraction provided by the infrastructure is too primitive or
flexible for the intended applications and systems.
[rombul1a.gif] It is desired to provide consistent handling of the infrastructure
across many systems. Some heavyweight conventions for default handling of
infrastructure interfaces must be provided.
[rombul1a.gif] Multiple infrastructures must be supported, either during the life
cycle or concurrently.
5fig5_12.gif (4157 bytes)
The isolation layer separates application software from product-dependent
interfaces which may change.
The solution entails creating a layer of software that abstracts the underlying
infrastructure or product-dependent software interfaces. This layer provides an
application interface which completely isolates the application software from the
underlying interfaces. The application interface should provide a convenient
language-specific interface to desired capabilities. The layering software should
provide default handling of some infrastructure calls and parameters, but exposes
other details when appropriate.
Utilize this isolation layer across multiple system development projects to
assure interoperability, consistency, and isolation. Migrate the isolation to new
infrastructures as necessary. Also update the isolation layer when the
infrastructure is updated. In all cases, maintain the same application software
interface, regardless of infrastructure changes.
Provide gateways between multiple infrastructures which must be supported
concurrently. See Gateway pattern [Malveau 97]. Provide forward and reverse
gateways during infrastructure migration. [Brodie 95]
The benefits of this solution include:
[rombul1a.gif] Mitigates the risks and costs of infrastructure migration.
[rombul1a.gif] Avoids obsolescence due to infrastructure changes.
[rombul1a.gif] Reduces the risk and cost of software upgrades due to
infrastructure changes.
[rombul1a.gif] Provides a less labor intensive and inexpensive programming
interface to most application programmers.
[rombul1a.gif] Supports the concurrent use of multiple infrastructures. Does so
transparently.
[rombul1a.gif] Enforces coordinated default handling of flexible interfaces and
parameters.
[rombul1a.gif] Separates knowledge of infrastructure from application knowledge.
Allows a small team of infrastructure developers to maintain the isolation layer,
while the majority of programmers have a customized interface to the layering
software.
The other consequences of this solution include:
[rombul1a.gif] Isolation layer must be migrated and maintained , potentially on
multiple platforms and infrastructures.
[rombul1a.gif] Coordination of developers required to define initial isolation
layer interfaces.
[rombul1a.gif] Coordination required to make changes to the application
interfaces.
Variations
This solution is often used at the global level in commercial products and
technologies . Typically the Isolation Layer enables the vendor to provide a
convenient language-specific interface to a lower-level technology. Some
convenience can be provided through default handling of lower-level interfaces
which are more flexible than necessary for most applications.
For example, the HP Object-Oriented Distributed Computing Environment (OO DCE)
product comprises an isolation layer. The product presents C++-interface to
application developers. Underlying this interface is an isolation layer of
software that is built upon the C-language DCE environment. Calls to the C++ APIs
can invoke several underlying DCE procedure calls. In particular, just two calls
are needed to initialize OO DCE security service interfaces. The underlying
isolation layer, in turn, makes over 50 calls to DCE APIs in order to achieve
this initialization with the legacy DCE security service.
The Isolation Layer solution is most applicable at the enterprise level. However,
individual systems have applied this solution in order to provide middleware
isolation. For example, the Paragon Electronic Light Table (ELT) product uses an
isolation layer above the Common Desktop Environment (CDE) middleware
infrastructure, called ToolTalk. By providing ToolTalk isolation, Paragon may
easily migrate their product to a CORBA infrastructure and support both CORBA and
ToolTalk infrastructures.
Example
The following examples are three known uses of the Isolation Layer solution.
1. The ORBlite framework provides isolation of application software from
multiple language mappings and network protocols. [Moore 97] ORBlite is based
upon HP ORBplus. ORBlite was able to support multiple language mappings for
C++ given the evolution of the OMG mappings during the adoption and revision
process. [Moore 97]
2. Even though OpenDoc is no longer in the product strategy of its creator,
there were some interesting technical approaches used, including the
Isolation Layer solution. The OpenDoc Parts Framework (OPF) provides a higher
level C++ programming interface to the OpenDoc compound document interface,
defined in ISO IDL. OPF includes interfaces to operating system functions
(including display graphics) as well as OpenDoc functions. In doing so, OPF
provides source code portability interfaces for middleware, windowing, and
operating systems. Compound document parts written using OPF can be ported
via recompilation and linking to OS/2, MacOS, and Windows95. A testing
capability called LiveObjects was available from the Component Integration
Labs , the consortium responsible for OpenDoc. The LiveObjects testing
approach will assure component portability and interoperability.
3. EOSDIS (Earth Observation System) is a large-scale information retrieval
project funded by NASA. The EOSDIS middleware abstraction layer was used to
provide isolation between application software and evolving middleware.
Initial prototypes used a beta-test CORBA product. These prototyping efforts
proved unsuccessful; largely due to difficulties in using the beta test
product. Although program management acknowledged the need for future CORBA
support, a proprietary Object-Oriented DCE extension was chosen for short
term implementations. Management also did not want to rely entirely on
proprietary interfaces. The situation was resolved through the addition of a
middleware abstraction layer that masked the choice of middleware from EOSDIS
application software. The abstraction layer hid differences in object
creation, object activation, and object invocation.
Related Solutions
This pattern is related to the Object Wrapper pattern [Malveau 97]. The object
wrapper pattern provides isolation to and from a single application to a single
object infrastructure. The Isolation Layer pattern provides insulation of
multiple applications from multiple infrastructures.
This pattern is related to the Profile pattern [Malveau 97]. An Isolation Layer
can be viewed as a particular enterprise profile for the use of middleware.
The Isolation Layer can be thought of as one the layers in a layered
architecture. [Malveau 97] In contrast to most layers, this is a very thin layer
that does not contain application objects. Typically, an isolation layer only
serves as a proxy for integrating clients and services with one or more
infrastructures. The Proxy pattern is described in [Buschmann 96].
Applicability to Other Viewpoints and Scale
The impact of Pottersville on management is a loss of control of the technology,
IT functionality, and their O&M budgets to the dictates of vendor product
releases. There are also impacts related to risk management. Vendor lock-in is
often accepted with promises for future features that arrive later than expected,
if ever.
The impact of Pottersville on developers is a requirement for in-depth product
knowledge. This knowledge is transient, in that, it will be obsolesced by the
next product release. Developers are on a continuous learning-curve tread-mill,
gathering rumors and information about product features, product bugs, and
product futures.
[romhorsa.gif]
[2]Home [3]Up [4]Next
� Copyright 2017 William Brown, Raphael Malveau, Hays McCormick, Thomas
Mowbray, and Scott W. Thomas. All rights reserved.
For problems or questions regarding this web contact [5][Web Master].
Last updated: April 2, 2017
References
1. http://antipatterns.com/wolfticket.htm
2. http://antipatterns.com/./
3. http://antipatterns.com/arch_cat.htm
4. http://antipatterns.com/wolfticket.htm
5. mailto:skip@antipatterns.com
Usage: http://www.kk-software.de/kklynxview/get/URL
e.g. http://www.kk-software.de/kklynxview/get/http://www.kk-software.de
Errormessages are in German, sorry ;-)