< Day Day Up > |
Within the context of this book, the term migration is defined as the transition of an environment's people, processes, or technologies from one implementation to another. While somewhat open ended, this definition allows us to discuss migration in a number of different contexts:
These examples have different inputs, different execution strategies, and dissimilar functional outcomes , but they are all migrations in that the IT functionality has been moved from one platform to a different platform. It is this varied scope that affords the term "migration" its varied interpretations. ConsolidationMigration is often confused with the act of consolidation. Webster's College Dictionary defines consolidation as, "the act of bringing together separate parts into a single or unified whole." As defined in the Sun BluePrints book Consolidation in the Data Center , by David Hornby and Ken Pepple, consolidation should be thought of as a way to reduce or minimize complexity. If you can reduce the number of devices you have to manage and the number of ways you manage them, your data center infrastructure will be simpler. This simplicity should contribute to efficiency, and consistency should contribute to lower management costs in the form of a reduced total cost of ownership (TCO). While consolidations involve migrations as applications and business functionality are moved to a single machine, migrations do not necessarily involve consolidation. The value proposition realized by migration relates to improved quality of service (QoS) and reduced TCO realized as a characteristic of the new platform, environment, and overall IT infrastructure. AdoptionFrequently, the release of a new edition of an operating environment might require that the platform's operating system (OS) be replaced with a more up-to-date version, a practice referred to as adoption . Depending on the changes introduced in the new version, upgrading to a new version of the current OS might be as difficult as migrating the application to a completely different OS, even though the hardware platform remains the same. Usually, applications that must be moved to a newer version of the same environment have to be tested to determine whether they provide the same functionality in the new environment. This can be a time-consuming , as well as expensive, process. If test suites designed to verify critical application functionality are not available, they will need to be developed, at considerable time and expense. Application programming interfaces (APIs) are the touch points between applications and the operating environment. In addition to defining APIs, the Solaris environment also supports the concept of the application binary interface (ABI), the description of these APIs used by the application executable at a binary level. This definition enables you to compare the API usage of an application executable created in one version of the OS to the binary description of interfaces supported by a different release of the OS. Consequently, compatibility between different versions of the OS can be guaranteed without any examination of the source code used to create the application. In most cases, binaries created under an earlier version of the OS require no change. However, should any incompatibilities exist, specific APIs that don't conform to the ABI definition of the new OS can be identified. Tools exist to support the static analysis of the application binary. Sun's appcert tool identifies differences so that they can be remediated prior to moving the application. This technology enables migration engineers to ascertain whether an application can be moved without problem to a newer version of the OS. Moving applications from an older version of the Solaris OS to a newer version is referred to as adoption rather than migration. This distinction is made because the use of stable API standards, backward compatibility, and an ABI and tools enables you to verify and compare application interface usage, thereby guaranteeing that an application will run without problem in the new OS. In most cases, adoptions do not require recompilation, although using a later version of the compiler might provide performance benefits. The E-StackBefore we introduce migration and porting, consider the following figure, which illustrates what we call the Enterprise stack or E-stack. This construct is used as a model of the infrastructure of the enterprise. At the top of the stack, the business strategy, people, and process are defined. The high-level functions that occur here are usually controlled by an executive team. These functions provide logistical support to enable business functions, in addition to the unique value-added functions that differentiate one enterprise from another. The outputs of this level of the stack must be implemented by the lower levels. Typically, applications are used to implement and execute business processes. The next section of the E-stack represents the execution architecture, which is composed of the following items:
The upper portion of the E-stack that defines the execution architecture supports a number of systemic properties that are key to any enterprise. Availability, scalability, measurability, and security are all desirable but can be implemented only to the extent that they are driven and supported by the execution architecture and its components. The lower portion of the E-stack represents the management architecture. These tools, people, and processes implement the management infrastructure for the enterprise and combine to control, measure, and manage the execution architecture. Tools can be used to monitor capacity, utilization, and throughput, and to help ensure that service levels can be met. Processes are in place to support change, service, deployment, and maintenance. These tools and processes are selected, developed, and administered by the IT staff. As change is effected within the E-stack, IT staff must be made aware of all changes. Training must take place to ensure that people understand the management process, as well as the execution architecture. As you can see, all the elements of the stack support each other. If the facilities do not provide adequate power or air conditioning, the results will manifest themselves in the computing and storage platforms. If the computing and storage platforms do not support the application infrastructure, the application will not be able to function correctly and service level agreements will not be met. This would mean that the business function and requirements mandated and defined from the top layer of the stack could not be implemented. The following table outlines the relationship between consolidation, migration, and adoption. Table 3-1. Consolidation, Migration, and Adoption
PortingAs illustrated in the E-stack shown in FIGURE 3-1 on page 23, the term porting applies to applications rather than infrastructures . In particular, it is usually used in discussions about custom-written applications and refers to modifying or normalizing the code of an application so it can be recompiled and deployed on a new hardware platform that supports a different OS. Wherever possible, coding standards (ANSI, POSIX, and the like) should be adopted to minimize potential future changes that might have to be made. Figure 3-1. E-Stack Model for Enterprise Infrastructure
Porting is inherently associated with modifying the code base of an application so that the functionality provided by the APIs of the existing OS and supporting software products is replicated in the new target environment. This is typically done by developing compatibility libraries that map the older APIs to the new environment. Vendors might provide these libraries to ease the burden of migrating applications to their environments, but in many cases, you will have to develop compatibility libraries yourself. Porting the application requires minimal understanding of the logic or functionality of the application. It is a somewhat mechanical effort for making the application compatible with the new environment. A porting strategy requires you to integrate the application with a new development environment, as well as with a new operating system. While source code, scripts, and data are moved, compilers, source code repositories, and software tools are replaced by new versions that are compatible with the target platform. When porting an application, you must also migrate any supporting third-party software. If the software is no longer available, you will have to find similar software and integrate it into the application. Should the amount of integration become excessive, the migration might begin to look less like a port and more like a rearchitecture effort, as described later in the chapter. Ensure that you determine the availability of third-party software used by the application before choosing a migration strategy. MigrationThe term enterprise migration refers to the process of migrating all layers of the E-stack, not only the application that supports business functionality. This is a very involved exercise that will have a greater impact on the entire IT staff than other strategies do. For example, migrations include the following changes:
|
< Day Day Up > |