Over the last year, a team of software engineers have been quietly revamping the architecture, codebase and development practises at World Vision Australia. They have been using the principles of continuous delivery to deliver a SOA based IT platform for a non-profit who's business genuinely has a world wide impact. In the span of 6 months they have delivered several drops to production through a push button deployment process.
We use Nuget, ProGet, WinRM, Chocolately, NSpec, Jasmine/Karma/PhantomJS and SpecFlow/Selenium/WebDriver. We test our deployment scripts with Canary deployments orchestrated through PowerShell. More interestingly we're using Puppet and Node.js to drive the idea of shipping products intended for single tenant architectures and the principle of "the machine as the artefact of the pipeline".
25. “I
do
believe
that
complexity
is
the
enemy.
Un7l
we
be9er
understand
complexity,
our
chances
of
building
be9er
IT
systems
is
limited.
The
first
thing
we
must
understand
about
complexity
is
that
not
all
complexity
is
equal.
And
the
complexity
on
which
most
people
focus
is
probably
the
least
complex
complexity
of
all.”
h4p://simplearchitectures.blogspot.com/2009/03/cancer-‐of-‐complexity.html
Roger
Sessions
30. Raw Materials
i.e GIT
Factory
i.e CI
Server
Warehouse
i.e ProGet /Nuget
Distribution Network
i.e. Powershell etc.
Retailer
i.e. Target
Environment
Use an Analogy
33. What’s inside the nuget
package?
Puppet
manifests
Environment
ConfiguraOons
as
JSON
Install
Script
in
Powershell
Zip’ed
up
applicaOon
34. Proget to manage
the packages for
the environments
Dev Feed
Test Feed
Staging Feed
Production Feed
35. Push button deployment
1.
Deploy
v0.1.7
to
staging
3.
Install
version
v.0.1.7
4.
Proget
Staging
Feed,
give
me,
v0.1.7
6.
Unpacks
the
box
and
runs
the
install
script
2.
Powershell
over
winRM
5.
Here
you
go!
Target
Server
36. Checks
for
the
correct
environment
Uses
the
environment
configuraOon
with
puppet
to
configure
the
environment
IIS
configuraOon,
Folder
permissions
etc