application deployment at uc riverside

128
Developer Toolchain at UC Riverside Mike Kennedy Enterprise Architect

Upload: michael-kennedy

Post on 19-Jan-2017

597 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Application Deployment at UC Riverside

Developer Toolchain at UC Riverside

Mike KennedyEnterprise Architect

Page 2: Application Deployment at UC Riverside

Developer Toolchain at UC Riverside

Mike KennedyEnterprise Architect

Application Deployment

Page 3: Application Deployment at UC Riverside

About Me

Page 4: Application Deployment at UC Riverside

About Me• Mike Kennedy

Page 5: Application Deployment at UC Riverside

About Me• Mike Kennedy

• At UC Riverside since 1995 (Student then Staff)

Page 6: Application Deployment at UC Riverside

About Me• Mike Kennedy

• At UC Riverside since 1995 (Student then Staff)

• Enterprise Architect

Page 7: Application Deployment at UC Riverside

About Me• Mike Kennedy

• At UC Riverside since 1995 (Student then Staff)

• Enterprise Architect

• Interests lie in web services, application architecture, integration, middleware

Page 8: Application Deployment at UC Riverside

About Me• Mike Kennedy

• At UC Riverside since 1995 (Student then Staff)

• Enterprise Architect

• Interests lie in web services, application architecture, integration, middleware

• Major projects - New SIS (Banner), UCPath, ServiceNow, New development environment, ESB

Page 9: Application Deployment at UC Riverside

Talk Background

Page 10: Application Deployment at UC Riverside

Talk Background• Up until recently, applications developed using

PL/SQL Web Toolkit and Oracle IAS

Page 11: Application Deployment at UC Riverside

Talk Background• Up until recently, applications developed using

PL/SQL Web Toolkit and Oracle IAS

Page 12: Application Deployment at UC Riverside

Talk Background• Up until recently, applications developed using

PL/SQL Web Toolkit and Oracle IAS

Page 13: Application Deployment at UC Riverside

Talk Background• Up until recently, applications developed using

PL/SQL Web Toolkit and Oracle IAS

• Began effort to modernize: .NET vs. Java

Page 14: Application Deployment at UC Riverside

Talk Background• Up until recently, applications developed using

PL/SQL Web Toolkit and Oracle IAS

• Began effort to modernize: .NET vs. Java

• Ultimately settled on Grails (Groovy/JVM based framework)

Page 15: Application Deployment at UC Riverside

Talk Background• Up until recently, applications developed using

PL/SQL Web Toolkit and Oracle IAS

• Began effort to modernize: .NET vs. Java

• Ultimately settled on Grails (Groovy/JVM based framework)

• Opportunity: Improve on application delivery processes and architecture (my focus today)

Page 16: Application Deployment at UC Riverside

Grails

Page 17: Application Deployment at UC Riverside

Grails

Grails Application

Tomcat App Server

Java Virtual Machine (JVM)

Operating System

F5

app-prd-1.cis.ucr.edu app-prd-2.cis.ucr.edu

APPPROD

User 1

Tomcat Session Replication

User 2

Database Connection Datab

ase C

onne

ction

HTTP HTTP

Proxy H

TTP Proxy HTTP

Puppet Server

Deployment Server

Configure

Configure

Configure

Source Control Management Server (Git)

ESB

Web Service C

all

Public Network

Private Network

Deploy

Pull

Nagios (Monitoring)

Graphite (Performance

Stats)

Dev

CIS

Commits Code

Starts

Deployments

Writes Scripts

Writes Modules

Writes M

onitoring Checks

Monitor

Col

labo

ratio

n

Grails Application and Support Architecture

https://app.ucr.edu/

Page 18: Application Deployment at UC Riverside

Process Improvement

Page 19: Application Deployment at UC Riverside

Process Improvement• What are the strengths/weaknesses of current

process?

Page 20: Application Deployment at UC Riverside

Process Improvement• What are the strengths/weaknesses of current

process?

• What is the target state?

Page 21: Application Deployment at UC Riverside

Process Improvement• What are the strengths/weaknesses of current

process?

• What is the target state?

• Identify technologies/tools that could help

Page 22: Application Deployment at UC Riverside

Legacy Deployment Process

Page 23: Application Deployment at UC Riverside

Legacy Deployment Process• Developer writes code and deploys

Page 24: Application Deployment at UC Riverside

Legacy Deployment Process• Developer writes code and deploys

• Developer has complete control

Page 25: Application Deployment at UC Riverside

Legacy Deployment Process• Developer writes code and deploys

• Developer has complete control

• Little to no logging

Page 26: Application Deployment at UC Riverside

Legacy Deployment Process• Developer writes code and deploys

• Developer has complete control

• Little to no logging

• Potential issues with coordination

Page 27: Application Deployment at UC Riverside

Legacy Deployment Process• Developer writes code and deploys

• Developer has complete control

• Little to no logging

• Potential issues with coordination

• Infrastructure (Dev Ops) not in the loop

Page 28: Application Deployment at UC Riverside

New Deployment Process Requirements

Page 29: Application Deployment at UC Riverside

New Deployment Process Requirements

• Developers must be empowered to work asynchronously from Dev Ops - BUY IN!

Page 30: Application Deployment at UC Riverside

New Deployment Process Requirements

• Developers must be empowered to work asynchronously from Dev Ops - BUY IN!

• Must be logged and auditable

Page 31: Application Deployment at UC Riverside

New Deployment Process Requirements

• Developers must be empowered to work asynchronously from Dev Ops - BUY IN!

• Must be logged and auditable

• Automation! Automation! Automation!

Page 32: Application Deployment at UC Riverside

New Deployment Process Requirements

• Developers must be empowered to work asynchronously from Dev Ops - BUY IN!

• Must be logged and auditable

• Automation! Automation! Automation!

• Implicit notification of events

Page 33: Application Deployment at UC Riverside

New Deployment Process Requirements

• Developers must be empowered to work asynchronously from Dev Ops - BUY IN!

• Must be logged and auditable

• Automation! Automation! Automation!

• Implicit notification of events

• Close collaboration between developers and dev ops teams

Page 34: Application Deployment at UC Riverside

Application Delivery Cycle

Page 35: Application Deployment at UC Riverside

Application Delivery Cycle

Develop

Build

Deploy

Monitor

Page 36: Application Deployment at UC Riverside

Application Delivery Cycle

Develop

Build

Deploy

MonitorGraphite

Page 37: Application Deployment at UC Riverside

Develop

Page 38: Application Deployment at UC Riverside

Develop• Gitlab

Page 39: Application Deployment at UC Riverside

Develop• Gitlab

• Git server (Source Control Management)

Page 40: Application Deployment at UC Riverside

Develop• Gitlab

• Git server (Source Control Management)• Very “Github-like”

Page 41: Application Deployment at UC Riverside

Develop• Gitlab

• Git server (Source Control Management)• Very “Github-like”• Web Front End

Page 42: Application Deployment at UC Riverside

Develop• Gitlab

• Git server (Source Control Management)• Very “Github-like”• Web Front End• Code reviews

Page 43: Application Deployment at UC Riverside

Develop• Gitlab

• Git server (Source Control Management)• Very “Github-like”• Web Front End• Code reviews• Merge requests

Page 44: Application Deployment at UC Riverside

Develop• Gitlab

• Git server (Source Control Management)• Very “Github-like”• Web Front End• Code reviews• Merge requests• Open source

Page 45: Application Deployment at UC Riverside

Develop• Gitlab

• Git server (Source Control Management)• Very “Github-like”• Web Front End• Code reviews• Merge requests• Open source• On premise or cloud

Page 46: Application Deployment at UC Riverside

Develop• Gitlab

• Git server (Source Control Management)• Very “Github-like”• Web Front End• Code reviews• Merge requests• Open source• On premise or cloud

Page 47: Application Deployment at UC Riverside

Develop

Page 48: Application Deployment at UC Riverside

Develop• Slack

Page 49: Application Deployment at UC Riverside

Develop• Slack

• Collaboration tool

Page 50: Application Deployment at UC Riverside

Develop• Slack

• Collaboration tool• Chat

Page 51: Application Deployment at UC Riverside

Develop• Slack

• Collaboration tool• Chat• Integrations galore!

Page 52: Application Deployment at UC Riverside

Develop• Slack

• Collaboration tool• Chat• Integrations galore!• Free w/ special EDU pricing for advanced

features

Page 53: Application Deployment at UC Riverside

Develop• Slack

• Collaboration tool• Chat• Integrations galore!• Free w/ special EDU pricing for advanced

features

Page 54: Application Deployment at UC Riverside

Develop

Developer Git Server (SCM)

Collaboration

Developer

Developer

Page 55: Application Deployment at UC Riverside

Develop

Developer Git Server (SCM)

Collaboration

Push

Developer

Developer

Page 56: Application Deployment at UC Riverside

Develop

Developer Git Server (SCM)

Collaboration

Push

Notify

Developer

DeveloperReceive

Page 57: Application Deployment at UC Riverside

Develop

Developer Git Server (SCM)

Collaboration

Push

Developer

Developer

Page 58: Application Deployment at UC Riverside

Develop

Developer Git Server (SCM)

Collaboration

Push

Developer

Developer

Pull

Page 59: Application Deployment at UC Riverside

Build

Page 60: Application Deployment at UC Riverside

Build• Gitlab, Slack

Page 61: Application Deployment at UC Riverside

Build• Gitlab, Slack

• Jenkins

Page 62: Application Deployment at UC Riverside

Build• Gitlab, Slack

• Jenkins• Continuous Integration Server (CI) - Builds

Page 63: Application Deployment at UC Riverside

Build• Gitlab, Slack

• Jenkins• Continuous Integration Server (CI) - Builds• Can be triggered by branch push

Page 64: Application Deployment at UC Riverside

Build• Gitlab, Slack

• Jenkins• Continuous Integration Server (CI) - Builds• Can be triggered by branch push• We use special branch names - release/x.y.z

Page 65: Application Deployment at UC Riverside

Build

Page 66: Application Deployment at UC Riverside

Build• Gitlab, Slack

Page 67: Application Deployment at UC Riverside

Build• Gitlab, Slack

• Nexus

Page 68: Application Deployment at UC Riverside

Build• Gitlab, Slack

• Nexus• Maven artifact repository

Page 69: Application Deployment at UC Riverside

Build• Gitlab, Slack

• Nexus• Maven artifact repository• Jenkins publishes built wars here

Page 70: Application Deployment at UC Riverside

Build• Gitlab, Slack

• Nexus• Maven artifact repository• Jenkins publishes built wars here• Can contain other artifacts (jars, zips)

Page 71: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

Page 72: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

file.groovy

Page 73: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

file.groovyPush

Page 74: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

file.groovyPush

NotifyReceive

Page 75: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

file.groovyPush

Page 76: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

file.groovyPush

Build Webhook

Page 77: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration file.groovy

Push

Pull

Page 78: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

Push

Pull

Build WAR

Page 79: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

Push

Pull

Notify

Build WAR

Receive

Page 80: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

Push

Pull

Build WAR

Page 81: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

Push

Pull

Publish

Build WAR

Page 82: Application Deployment at UC Riverside

Build

Developer

Git Server (SCM)

CI (Build) Server

Artifact Repository (Maven)

Collaboration

Push

Pull

Publish

Build WAR

Page 83: Application Deployment at UC Riverside

Deploy

Page 84: Application Deployment at UC Riverside

Deploy• Slack, Nexus

Page 85: Application Deployment at UC Riverside

Deploy• Slack, Nexus

• Rundeck

Page 86: Application Deployment at UC Riverside

Deploy• Slack, Nexus

• Rundeck• Job scheduler and runbook automation

Page 87: Application Deployment at UC Riverside

Deploy• Slack, Nexus

• Rundeck• Job scheduler and runbook automation• Jobs can be prebuilt and shared

Page 88: Application Deployment at UC Riverside

Deploy• Slack, Nexus

• Rundeck• Job scheduler and runbook automation• Jobs can be prebuilt and shared• Auditable

Page 89: Application Deployment at UC Riverside

App Server 2

App Server 1

Deploy

Developer

Artifact Repository (Maven)Collaboration

Job Scheduler/Deployment Server

App Server N

Page 90: Application Deployment at UC Riverside

App Server 2

App Server 1

Deploy

Developer

Artifact Repository (Maven)Collaboration

Job Scheduler/Deployment Server

App Server N

Run

Page 91: Application Deployment at UC Riverside

App Server 2

App Server 1

Deploy

Developer

Artifact Repository (Maven)Collaboration

Job Scheduler/Deployment Server

App Server N

Run Execute

Page 92: Application Deployment at UC Riverside

App Server 2

App Server 1

Deploy

Developer

Artifact Repository (Maven)Collaboration

Job Scheduler/Deployment Server

App Server N

Run Execute

Download WAR

Page 93: Application Deployment at UC Riverside

App Server 2

App Server 1

Deploy

Developer

Artifact Repository (Maven)Collaboration

Job Scheduler/Deployment Server

App Server N

Run Execute

Page 94: Application Deployment at UC Riverside

App Server 2

App Server 1

Deploy

Developer

Artifact Repository (Maven)Collaboration

Job Scheduler/Deployment Server

App Server N

Run Execute

NotifyReceive

Page 95: Application Deployment at UC Riverside

Monitor

Page 96: Application Deployment at UC Riverside

Monitor• Slack

Page 97: Application Deployment at UC Riverside

Monitor• Slack

• Nagios

Page 98: Application Deployment at UC Riverside

Monitor• Slack

• Nagios• Ping test

Page 99: Application Deployment at UC Riverside

Monitor• Slack

• Nagios• Ping test• Application availability

Page 100: Application Deployment at UC Riverside

Monitor• Slack

• Nagios• Ping test• Application availability

Page 101: Application Deployment at UC Riverside

Monitor• Slack

• Nagios• Ping test• Application availability

• Graphite

Page 102: Application Deployment at UC Riverside

Monitor• Slack

• Nagios• Ping test• Application availability

• Graphite• Application Metrics

Page 103: Application Deployment at UC Riverside

Monitor• Slack

• Nagios• Ping test• Application availability

• Graphite• Application Metrics• JVM Performance

Page 104: Application Deployment at UC Riverside

Monitor

Page 105: Application Deployment at UC Riverside

Monitor• Logging

Page 106: Application Deployment at UC Riverside

Monitor• Logging

• ELK stack

Page 107: Application Deployment at UC Riverside

Monitor• Logging

• ELK stack• Log Stash (Log Collection)

Page 108: Application Deployment at UC Riverside

Monitor• Logging

• ELK stack• Log Stash (Log Collection)• Elastic Search (Log Indexing, Searching)

Page 109: Application Deployment at UC Riverside

Monitor• Logging

• ELK stack• Log Stash (Log Collection)• Elastic Search (Log Indexing, Searching)• Kibana (Visualization)

Page 110: Application Deployment at UC Riverside

Monitor• Logging

• ELK stack• Log Stash (Log Collection)• Elastic Search (Log Indexing, Searching)• Kibana (Visualization)

• Splunk Killer?

Page 111: Application Deployment at UC Riverside

Monitor• Logging

• ELK stack• Log Stash (Log Collection)• Elastic Search (Log Indexing, Searching)• Kibana (Visualization)

• Splunk Killer?• Check out Nick Turley’s talk:

“Security Data Analytics Platform” tomorrow at 9am!

Page 112: Application Deployment at UC Riverside

Monitor

App Server 2

App Server 1Developer

Collaboration

App Server N

Dev Ops

Log Collection and Visualization (ELK)

Monitoring

Performance Metrics

Graphite

Page 113: Application Deployment at UC Riverside

Monitor

App Server 2

App Server 1Developer

Collaboration

App Server N

Dev Ops

Log Collection and Visualization (ELK)

Monitoring

Performance Metrics

Log Messages

Graphite

Page 114: Application Deployment at UC Riverside

Monitor

App Server 2

App Server 1Developer

Collaboration

App Server N

Dev Ops

Log Collection and Visualization (ELK)

Monitoring

Performance Metrics

Log MessagesView

Graphite

Page 115: Application Deployment at UC Riverside

Monitor

App Server 2

App Server 1Developer

Collaboration

App Server N

Dev Ops

Log Collection and Visualization (ELK)

Monitoring

Performance Metrics

View

Graphite

Page 116: Application Deployment at UC Riverside

Monitor

App Server 2

App Server 1Developer

Collaboration

App Server N

Dev Ops

Log Collection and Visualization (ELK)

Monitoring

Performance Metrics

View

Graphite

Monitor

Page 117: Application Deployment at UC Riverside

Monitor

App Server 2

App Server 1Developer

Collaboration

App Server N

Notify

Receive

Dev Ops

Log Collection and Visualization (ELK)

Monitoring

Performance Metrics

Receive

View

Graphite

Monitor

Page 118: Application Deployment at UC Riverside

Monitor

App Server 2

App Server 1Developer

Collaboration

App Server N

Notify

Receive

Dev Ops

Log Collection and Visualization (ELK)

Monitoring

Performance Metrics

Receive

View

Graphite

Page 119: Application Deployment at UC Riverside

Monitor

App Server 2

App Server 1Developer

Collaboration

App Server N

Notify

Receive

Dev Ops

Log Collection and Visualization (ELK)

Monitoring

Performance Metrics

Receive

View

GraphiteMetrics

Page 120: Application Deployment at UC Riverside

Monitor

App Server 2

App Server 1Developer

Collaboration

App Server N

Notify

Receive

Dev Ops

Log Collection and Visualization (ELK)

Monitoring

Performance Metrics

Receive

View

GraphiteView

Metrics

Page 121: Application Deployment at UC Riverside

Demo Time

Page 122: Application Deployment at UC Riverside

Outcomes

Page 123: Application Deployment at UC Riverside

Outcomes• Still early

Page 124: Application Deployment at UC Riverside

Outcomes• Still early

• Buy-in was quick

Page 125: Application Deployment at UC Riverside

Outcomes• Still early

• Buy-in was quick

• Good feedback from developers and dev ops teams

Page 126: Application Deployment at UC Riverside

Outcomes• Still early

• Buy-in was quick

• Good feedback from developers and dev ops teams

• Many of the tools deployed used for non-development projects (New SIS)

Page 127: Application Deployment at UC Riverside

Outcomes• Still early

• Buy-in was quick

• Good feedback from developers and dev ops teams

• Many of the tools deployed used for non-development projects (New SIS)

• All tools deployed are free and open source!

Page 128: Application Deployment at UC Riverside

QuestionsMike Kennedy

[email protected]

Twitter: @mike_kennedy