Open Source in the Real World
- Integration Factors to Consider
- The Linux Solution
- File Services
- Print Services
- Edge Services
- DNS/DHCP Servers and Routing
- Web Servers
- Workgroup Databases
- Light Application Servers
- Computation Clusters
- Data Center Infrastructure
- Enterprise Applications
- Messaging and Collaboration
- Internal Development
- Power Workstations
So far, you've discovered what open source is, where it originated, its advantages, and how it is created. That's all good information if you need background data to feel comfortable about the decision to move ahead. This chapter gets down to the building blocksthe actual products and solutions that are currently available to help you implement open source in your organization. This chapter covers product specifications and integration, as well as details case studies of open source implementations in real organizations.
It's worth pointing out again that, although in some instances, an organization might elect to implement only open source software, total open source IT implementations are generally not the case. By and large, open source is integrated with proprietary software to create a solution that optimally meets the requirements of the organization. These requirements might include heterogeneous system support and management, gradual migration strategies, custom application support, recouping capital investments, or any one of a number of other organization-specific factors.
Integration Factors to Consider
Figure 3.1 graphically illustrates a general model and framework for Linux integration that was developed by Novell Consulting. It is divided into two halves, one representing desktops and the platform, applications, and services that exist at the node or user end. The other half represents the infrastructure, applications, and services that are considered to be backend or data center solutions. Each of these halves is divided into concentric circles, shaded different colors representing different levels of technical integration complexity (less complex at the outer ring moving to most complex at the center).
Figure 3.1 Novell's Linux and open source integration framework.
When implementing Linux and open source solutions, it often makes sense to start with the outer rings and work to the center using a phased or incremental approach. Depending on customer needs, it can also make sense to start with the backend or data center areas first. These services can be staged, tested, and implemented seamlessly without ever affecting the majority of end users.
As always, this is a "general" model, and is used as a framework for analysis. Different environments require alternative approaches. An objective of this book is to systematically work through each of the items in the figure, starting with the data center side first and working from the outside ring toward the center.
Novell Consulting has developed a phased approach for implementing open source solutions. Each phase is general and might include elementary issues, but experience shows that going through a comprehensive checklist minimizes problems and helps accelerate full, successful deployment. Implementation phases include assessment, design, implementation/migration, training, and support. The following sections provide a brief overview of each.
The assessment phase clarifies objectives and determines feasibility. Don't blow off this stepit might sound simple, but the assessment phase in some cases should be extensive. Invariably, information turned up during the assessment phase affects objectives and feasibility. The following questions will help refine the objectives and provide critical assessment of feasibility:
What is the objective of this open source project? New capability, cost savings, integration with partners, better security/reliability/scalability? What are primary, secondary, and ancillary objectives and how should they be weighted? Is there a gating measurement or criteria that determines whether this project is successful?
How well does this project fit with existing corporate strategy? Is it an extension of an existing objective, or is it breaking new ground in a new direction? How ready and willing, in general, is the organization to accommodate this technology?
What are the stakeholder and business unit requirements (business, technical, and political for management, employees, customers, partners, suppliers)?
Where is a logical starting point? Which servers, services, and applications does it makes sense to implement/migrate in the short- and long-term?
Which open source services and applications are available that meet your needs and provide comparable (or better) features? What other alternatives might need to be evaluated, such as terminal services or emulation? Are there any solutions that are only available as proprietary software?
What are the general steps for how servers, services, and applications, along with associated data and business processes, can best be implemented/migrated?
What are the interdependencies among services and applications, desktop clients, or other software that might affect this migration/implementation plan?
Are there any regulatory policies and requirements that need to be taken into account, such as licensing, government, security, or encryption?
What opportunities for hardware and service consolidation exist?
What level of requisite skills to support Linux/open source does your staff have? Are there differences in requirements between implementation and long-term support?
What will be the estimated cost of this project and does it fall within a practical range given budget and timing restrictions?
What is the estimated internal rate of return, return on investment, or total cost of ownership, and does it meet established requirements?
After objectives have been defined and general feasibility has been confirmed, it's time to begin the implementation/migration design phase. In this phase, details are refined and a framework for execution is established. Design questions and activities include the following:
Evaluate and select a Linux distribution. Will the distribution be multipurpose, single purpose, enterprise, or single task focused? Will the configuration be compiled with a standard list of packages, a custom list, or with minimal function?
Select applications or services. Is the service or application you require available as open source? If so, does it meet all requirements for functionality, security, manageability, and so on? If not open source, does it exist from a proprietary vendor? If not, can it be developed internally using open source components?
Design a migration/implementation plan. What will be the specific project steps for the process?
Consider staging with a test bed or staging configuration to help determine actual implementation/migration steps and to expose unforeseen issues.
If migrating, determine each phase of migration, including data, users, applications, connections, services, and so on.
Determine the services architecture, which might include file, print, identity, directory, messaging, collaboration, and web services, as well as DNS/DHCP, virus protection, backup, virtual private networks (VPNs), clustering, high availability, and so forth.
Determine the application architecture. Will there be client applications, server applications, client/server applications, terminal services, or OS emulation required?
Determine business continuity requirements. Is there a need for backup, data mirroring, system redundancy, simple failover, geo-site failover, or remote storage?
Identify migration tools and processes that meet the needs of your specific environment.
Design a training plan that takes into account the existing level of Linux/open source training and certification among your staff.
The implementation phase consists of hands-on piloting, testing, configuration, rollout, and training. Here are several possible implementation phase activities:
Create a staging lab and establish setup procedures and acceptance criteria for actual implementation.
Train migration staff. This might include self-training using staging lab or professional training and coursework.
Validate the migration pilot test plans, scripts, and acceptance criteria with trained staff.
Roll out the migration design in a limited-production pilot. This might be to a limited set of advanced users or for a particular edge service that has redundancy or fail-back capabilities.
Install and configure any required migration tools.
Install or migrate server operating systems. This might include manual activities or might be automated through remote control, package management, or server management.
Install or migrate applications.
Migrate users, groups, accounts, domains, and any other management controls that are required.
Migrate data, always ensuring that copies exist and that there is an established method for fail-back if needed.
Validate pilot migration processes and deployment, and modify as necessary.
Complete migration/implementation of all services and transition to production.
Training can be interspersed throughout the implementation/migration process. In addition to staff training for transition, there will be a requirement for staff training for management and support. In addition, users might need to be trained for use of new applications and services:
Establish good communication across all stakeholders. This includes education about the new services/applications, what they are, why they are needed, and what the enhanced value to all stakeholders will be. It could also include timelines, scheduled outages, and endorsements by management. Use this opportunity to set expectations to ease transition and change.
Educate management. Management can be key in establishing a good environment for accepting change. Ensure that all affected management have a clear understanding of objectives, benefits, timelines, and possible problem areas.
Train support staff for management and administration. This might include specific training on administration software, management standards, and protocols, such as Simple Network Management Protocol (SNMP) or Common Information Model (CIM), health monitoring, logging and reports, and so on.
Train help desk support staff, providing tools and education for accommodating end users. This might include support request logging and tracking, phone support management, new application or service training, and so forth.
Train end users. Training might be provided through in-house training sessions, web-based or computer-based training, offsite professional training courses, distributed manuals, train-the-trainer programs, or any one of a number of training solutions. With effective training, less demand will be placed on help desk and system administration resources.
After a solution has been migrated or implemented, the responsibility still exists to provide ongoing support and management. This might be a simple responsibility easily assumed by an existing administrator or might involve the efforts of multiple managers in different locations and an extensive help desk department:
Consolidate administration. Look for methods, tools, and applications that simplify administration by consolidating and automating management tasks. This includes tools that are interoperable, standards-based, and work with a common interface.
Simplify support by creating self-help solutions using frequently asked questions, an online support database, and web-based support solutions for chat, problem submittal, or remote control.
Analyze support problems looking for simpler methods, workarounds, and processes to avoid repetition and redundancy.
Consider outsourcing support and administration if third-party sources can provide superior expertise at comparable or lower costs.
Periodically reevaluate solution for upgrades and enhancements both in terms of features and functionality and also for security.
Open source migrations or integration doesn't need to be a painful process. Many administrators and IT personnel have already picked up Linux knowledge just out of curiosity, so in-house expertise is available. Starting with edge services, open source solutions can be implemented without major negative impact to other services or end users. Often, the actual migration will go quite smoothly. One Novell customer, after working through each of the preceding factors, was geared to expect a two-week implementation process. The entire process went without a hitch and was accomplished in four hours.