BestPractices zDevOps

Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

IBM Software Technical White Paper

Best practices for a


DevOps approach with
IBM System z
Today’s enterprise applications are complex. While they provide users
Highlights with a modern interface that can fit literally into the palm of their hands,
applications still need to access back-end systems and operational data-
Why DevOps? bases, as well as integrate with third-party application programming
• Align portfolio decisions with business interfaces (APIs), to provide the business functionality customers demand.
goals

• Achieve innovative ideas through DevOps is an approach for software delivery based on “lean” and “agile”
collaborative development principles, in which all stakeholders—from line of business to develop-
ment, quality assurance and operations—collaborate to deliver software
• Deliver innovation by automating
processes and eliminating waste more efficiently based on a continuous feedback loop. Adopting DevOps
capabilities and principles can result in applications that are more efficient
• Enable continuous integration with and effective, with continuous process improvement, while helping
rapid testing
ensure that the changes and enhancements to the software are based on
• Improve processes and products using real customer feedback.
feedback from internal and external
customers
These concepts are not new, but are based on principles made popular by
thought leaders in the lean manufacturing movement, such as Dr. William
E. Deming, who proposed the PDCA cycle—Plan, Do, Change, Act (or
Adjust)—to continuously improve manufacturing quality. Based on this
core approach, the lean manufacturing movement aims to both continu-
ously improve the product being manufactured and reduce waste in the
manufacturing process. DevOps extends these basic principles from the
lean and agile approaches to the entire software delivery lifecycle.
IBM Software Technical White Paper

Plan Do Quality
Act Change
Plan Do
Act Change
Plan Do
Act Change

Figure 1. The Plan-­Do-­Change-­Act cycle

The evolution of DevOps disruptive and painful software deployment process—for an


The DevOps approach grew, as its name suggests, from the undertaking that was carried out as infrequently as possible.
desire of organizations and teams to break down the barriers What is more, this lack of communication also made obtaining
and link disconnected processes between development (Dev) feedback from customers who used the software and conveying
and operations (Ops) teams. A lack of communication and trust this information back to development and lines of business very
between these organizations frequently created bottlenecks in cumbersome.
the software delivery lifecycle. The result was a complex,

2
IBM Software Technical White Paper

DevOps principles, as a result, are geared toward removing the This paper introduces DevOps and explores the nuances and
bottlenecks between development and operations while special considerations for adopting the DevOps approach for
strengthening communication and trust among various software enterprise systems developed and/or hosted on IBM® System
delivery teams. The goal is to deliver small sets of features or z® mainframes. While the principles of DevOps do not change
updates to production and get them into the hands of custom- based on the introduction of a platform such as IBM z/OS®,
ers more frequently, and then to obtain feedback and respond they do require special consideration and effort in their
more quickly—all while improving the software delivery pro- implementation. This is especially true for tooling, as System z
cesses to reduce overhead, waste and rework. typically has had its own tooling that was designed long before
modern development practices. Many z/OS-based environ-
As the DevOps approach matured, its principles began to ments still rely on traditional waterfall development processes
extend across the entire software delivery lifecycle, enabling and green-screen tools that have been in use for more than
feedback to pass to business owners and lines of business. The 20 years.
DevOps approach also allowed the act/adjust portion of the
PDCA cycle to influence not just the functionality of software, Given the true multi-platform nature of today’s enterprises,
but also the release plans, requirements, development and with the presence of mobile, cloud, distributed, and IBM i
testing environments, and the process of delivering the and/or System z applications—all of which need to be created,
software—ultimately enabling the entire PDCA cycle to be integrated, deployed and operated—the need for the efficien-
applied to end-to-end software delivery. This maturity has cies, streamlining and collaboration that DevOps provides is
allowed DevOps principles to be applied not only to systems- becoming a key competitive differentiator.
of-engagement applications, but also to more traditional
systems-of-record applications, as organizations struggle to
keep the balance between innovation and stability in the
applications they deliver to customers in rapidly evolving and
competitive markets.

3
IBM Software Technical White Paper

Continuous
business planning

Steer
Continuous customer Collaborative
feedback and development
optimization
DevOps Develop/
Operate continuous test
feedback

m
Deploy
St

te
da
an

ys
rd os
s Ec
Continuous B e s t p ra c t i c e s Continuous
monitoring testing

Continuous release
and deployment

Figure 2. Enabling feedback with DevOps principles

The capabilities of DevOps The capabilities required for success include:


Putting into place the principles of DevOps requires adopting a
set of capabilities that enable rapid, efficient and effective ●● Continuous business planning
deployment of—and feedback regarding—the software being ●● Collaborative development
delivered. This requires that cross-functional teams including ●● Continuous testing
line-of-business stakeholders, architects, developers, quality ●● Continuous release and deployment
assurance personnel, integrators and operations staff collaborate ●● Continuous monitoring
on and execute one coherent release plan. ●● Continuous customer feedback and improvement

4
IBM Software Technical White Paper

Applications
Configure > Middleware
Databases

Development Source Build Package Deploy Test Stage Production


code management

Figure 3. The delivery pipeline

This paper will focus on three capabilities of DevOps: collabora- Collaborative development
tive development, continuous testing, and continuous release and Delivering software applications or systems today involves mul-
deployment. These practices are inherently interconnected and tiple teams of developers working on separate components of
interdependent. Together they form what is known as a the application. Typically the completed application would need
“delivery pipeline” (Figure 3). This paper will describe the to interact with other applications or services to perform its
components of the pipeline, with the definitions of continuous functions. Some of these external applications or services may
integration, continuous delivery and continuous testing. be systems-of-record applications that exist in the enterprise or
they may be external third-party services. There is, as a result,
an inherent need for developers to integrate their work with
components built by other development teams and with other
applications and services.

5
IBM Software Technical White Paper

This need makes integration an essential and complex task in These steps to integrate results can lead to early discovery and
the software development lifecycle. The process is commonly exposure of integration risks. In the case of enterprise systems,
referred to as continuous integration, and it is a key part of collab- they can also expose known and unknown dependencies related
orative development. In previous development processes, to both technology and scheduling that may be at risk. As these
integration was a secondary set of tasks conducted after the practices have matured, some organizations have adopted
components, or sometimes the complete application, were built. continuous integration practices that developers follow every
This sequence was inherently costly and unpredictable, as the time they check in code. In the most mature organizations,
incompatibilities and defects that tend to be discovered only continuous integration has led to capabilities for continuous
during integration were discovered late in the development delivery in which the code and components are not only inte-
process. The result, typically, was a significant increase in grated, but are also delivered to a production-like environment
rework and risk. for testing and verification.

The “agile” movement introduced a logical step to help reduce In many enterprises, mainframe systems based on the z/OS
this risk by integrating components continuously (or as contin- platform still support the core of their enterprise applications,
uously as possible). In this step, developers integrate their work both for application hosting and for data storage. In these envi-
with the rest of the development team regularly (at least daily) ronments, continuous integration of enterprise applications is
and test the integrated work. In the case of enterprise systems, inherently dependent on System z—either as the development
which span multiple platforms, applications or services, and/or integration platform or as the platform that houses
developers also integrate with other systems and services as applications and services that applications in development will
often as possible. be integrated with.

6
IBM Software Technical White Paper

Component
team build

Integration
build

Component
team build

Figure 4. Collaborative development with continuous integration

Agile development and System z ●● By releasing software at the end of every iteration. This
The demands placed by business and customers on develop- allows developers to demonstrate regularly what they have
ment organizations have driven the wide adoption by built in order to obtain user feedback.
development teams of agile development practices. These
practices are aimed at reducing the gap between the business As described, continuous integration is one of the tenets of agile
(or the customers) and the development teams. They work development. It allows for developers to integrate their software
primarily in three ways: components with components being developed by others—
either internally or externally—on a regular basis, to allow for
●● By breaking the development effort into small chunks of early identification of risks.
work that can be completed in time-bound iterations. This
allows developers to identify and resolve risk earlier than While agile development started in distributed systems develop-
when they undertake entire projects or larger portions of ment, it is now also being adopted in the System z development
projects. community. This has led to new challenges for developers
●● By including contact with the end user or a surrogate on System z as mainframe usage models are not designed for
representing the user into the development iterations. This on-demand availability for test resources. This is due both to
helps give developers a better understanding of the user’s constrained availability and cost, and to the limitations of
needs and allows for changing needs to be more quickly existing tools that were not designed to support these new
accommodated.

7
IBM Software Technical White Paper

development methodologies. Continuous integration requires This transition to a modern source-code repository represents a
that developers integrate their work as they complete it or at significant change for mainframe development teams that have
least once a day. This becomes an issue on the System z been using the same capability for years. However, a single
platform as the mainframe may not be available when the devel- source-code management (SCM) tool is critical to allow the
opers need it. This is an issue not only for systems where the management of all artifacts, help break down the silos and
development or integration platform is z/OS, but also for any remove a key bottleneck.
system where the solution under development needs to inte-
grate with a component or service running on System z. 2. Automate the build
Automating the build is what makes continuous integration
Practices of continuous integration continuous. For System z builds, automation can become a
Martin Fowler, a signatory of what is known as the “Agile challenge—as the availability of the System z environment and
Manifesto” and a thought leader in the development of contin- the cost of accessing it can both become issues. Availability cer-
uous integration processes, has broken down the concept into tainly becomes an issue during production and business opera-
10 practices. In this section we explain these practices and tion hours. An advantage for z/OS, however, is that the build
explore how they are impacted when System z development is traditionally is already completely automated. Additionally, it
part of the development environment: should be possible to coordinate the build across multiple plat-
forms, when required.
1. Maintain a single-source repository
Whether in managing code or any file, it is critical to use ver- 3. Make your build self-testing
sion management tools to manage the source base that allows Just as builds need to be automated, so does the testing. The
multi-user access and streaming, or branching and merging, goal of continuous integration is not only to integrate the work
and that allows multiple developers in distributed locations to of teams, it is also to see if the application or system being built
work on the same set of files. With any multi-platform develop- is functioning and performing as expected. This requires that a
ment effort—and especially with System z—using a common, suite of automated test scripts be built for unit-test level and for
cross-platform, single-source repository becomes even more the component and application level. In true continuous inte-
important. If such a repository is not implemented across gration, developers should be able to start an integration build
platforms, any platform left isolated (System z, for example) by kicking off the right test suite when they commit the code.
would not be able to participate in continuous integration This process requires that the build scripts include the capabil-
practices. Integration with any work conducted on the isolated ity to build the software if needed, provision the test server,
platform would become an after-effort, waterfall-style provision the test environment, deploy the built software to the
integration. test server, set up the test data, and run the right test scripts.

8
IBM Software Technical White Paper

All of this can be a particular challenge for z/OS development, 6. Keep the build fast
but it must be addressed. The requirement to have the environ- Virtually nothing impedes continuous integration more than a
ments to do the build, deploy it, and do the automated testing build that takes extremely long to run. z/OS builds are gener-
at any time helps improve the quality of the final code. This ally fast due to the standard practice of building only changed
requires availability of system resources, the willingness to run files. However, z/OS builds do need to be coordinated with
large numbers of automated tests on a regular basis and the distributed builds, and scheduling the appropriate time when
development of the automated tests. z/OS resources are available can be an issue.

4. Ensure that everyone commits to the mainline 7. Test in a clone of the production environment
every day Testing in an environment that does not accurately represent
The goal of having every developer, across all components and the production system leaves a lot of risk in the system. The
all development environments, commit their code to the main- goal of this Practice 7, then, is to test in a clone of the produc-
line of their development streams every day is to help ensure tion environment. It is not always possible, however, to create a
that integrations remain as simple as possible. For z/OS clone of an entire System z or non-System z environment just
development today many users work independently on their for testing. Even harder is to create a clone environment with
code changes until the final audit, which is when they realize other workloads running on it.
their work is impacted by the work of other developers. This
can lead to delays in releasing functions or to last-minute Instead, what this practice requires is the creation of what is
changes that have not been properly tested being deployed into known as a “production-like” environment. In terms of specifi-
production. Regular integration of code can help ensure that cations, this environment should be as close to the production
these dependencies are identified sooner so the development environment as possible. It also should be subject to proper test
team can handle them in a timely manner and without time data management. A test environment should not contain
constraints. production data, as in many cases, that data needs to be masked.
Proper test data management can also reduce the size and com-
5. Ensure that every commit builds the mainline on an plexity of the test environment.
integration machine
This is a second part of Practice 4. Making sure that every
commit is built and that automated regression tests are run can
help ensure that problems are found and resolved earlier in the
development cycle.

9
IBM Software Technical White Paper

A complex system with multiple components—both pre- This can boost morale and help build the sense of working as a
existing (such as other services and applications) and new common team with a common goal. If challenges occur, visibil-
components being developed—also creates challenges. All the ity can provide the impetus for people to step in and help other
components, services and systems that applications need in practitioners or teams. Visibility via a common team portal is
order to access and interact with each other may not be avail- especially important for teams that are not collocated—but it is
able for running tests. This may occur for multiple reasons— also key for collocated teams and for cross-platform teams that
the component, service or system may not have been built yet, work on different components of a project.
it may have been built but available only as a production system
that cannot be tested with non-production data, or it may have 10. Automate deployment
a cost associated with its use. For systems hosted on System z, Continuous integration naturally leads to the concept and
cost can become a major issue. practice of continuous delivery—the process of automating the
deployment of software to test, system test, staging and produc-
8. Make it easy for anyone to get the latest executable tion environments.
Anyone associated with the project should have access to what
is built and should be given a way to interact with it. This Automated deployments are common in z/OS environments
allows validation of what is being built against what was because SCM systems generally include build and deployment.
expected. However, most projects do not have enough z/OS resources for
each team to deploy into a test environment at all times.
9. Make sure everyone can see what is happening Deployments also need to be coordinated with the distributed
This is a communication- and collaboration-related best side of the infrastructure, which can present a challenge due to
practice, rather than one related to continuous integration. the lack of common tooling. An effective practice to meet these
However, its importance to teams practicing continuous needs is that of continuous release and deployment.
integration cannot be discounted. Visibility to the progress of
continuous-integration builds via a central portal or
dashboard(s) can provide information across all practitioners.

10
IBM Software Technical White Paper

Continuous release and deployment Two key points are important to note with regard to continuous
The continuous release and deployment capabilities required to delivery:
create a delivery pipeline are shown in Figure 3—with the core
capability that automates the delivery pipeline being continuous ●● It does not mean deployment of every change out to produc-
delivery. The concept of continuous delivery stems from the tion, a process commonly known as continuous deployment.
need for rapid deployment that is driven by continuous integra- Continuous delivery, instead, is not a process but rather a
tion. As continuous integration produces builds at a steady pace, capability—to deploy to any environment, at any time, as
these builds need to be rapidly progressed to other environ- needed.
ments in the delivery pipeline. Builds need to be deployed to ●● It does not always mean deploying a complete application.
the test environment to perform tests, to the integration What is deployed may be the full application, one or many
environment for integration builds and integration testing, and application components, application content, application or
so on, all the way to production. Continuous delivery facilitates middleware configuration changes, or the environment to
deployment of applications from one environment to the next, which the application is being deployed. Or it may be any
as and when deployment is needed. combination of these.

Continuous delivery is a core part of continuous release and Two of the 10 practices of continuous integration form the link
deployment that is defined as the ability to regularly deliver the to and the necessity for continuous delivery:
application being developed to different environments in the
delivery pipeline—for example development, quality assurance, ●● Test in a clone of the production environment
integration test, user acceptance test, production or others ●● Automate deployment
(names may vary). Its goal is validation and potential release to
customers in a repeatable, reliable, automated manner. While “test in a clone of the production environment” may be a
Continuous delivery, however, is not as simple as just moving testing practice, it also requires continuous delivery capabilities
files around. It requires orchestrating the deployments of code, to deliver the new build to the clone test environment. This
content, applications, middleware and environment configura- delivery may require provisioning the test environment and/or
tions, and process changes. any virtualized instances of services and applications, as well as
positioning the relevant test data in addition to the actual
deployment of the application to the right test environment.

11
IBM Software Technical White Paper

Practice 10, “automate deployment,” is the core practice of Organizations looking to limit utilization and maximize avail-
continuous delivery—it is not possible to achieve continuous ability of System z test environments can utilize IBM tooling
delivery without automation of the deployment process. that allows for non-production instances of z/OS to run on dis-
Whether the goal is to deploy the complete application or only tributed systems for development and testing. This technology,
one component or configuration change, continuous delivery known as IBM Rational® Development and Test Environment
requires having tools and processes in place to deploy, as and for System z, is typically part of the delivery pipeline, providing
when needed, to any environment in the delivery pipeline. non-production environments such as development or quality
assurance. In such a scenario, the continuous delivery process
Practicing continuous delivery also tests the deployment pro- would deliver the application to these pipeline environments
cess itself. It is not unusual for organizations to suffer severe and eventually to production on System z. IBM UrbanCode
issues when deploying an application to production. However, Deploy is a tool for automating application deployments that
it is possible to uncover these issues early in the delivery lifecy- supports this configuration of environments.
cle by automating the deployment process and validating it by
deploying to production-like environments in pre-production. Continuous testing
Continuous testing is the capability for testing the application, the
Continuous delivery to System z environment and the delivery process at every stage of the
For System z applications, there are two common mechanisms delivery pipeline for the application being delivered. The items
or paths to continuous delivery: tested and the kinds of tests conducted can change depending
on the stage of the delivery lifecycle.
●● For organizations with a mature set of deployment tools and
practices in place, deployment to the target logical partition Continuous testing is achieved by testing all aspects of the
(LPAR) may be carried out leveraging a legacy configuration application and environment, including:
management tool. While limited in their ability to deliver the
full capability of continuous delivery, these tools can auto- ●● Unit testing
mate deployment to z/OS systems. ●● Functional testing
●● Alternatively, an organization can utilize a specialized ●● Performance testing
deployment automation tool that has full support for ●● Integration testing
multi-platform deployments including z/OS. The ●● System integration testing
IBM UrbanCode™ Deploy tool, for example, has a z/OS ●● Security testing
agent that can install natively on the target LPAR(s) to enable ●● User acceptance testing
continuous delivery.

12
IBM Software Technical White Paper

IBM UrbanCode Deploy Test environments


Virtual components
integrated with
IBM Rational Test Deploy what is ready,
Virtualization Server virtualize the rest
Databases Internal Third-party
messages services

IBM Rational Test Continuously test in


Workbench production-like environment
Simultaneously
test across
multiple test
Network virtualization Test using real world stages
network conditions Development Quality
assurance

Dynamic infrastructure

Figure 5. Deploy what is ready, virtualize the rest

Deploy what is ready, virtualize the rest The solution is to introduce the practice known as test
In continuous testing, the biggest challenge is that some of the virtualization. This practice replaces actual applications, services
applications, services and data sources that are required to per- and data sources that the application must communicate and
form some tests may not be available. Alternatively, even if they interact with during the test with virtual “stubs.” These virtual
are available, the cost associated with using them may prohibit instances make it possible to test applications for functionality,
running tests on an ongoing basis. Furthermore, the costs of integration and performance without making the whole ecosys-
maintaining large test environments to serve all teams develop- tem available. This virtualization can be utilized to perform the
ing multiple applications in parallel also can be high. myriad types of testing listed in the previous section. The
IBM solution for test virtualization is IBM Rational Test
Virtualization Server, which has the ability to virtualize multiple
technologies, including IBM WebSphere® MQ and
IBM CICS® applications on System z.

13
IBM Software Technical White Paper

Public cloud Complex test environment Private cloud


Enterprise
JavaBeans
Routing
service Content Business
providers partners
Third-party Collaboration Application under test
Portals Shared Messaging
services Archives services
services

Directory File
identity systems

Data warehouse Mainframe Enterprise service bus

Virtualized test environment


“Stubbed” or
“mock” services
Application under test

Databases Mainframe applications Third-party services

Figure 6. Test virtualization for continuous testing

Using IBM Rational Development and Test To address both these issues, IBM Rational Development
Environments for System z and Test Environments for System z provides a real z/OS
Testing applications—including testing for z/OS—often environment running on an Intel-based Linux system. This
encounters a lack of available resources. Generally a limited environment includes a z/OS hardware emulation that enables
number of development and test LPARs must be shared across running the true z/OS platform with middleware such as CICS,
teams. In addition, many organizations carefully control the IBM Information Management System (IMS™), IBM DB2®
MIPS utilization of their test teams in order to develop capacity and WebSphere, allowing greater flexibility for testing.
for production. Leveraging Rational Development and Test Environments for
System z in conjunction with Rational Test Virtualization
Server allows organizations to create complete end-to-end
testing environments that include z/OS without utilizing the
actual System z environments. This frees the System z main-
frames for production use.

14
IBM Software Technical White Paper

Conclusion For more information


Enterprises today are deploying applications that are truly To learn more about IBM Rational solutions and DevOps,
cross-platform—from mobile to mainframe. The DevOps please contact your IBM representative or IBM Business
approach to development uses “lean” principles to create an Partner, or access the following resources:
efficient and effective delivery pipeline that allows applications
to be developed, tested and delivered as it helps raise the qual- IBM video:
ity, increase the speed and reduce the costs of development. DevOps for System z
https://www.youtube.com/watch?v=3ALmTUXhfk0
­­ ­
Adopting a DevOps approach requires organizations to change
in areas spanning people, processes and tools. To make these IBM article:
changes possible, the organization must adopt three core Multiplatform application deployment with UrbanCode Deploy
capabilities—continuous integration, continuous delivery and ibm.com/developerworks/rational/library/multi-platform-
­ ­ ­ ­ ­ ­
continuous testing. These capabilities are platform agnostic, but application-deployment-urbancode-deploy/index.html
­ ­ ­ ­
in order to adopt them in a multi-platform ecosystem, it is
essential to adopt an integrated tool set that supports all the IBM  e-book:
­
required platforms. DevOps for Dummies
https://www14.software.ibm.com/webapp/iwm/web/signup.do?
­­ ­ ­ ­ ­
The mainframe running z/OS has been an outlier for most of source=swg-rtl-sd-wp&S_PKG=ov18162
­ ­ ­
the DevOps tooling available in the market. The tools from
IBM Rational—specifically, IBM UrbanCode Deploy, IBM video:
IBM Rational Development and Test Environments for Understanding DevOps
System z and IBM Rational Test Virtualization Server—support ­­ ­
http://www.youtube.com/watch?v=HpZBnc07q9o
the System z platform. With their support for true multi-
platform development that includes z/OS and distributed IBM web page:
platforms, these solutions provide true capabilities to scale “Enterprise modernization”
DevOps at the enterprise level—using one tool chain to support ­­ ­ ­ ­ ­ ­ ­
http://www-03.ibm.com/software/products/en/category/SWY00
DevOps for applications, teams and platforms across the
organization. IBM blog:
DevOps for Enterprise Systems News
­­
http://devopsenterprisesystems.wordpress.com/­

15
Additionally, IBM Global Financing can help you acquire the
software capabilities that your business needs in the most
cost-effective and strategic way possible. We’ll partner with
credit-qualified clients to customize a financing solution to suit
your business and development goals, enable effective cash
management, and improve your total cost of ownership. © Copyright IBM Corporation 2014
Fund your critical IT investment and propel your business IBM Corporation
forward with IBM Global Financing. For more information, Software Group
Route 100
visit: ibm.com/financing
­
Somers, NY 10589

Produced in the United States of America


About the authors July 2014
Rosalind Radcliffe
IBM, the IBM logo, ibm.com, Rational, System z, z/OS, CICS, DB2,
Distinguished Engineer, Rational Chief Architect for IBM UrbanCode, and WebSphere are trademarks of International Business
CLM and DevOps Machines Corp., registered in many jurisdictions worldwide. Other product
and service names might be trademarks of IBM or other companies. A
current list of IBM trademarks is available on the web at “Copyright and
Sanjeev Sharma trademark information” at ibm.com/le gal/c
opytrade.shtml
Executive IT Specialist, Rational Software Specialty Architect
Intel is a registered trademark of Intel Corporation or its subsidiaries in the
United States and other countries.
IBM Software Group
Linux is a registered trademark of Linus Torvalds in the United States,
other countries, or both.

This document is current as of the initial date of publication and may be


changed by IBM at any time. Not all offerings are available in every
country in which IBM operates.

THE INFORMATION IN THIS DOCUMENT IS PROVIDED


“AS IS” WITHOUT ANY WARRANTY, EXPRESS OR
IMPLIED, INCLUDING WITHOUT ANY WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND ANY WARRANTY OR CONDITION OF
NON-INFRINGEMENT. IBM products are warranted according to the
terms and conditions of the agreements under which they are provided.
1
Martin Fowler, “Continuous Integration,” May 01, 2006.
http:// martinfowler.com/a
rticles/c
ontinuousIntegration.html
2
Sanjeev Sharma, DevOps for Dummies, John Wiley & Sons, Inc., 2014.
https:// w
ww14.software.ibm.com/w
ebapp/iwm/
eb/signup
w .do?
source=swg-r tl-s d-wp&S_PK
G=ov18162

Please Recycle

RAW14362-USEN-01

You might also like