Jenkins World Tour 2015
Santa Clara, CA, September 2-3
Confidential – © 2015 Equinix Inc. Equinix.com 2
Continuous Delivery with Container Ecosystem
•
CAD @ Platform Equinix - Overview
•
CAD Current Industry - Opportunities
•
Monolithic to Micro Service
•
Continuous Delivery with Containers
•
Demo
•
Q&A
Prepared By: Global SAE, Global IT
Presenters:
Ramchandra Koty
Kalidas Ganesan
Venkat Rangasamy
Confidential – © 2015 Equinix Inc. Equinix.com 3
3
Platform Equinix
Overview
Experience as Global Market
Maker
17+ years Data Center Operational Excellence
Global Innovator & Thought
Leader
Interconnection / Peering exchanges
Global Portals based on multiple patents
Supporting Key
Communities of Interest
Network, cloud, content, financial services, and enterprise
Confidential – © 2015 Equinix Inc. Equinix.com 4
Data Science Digital Marketing Mobile Apps Web App
Big Data & Analytics
Cloud
APIs
Microservices
Open Source Contribution
& more…
Product Ecosystem
Continuous Delivery Ecosystem
Technology Ecosystem
Infrastructure Ecosystem
Confidential – © 2015 Equinix Inc. Equinix.com 5
How a Continuous Delivery Process can be Visualized?
Confidential – © 2015 Equinix Inc. Equinix.com 6
CAD @ Equinix
Continuous Delivery
Business Objectives
Continuous Integration
Continuous Innovation Configuration Management
Application Accelerators (Dev-2-Deploy)
Continuous Application Delivery (CAD) Platform
• Continuous Integration
• Automated Environment Orchestration • Dev Plugins & Adapters
• Artifacts Management • Custom Monitoring • Application Monitoring Tools • Standard Monitoring
• Software Code & Configurations • Code Administration
• Code & Configuration Deployments • Quality of Services
• Centralized Code Governance • Runbook Execution • Agility Practices in Dev
Success Factors
• Enable Agile & Self-Service Application
Development
• E-2-E Automation of Dev-2-Deploy
processes
• Intelligence in Business as usual
• Integrate Dev Tools for high developer
productivity
• Continuous Delivery Support for Mobile, Cloud & Big Data Platforms
CAD
Team (
CADBees
) is
platform enabler
that provides tools & frameworks to
accelerate application delivery
,
automate Dev-2-Deploy cycles &
Confidential – © 2015 Equinix Inc. Equinix.com 7
Micro-services
Containers
Cloud
Confidential – © 2015 Equinix Inc. Equinix.com 8
Current Industry Trends
Cloud
Private Cloud
Public Cloud
nodjs Play
Redis
nodjs nodjs
Tomcat Redis
Redis Play
Play nodjs
nodjs
Angular JS Angular
JS Angular
JS
+
Globalize your workload
On-Demand and rapid Elasticity
Cloud bursting
Confidential – © 2015 Equinix Inc. Equinix.com 9
Current Industry Trends
Containers
App Artifacts
Binaries
(Sys Utils / App Runtime)
OS templates Docker Source Code
(Application)
Source Code (Sys Utils / App Runtime)
+
=
App Source Code
Pull the Source code in target machine
Compile
make install
App Artifacts
Compile the Source code in Build Box
Pull the App artifacts from target machine
Install
Sys Utils / App Runtime
Pull the Source code in target machine & Compile it
Install rpm / bin package
Install via yum (package manger ) to handle the dependencies
OS templates
Install all the s/w and create template
Create a cookbook make the server to level what we want (Phoenix Servers)
Use packers to move OS image to different Hypervisors
Docker
OS + utilities + App Runtime + App artifacts
Changes are versioned
Immutable Servers
Confidential – © 2015 Equinix Inc. Equinix.com 10
Current Industry Trends
Micro-services
Monolithic application
puts all its functionality
into single deployable
application
Microservice architecture
puts each elements of
functionality into separate
service
Small, easy to understand
code base
Loosely coupled
service
with bounded contexts
(Modularity)
Each micro-service can be
deployed
independently
.
Suitable to implement and
support multiple versions
of APIs
Scaling
can be done @
individual modules level
Ability to use a different
technology stack (
polyglot
)
Key Highlights
Microservices + Containers – a convergence of perfectly matched technical
approaches to building scalable systems
Confidential – © 2015 Equinix Inc. Equinix.com 11
Confidential – © 2015 Equinix Inc. Equinix.com 12
Cloud: Multi-Cloud Application Deployment Prototype @ Equinix
Equinix
1
• Build Docker Container for the App
• Ship the Container to the required Cloud Environments
2
• Provision Cloud Exchange Ports • Setup User Access
• Move App specific Docker Containers to Multi-Cloud leveraging Cloud Exchange
3
PROTOTYPE Steps
• Validate the Multi-Cloud Deployment
Confidential – © 2015 Equinix Inc. Equinix.com 13
nodjs
Containerization in Action @ Equinix - Build , Ship, Run
Major Tools/ Approaches
lmctfy
App runtime
1
2
ConfigurationChange Build Image
Push Image
App Container Repo
Pull Image
+
2
1
3
4
AppCInternal Execution unit
5
Redis nodjs Build Box Base ImageB
U
I
L
D
D
E
P
L
O
Y
nodjs Play
Redis My Application nodjs OCP RunC Jetpack
Cloud Native readiness
Changes are versioned
Eliminate
inconsistencies
between development, test,
production environments (
Immutable
)
Faster
Env setup
CLI + REST API
Significantly improves the
speed & reliability
of
continuous deployment
Confidential – © 2015 Equinix Inc. Equinix.com 14
Microservices in Action @ Equinix
Orch e strat o r M icr o se rv ice CSP
NSP Enterprise Developers
Workflow Manager and Execution Engine
Portal
API
Equinix SDN
E x te rna l S y ste m sMicroservice Management Capabilities (Discovery, Config,
Routing, etc.)
Simple design focused on
one business capability
Can be developed
independently by different
teams
Published integration model
Granular independent
components
Smart endpoints and dumb
pipes
Utilize HW and OS resources
to maximum
Key Highlights
Cloud aware services
Tagging and Branching
strategy
Continuous deployment
New Micro-service CI/CD
onboarding
Micro-service endpoints
management
Confidential – © 2015 Equinix Inc. Equinix.com 15
•
NO
more single Artifact
• Number of artifacts are increased due to micro-services architecture
•
NO
centralized Release Repository
• Keeping records of different artifact promotion is cumbersome.
•
NO
Artifact Rollback from strategy
• Not having option to deploy the PROD Artifact in the lower environment
•
NO
Single Jenkins job / Pipeline
• Most of the time Micro-services code are resides in multiple code repo. With the default option of Jenkins,
we can’t go with single Jenkins job to build and deploy it
• NO
Service Decommission (Self-serviceable)
• Micros-services can co-exist with multiple version . Some time, later we need to decommission the services
manually
• NO
Second Line Service Deployment
• There is no Blue-Green line deployment to have minimized Production deployment downtime window.
&
Yes
, we need all the above mentioned features to empower and
govern the overall Micro-services CI & CD Platform
Micro-services @ Equinix – What we learned from Monolithic App Deployments
Confidential – © 2015 Equinix Inc. Equinix.com 16
Micro-services @ Equinix – Build & Deployment Approach
Approach ( Deployment Job will take the artifact from Nexus Artifactory)
Workspace
Build - Job
Execution Log
Workspace
INT - Job
Execution Log
Workspace
Production- job
Execution Log
INT (3)
Artifactory
QA (3) PRODUCTION (Never)
Tools
Same Build job for all Micro-services
Store Artifacts in centralized Release
Repo
Predictable Storage growth to store
Artifacts
Blue-
Green
line deployment
Zero downtime Deployment
Decommission
Confidential – © 2015 Equinix Inc. Equinix.com 17
3.
App
Containers
2.
App
Artifact
1.
Docker
Image
CI/CD Docker @ Equinix –
Step by Step Guide to Deploy an Application via Docker
1. How to Build a
Docker Image
• Take the Base RHEL 7.0 image from RedHat
• Install needed utilities ( wget , tar)
• Install App Components
• Inject startup scripts
• Push to Internal Docker Registry
2. Building
Application Artifact
• Check-out the code from SVN/Github
• Build the Artifact using Build Tool
• Bundle Along with SSI / properties
3. Running an
App Container
• Pull the latest Docker (App) Image
• Run the Docker container with
• Jenkins Job ID to pull the artifact Bundle
• Pass the SSI specific Values
• Expose the App Port to Host Image
• Mount the Log Volume
• Allocate the shared CPU / Memory
• Start Container
• Same Steps will be followed for all Environment.
• No Release Specific Images
Confidential – © 2015 Equinix Inc. Equinix.com 18
Security
o
Authentication
o
Permission management
o
Role Management
o
Accountability of Actions
performed
o
Auditable Action
Self- serviceable
o
Employ the Resources for
better tasks
o
Cut down the wait time for
regular Work
o
More Automation, less
human mistake
Operational Analytics
o
Ecosystem Current
State in terms of release
o
Usage Metrics
o
Deviation metrics
User Experience
o
CSS – Skinning (Branding)
o
Keep the information what
they want
o
Simple outside; complex
inside
Confidential – © 2015 Equinix Inc. Equinix.com 19
Jenkins Customization @ Equinix
•
CAD Branding
• CSS Skinning done to Jenkins to look like Equinix portals
•
Authentication / Authorization
• Used “JIRA crowd plugin” to integrate the user authentication /authorization.
•
Multiple Git Repository Support
• Default Jenkins support One Repo, Customized to support multiple repositories
•
Configuration history and Audit
• Used job configuration history, Audit 2 database , Audit Trial Plugins
•
Dynamic Parameter Choice Support
• Used Uno Choice Plugin
•
Jenkins Build Status
• Used “Green Ball Plugin” to Show the success build status in Green in color
•
Hidden input filed
• Used JavaScript to hide the input fields
•
Jenkins Build Name
• Override the Build Name to identify what micro service/ tag got built/deployed
•
Jenkins Pipeline
• This Help us to visualize and enforce the SDLC. And helps in avoiding direct deployment to production.
•
Groovy scripts
Confidential – © 2015 Equinix Inc. Equinix.com 20
Continuous Integration & Continuous Delivery
Nightly Integration
QA & UAT Production Build Integration
Self-Serviceable
Auditable
Enforces Deployment process
User Notification
Test Coverage Code Coverage Build Code Analysis
Scheduled job
Results / report published to DEV team
Enforces Code Quality
User Notification
Confidential – © 2015 Equinix Inc. Equinix.com 21
Footer
#jenkinsconf
Confidential – © 2015 Equinix Inc. Equinix.com 27