Professional Documents
Culture Documents
and DevOps
Michael Ali
July 2016
A. Motivation
The strategic goals and operational objectives of the business are captured
in the Core Diagram (left side of Figure 1 below) [MITa]. The business
processes and structures in the Core Diagram are enabled and supported by
an underlying application architecture as shown on the right side of Figure 1
below. The Customer Channels in the Core Diagram are enabled and
supported by the corresponding eCommerce, Internet of Things (IoT), Pointof-Sale (POS), and Customer Relationship Management (CRM) systems.
Analytics requires Business Intelligence (BI) tools. Backend Operations are
usually handled by an ERP platform. Shared Information Services are
provided by legacy Enterprise Data Warehouse (EDW) as well as newer
NOSQL databases. The Semantic Layer infers relationships between data
elements using machine intelligence.
The application architecture is a multi-tiered combination of legacy, new,
purchased, purpose-built, on-premise, and cloud applications that interface
with customers, employees, suppliers, and other partners. Data is both
structured and unstructured.
Successfully developing, deploying, and
maintaining this complex landscape requires the latest tools and techniques.
Three of these tools and techniques: Agile, DevOps, and Cloud, are discussed
below.
Analy cs
Customer Channels
Shared Informa on
Services
master
data
eCom
BI
Tools
CRM
IoT
Retail
POS
Seman cLayer
Legacy
EDW
NOSQL
DB
B. Agile
Agile software development is based on the four tenets of the Agile
Manifesto [SCR]:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
These tenets underpin a methodology that deploys software in iterative sprints as
shown below [SCR]. Organizationally (FIGURE), Agile requires a Product Owner and a
Sprint Team. The Product Owner is the ultimate decision-maker, prioritizing and
approving the work of the sprint team. The Sprint team consists of software
architecture, development, and test resources. The Agile tenets, methodology, and
organization demonstrably improve the speed, quality, and cost-effectiveness of
software development.
Product Owner
Sprint Team
C. DevOps
Agile relies on an iterative development process, with the Product Owner and
the Sprint Team working together to prioritize, build, and test functionality.
Of course, deploying the results into production requires the Operations
team, who manage the infrastructure (servers, desktops, and network). Fast
and effective deployments, as well as post-launch maintenance in a complex
multi-tiered environment assumes tight collaboration between the Sprint
development and Operations teams, something that hasnt always occurred.
DevOps, the practice of operations and development engineers
participating together in the entire service lifecycle, from design through the
development process to production support. [AA], evolved to meet this
need.
Product Owner
Sprint Team
Opera ons
Product Owner
Sprint Team
Con nuous
Integra on
Opera ons
Con nuousDelivery
Security
D. Cloud Computing
1. Definition
The National Institute of Standards and Technology defines cloud computing
as [NIST]:
a model for enabling ubiquitous, convenient, on-demand network access to
a shared pool of configurable computing resources (e.g., networks, servers,
storage, applications, and services) that can be rapidly provisioned and
released with minimal management effort or service provider interaction.
This cloud model is composed of five essential characteristics, three service
models, and four deployment models.
Cloud computing is comprised of three service models:
Infrastructure As A service (IAAS): server, desktop, and/or
networking resources
Platform As A Service (PAAS): application development stack
including languages, libraries, and tools. The underlying infrastructure
is owned and controlled by the service provider.
Software As A Service (SAAS): complete applications and/or
portfolios of applications. The underlying platform and infrastructure is
owned and controlled by the service provider.
The new project team will consist of a mix of Agile consultants, experienced
developers, and inexperienced (in-house) talent. The first Agile project(s)
will therefore include a time and cost learning curve. So its better to start
with smaller, less critical projects. Projects consisting of minor updates to
bespoke legacy systems should also be avoided, as the learning curve should
be from the in-house resources learning Agile, vs the experienced Agile
resources and consultants learning the idiosyncrasies of the legacy system
for a simple update.
Agile software teams will identify the need for development and integration
environments that can be rapidly configured and deployed in support of their
two-week sprints. This need is an ideal use case for cloud computing. Since
the environments are not used for production, the security team can provide
lightweight security and controls governance for them. The infrastructure
team can specify the cloud provider, implement the defined security model,
and then leave the management of the environments to the development
team, alleviating the need for infrastructure resource time and effort.
The first Agile projects will go to production using the traditional routethe
output from the sprints will be batched together into a bigger release, then
regression tested in the pre-production environment, and then moved to
production. As the organizational maturity with Agile grows, the following
issues will begin to arise:
The sprint teams (and business partners) will want to deploy new
capabilities to production at the end of every sprint vs. batching all of
the changes into a larger release
The sprint teams will want their development and integration
environments to mimic the production environment to avoid postrelease bugs related to differences between those environments
Regression tests need to be automated, again to avoid batch releases,
and deploy into production at sprint speed (usually every two weeks)
The infrastructure team cant keep up with the requests to deploy to
production faster, due to the points above
These issues are resolved by DevOps processes and tools. Given the
changes driven by DevOps, a good place to start is the interface between the
integration and pre-production environments. This interface is where the
development team must engage with security and infrastructure to deal with
the constraints of production environments. Examples of constraints include
segregation of duties, testing against production data in a secure way,
network configuration, storage and server limits, high availability, disaster
recovery, and release planning and coordination.
DevOps deployment
should be treated like a project, with a project manager and dedicated
security and infrastructure resources, working with a mature (at least 1
project or multiple sprints completed) agile development team.
References
[AA] https://theagileadmin.com/what-is-devops/
[MITa] Enterprise Architecture as Strategy: Creating a Foundation for
Business Execution, Harvard Business School Press, 2006.
[NIST] The NIST Definition of Cloud Computing, Special Publication 800-145,
Sept. 2011.
[SCR] http://www.screenmedia.co.uk/blog/2014/08/what-is-agiledevelopment-a-brief-introduction/