devops - nercomp...release - click a button, get it done (also: standards, standards, standards!)...

35
DevOps Finding the right amount #NercompPDO3

Upload: others

Post on 11-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

DevOps

Finding the right amount

#NercompPDO3

Page 2: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Who am I?Ian [email protected] of Data and Systems IntegrationBrandeis University

- Web and Middleware Development- Identity and Access Management- Data Warehouse- Data Integrations

Page 3: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

About BrandeisFounded in 1948

Waltham, MA (9 miles west of Boston)

Undergraduate enrollment: 3,635

Graduate enrollment: 2,087

Staff FTE: 1,150

Faculty FTE: 569

Page 4: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Finding the right amount?What do you already do? Even consider informal practices.

Where you want to see your team and why?

Consider: How much is appropriate for your environment?

Page 5: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

We do not have any DevOps software or practices.

Page 6: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor
Page 7: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

My teamDevelopers that are responsible for deployments as well as responsible for the overall deployment environments.

Dev + Ops = just trying to get everything done

Is this a problem?

Page 8: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

What goals really matter to you?Maintainable

Repeatable

Minimize downtime

Limiting production support, especially off-hours

Cross-training / coverage

Page 9: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Let’s take a closer look at DevOps concepts applied to my current practices…

Page 10: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor
Page 11: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Plan - status meetings, tickets, project managers as needed

Create - development standards

Verify - quality of our testing/verification varies on project and stakeholders

Package - Click a button, get it done

Release - Click a button, get it done (also: standards, standards, standards!)

Configure - Automatic when possible; responsibilities cross group borders

Monitor - logs, splunk, uptime robot, hyperic, alerts to email and Slack

Applying the DevOps Toolchain to My Reality

Page 12: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

OK, maybe we were doing DevOps before DevOps was cool. #OldSchoolCool #DevOps

Page 13: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

PlanningGathering requirements early and often

Change management (mitigating scope creep)

Status meetings! Consider format; hold people accountable; while making it a meeting people look forward to attending

Page 14: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Let’s talk about standardsDirectory structure (where to find our software)

Software builds

Code structure

Software repository

Release management mechanism

Page 15: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Directory StructureOnce you know how we organize our software you can navigate to any of it with ease.

/usr/public contains underlying software (Apache HTTPD, .so files, OpenSSL, etc.)

/var/applications contains the applications

/var/data contains database files, logs and other data files

Software runs as “distid” user (not root)

The same setup is true on any server within our purview.

Page 16: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Underlying Software Builds (/usr/public)Download third-party kits to “build server”

Giant “make” file

Process creates /usr/public

Defined process to sync to target servers

Super easy, repeatable process to add software or do one upgrade

Extremely painful process to upgrade everything

Page 17: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Code Structureetc directory for config files

.control directory for encrypted passwords

bin directory for scripts (e.g. cron jobs)

templates directory for HTML templates

website directory for CSS, JS, images

README

and…

Page 18: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Perl Code Structure - Basics/var/applications/[App_Name][ver]/perllib/

Brandeis/

[App_Name]/

Handler.pm

View.pm

Process.pm

Schema.pm

Brandeis::App_Name::Process

Page 19: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Python/Flask Code Structure -- look familiar?In addition to same standards (e.g. bin, etc, templates, README)…

config.py Config_sandbox.pyForms.py __init__.pymodels.pyprocess.pyviews.py

Page 20: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

It’s all about standards.

Page 21: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Software RepositorySubversion (svn), Locally hosted - Future: Perhaps github

Gets the job done, but conceptually getting outdated and no reason to be on-site.

Source control doesn’t replace the need for communication between team members.

Page 22: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

VerifyQuality of our testing/verification varies on project and stakeholders

Challenges of developers being testers

Challenges of stakeholders being testers

Hired one QA staff in Project Management team for everything

Concept of Quality Champion

Page 23: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

PackagesCustom Web-based UI to build deploy software packages

Click a button to build a kit/package

Click a button to release any version

Click a button to restart a process if needed

Desire to replace with something not custom but not complex.

Page 24: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Click to deploy

Page 25: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Software Releases/var/applications/[production-name]/[VER#]

/var/applications/[production-name]/production → /var/applications/[production-name]/[VER#]

Not required to keep every old version on target server but can be convenient.

Automatic creation of environment specific symbolic links (e.g. /var/applications/[production-name]/production/etc/example.xml → /var/applications/[production-name]/production/etc/example.xml.DEV)

Page 26: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Know what’s deployed

Page 27: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Locally Hosted Third-Party SoftwareRelease to /var/applications (link from other location if needed)

Separate configuration from application -- Goal is to be able to upgrade software and overlay configuration.

Create a repeatable process (even just a simple script to create symbolic links)

Page 28: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

ConfigureUnlike software releases, this crosses into our server provisioning group

Important to have close relationship across groups

Server images (minimal vs. one with some of our basic setup and SSH keys)

Especially if minimal, manual script to walkthrough to get to our “standard”

Could be better, but at least it’s documented

Page 29: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

MonitorLogs

Splunk

uptime robot

Hyperic

alerts to email and Slack

Page 30: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Building the culture of collaboration.

Page 31: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Everything is changingPreference tobuy vs. build

Preference for cloud/SaaS solutions

PeopleSoft → Workday

Increasing need forIntegrations (iPaaS tool)

Page 32: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Applying DevOps in low-code areas?Data integration software with a graphical user interface

Easy to click, drag and deploy…

But how to maintain quality?

How does this fit into DevOps practices?

Consider product limitations (e.g. what if you cannot create builds?)

Page 33: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Room for improvementBuild server and make file vs. package management

Custom release management UI vs. cloud products

Local Subversion vs. GitHub

DevOps for iPaaS

QA / testing (let alone continuous integration)

DevOps for SaaS (e.g. Workday)

Page 34: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Personal

Team

Other groups and outside individuals

Take time to appreciate successes

Page 35: DevOps - NERCOMP...Release - Click a button, get it done (also: standards, standards, standards!) Configure - Automatic when possible; responsibilities cross group borders Monitor

Keeping the conversation goingHow can we help each other?

Ian [email protected] of Data and Systems IntegrationBrandeis University

Please complete your evaluation emailed to you!

Thank you!