SlideShare a Scribd company logo
Predicting Space
Weather with Docker
Chris Lauer, Senior Application Software Developer,
NOAA Space Weather Prediction Center
● Embedded in several levels of agency Bureaucracy:
Commerce, NOAA, NWS, NCEP, SWPC
● Different subject area, not in common with parent
agencies. Have our own software section.
● FISMA high security system. “No cloud!” they said.
● Cool Mission
The Space Weather
Prediction Center
Space Weather?!
1. Trained our developers in scrum
2. Taught us how to build consensus
3. Started sprinting - for 8 years
4. Customer Collaboration over Contract Negotiation
We saw big improvements in morale and capability.
It was time to improve delivery!
First: Agile
We started our move to Agile in 2012
Giant single MS SQL product database for all data
Views and stored procedures reaching across schemas to combine
disparate data sources into something “tidy”. Lots of business logic in the
database.
No Service layer
Vast majority of applications hit the database directly. Deep coupling was
killing our agility.
The Architectural Challenge
How do you get started with CI with this?
1. Took some Jenkins/CI training, with Docker!
2. Labeled the old way: shared database integration
3. Read up on a new way: Building Microservices
4. Found a small, high value project (Verification)
5. One team into two: database & microservices teams
6. Developed Verification Service with new rules
Part 1: Seeking out a new way
How we got started
Scientific Software Issues
Scientific Software often has delicate, conflicting, and weird
dependencies. It might also not have much configurability. Docker
captures and isolates these dependencies beautifully.
Easing Deployments
We want to go faster! If it works on Dev, it should work on Staging, and it
should work on Production. Docker can guarantee this if we solve
configuration and data persistence for each project.
Why Docker?
New Rules
Only one thing talks
to a database.
No more deep coupling. Only
a service can talk to a
database.
Automated end-to-
end testing.
Jenkins can stand up all
components and
dependencies, drop test data
in ingest, query the results.
Microservices.
A collection of loosely
coupled, highly cohesive
services that each solve part
of the problem.
New Rules
(Continued)
Event driven.
Low latency. Use
asynchronous messaging for
loose coupling.
New stuff!
NoSQL (MongoDB) for a
developer friendly database.
Python Flask for RESTful
gets/posts. RabbitMQ for
messaging. Docker
containers for everything.
12factor.net
practices.
The new default. Especially
“store configuration in the
environment” and “log to
standard out”.
Developers were happy.
So exciting to be learning contemporary technologies. Pace of learning
was rapid! Iterative changes were much easier. It was faster to learn the
new stuff than to deliver in the old system.
Customer was happy.
Customer was thrilled with the capabilities we built, and how quickly they
were delivered.
How did it go?
Amazing.
The microservices team got way out ahead of the
organization very quickly.
We found we’d made a few mistakes. (Learning time!)
We started hitting some new obstacles. E.g. Containers
wouldn’t build on the secure environment.
But...
And there’s always a but...
Don’t give anything Docker Daemon access.
We started monitoring our services with nagios, via the docker daemon.
Pen testers were able to compromise nagios and elevate their
permissions. Instead: monitor a RESTful endpoint of your service.
And if you do give that access, lock it down!
We were a little loose on security when we initially set up Jenkins (before
we knew what it was for), which was another easy target for pen-testers.
Some small lessons from our
early security mistakes
Minor security missteps aside, initial adoption went
great!
Let’s keep learning this Docker stuff!
Part 2: Replacing a Critical
Data Source
Part 2: GOES-16
Initial adoption went well!
Let’s do it again for real, with a critical
component of our operational
infrastructure: GOES satellite data
GOES drives two out of three of our NOAA Scales
X-rays and Particle data impact communications, satellites, and high
altitude radiation exposure. This has to be low latency and reliable.
Adventures in legacy land
Many of our critical applications had dependencies on GOES data (from
the database directly).
Challenge: Replacing Legacy
And getting better at this Docker stuff!
1. Build a service (in a Docker, end to end testing, etc.)
2. That service needs to understand and solve:
a. The nature of the data
b. The way other applications use the data
3. Add the old data to service (GOES-14 and GOES-15)
4. Port legacy applications to pull from the service
5. Add the new data (GOES-16) to the service. Go live!
Replacing the Old Way
Using Docker in our Strangler Pattern
● GOES Service: takes posts from ingest, gets (queries) from applications.
● LDM: Unidata software for getting raw data.
● GOES-R ingest: process data from the LDM, post to Service.
● GOES-NOP ingest: process data from the legacy PP, post to Service.
● High-cadence ingest: process 1-second, 2-second data, post to Service.
● Fluence/Background: generate daily indices, post to Service.
● Plotting: Host line plotting UI for forecasters.
● MongoDB: backing store for Service.
● RabbitMQ: loose coupling between ingests, LDM, Legacy PP.
● Imagery ingest: process solar imagery from LDM.
● Imagery: imagery displays for forecasters.
GOES: Docker Containers
● docker-compose.yml: defines relationship between
the services, and to the host.
● .env: isolate host differences
● service-name.env: one config for each service
● Docker image(s): hosted on our internal registry
(Harbor)
Four Deployment Artifacts
The new way starts to solidify
docker-compose.yml
CODE EDITOR
version: '2.1'
services:
goesr-ingest:
image: harbor.swpc.noaa.gov/goes/goes-microservices_goesr-ingest:latest
build: goes_ingest
volumes:
# define NETCDF_IN in the .env file, which may be hidden by your os
- ${NETCDF_IN}:/goes_netcdf_dir
env_file:
- goes_ingest.env
restart: unless-stopped
.env: different on each host
CODE EDITOR
# This file should be modified and saved as '.env' in the same
# directory as docker-compose.yml. It will be hidden, but
# Docker Compose will source these variables when it runs
NETCDF_IN=/data/goesr/ldm
QUALITY_ROUTER_PERSISTANCE=/home/goes_nop/
service-name.env
CODE EDITOR
MONGO_USER=goesUser
MONGO_PW=***
FLASK_USER=goesUser
FLASK_PW=***
SATELLITES=[13,14,15,16,17,18]
MONGO_SERVER=mongodb
MONGO_DATABASE=goes
IS_FLASK_DEBUG=False
GOES_SERVICE_LOG_LEVEL=INFO
Docker Images from Registry
From our local harbor (deployed with docker-
compose). http://goharbor.io
1. Make an account on the target host
2. Setup docker-compose.yml, .env, and service*.env
3. Add a robot account in harbor. Docker login to the
SWPC registry with that account.
4. docker-compose pull
5. docker-compose up -d; docker-compose logs -f
Deployment Steps
Simple instructions for deploying anything
How did it GOES?
Amazing.
How did it GOES?
Amazing.
Our biggest mistake
Where we really got it wrong.
We didn’t build CI into our
deployments. Or monitor it.
Turned out we weren’t very good at
writing tests yet, so they were broken
more often than the code.
Developers learned to ignore failed builds.
A missed opportunity to meet the CI goals
of this new architecture.
● Easy to get services running locally in a dev VM!
● Easy to know it will work in staging/production!
● Easy to work on just the part that needs a fix: Can
stand up the whole stack, or just one component!
● Easier collaboration between component devs!
● Dependencies are well documented in code!
● Data persistence is very intentional!
This Docker stuff is great!
Let’s do it for everything!
ICAO: Short-fuse Expansion of Mission
Within a few months, we needed to be running science code in
production to forecast space weather aviation impacts (GPS,
communication, and radiation).
We had models in varying states of not ready
A mix of FORTRAN from the punch card era, IDL, perl, python, shell, and a
model we’d always been told was never going to production. Hardcoded
paths, messy logging, and hidden dataflow.
Part 3: Science Collaboration
Collaborating with scientists, in Docker!
Let’s Teach Docker
I gave a presentation to the scientists:
Docker, Containers, and Continuous
Integration.
We tried three different ways of bringing
these models to production in
containers, using Docker and Docker
Compose.
Credit: Randall Munroe, xkcd.com
CTIPe: Max Usable Frequency
Global Total Electron Content
CARI7: High Altitude Radiation
Predicting Space Weather with Docker
Benefits
We’re going
faster! 1 Month
To onboard new devs
Used to be ~ 1 year
5 Minutes
To deploy to production
Used to be an hour, with luck
1 Minute
To rollback a deployment
And another 5 to try again!
1 Hour
To stand up a local dev
environment
Used to be about a week
Tamara Bledsoe
Ratina Dodani
Marcus England
Kelvin Fedrick
Kiley Gray
Michael Husler
Chris Lauer
Ben Rowells
David Stone
Ad

More Related Content

What's hot (20)

Considerations for operating docker at scale
Considerations for operating docker at scaleConsiderations for operating docker at scale
Considerations for operating docker at scale
Docker, Inc.
 
Production sec ops with kubernetes in docker
Production sec ops with kubernetes in dockerProduction sec ops with kubernetes in docker
Production sec ops with kubernetes in docker
Docker, Inc.
 
DCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless WorldDCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless World
Docker, Inc.
 
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
Docker, Inc.
 
DCSF19 How To Build Your Containerization Strategy
DCSF19 How To Build Your Containerization Strategy  DCSF19 How To Build Your Containerization Strategy
DCSF19 How To Build Your Containerization Strategy
Docker, Inc.
 
Modernizing Java Apps with Docker
Modernizing Java Apps with DockerModernizing Java Apps with Docker
Modernizing Java Apps with Docker
Docker, Inc.
 
DockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mphDockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mph
Docker, Inc.
 
Taking Docker from Local to Production at Intuit JanJaap Lahpor, Intuit and H...
Taking Docker from Local to Production at Intuit JanJaap Lahpor, Intuit and H...Taking Docker from Local to Production at Intuit JanJaap Lahpor, Intuit and H...
Taking Docker from Local to Production at Intuit JanJaap Lahpor, Intuit and H...
Docker, Inc.
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Patrick Chanezon
 
Reduce DevOps Friction with Docker & Jenkins by Andy Pemberton, Cloudbees
Reduce DevOps Friction with Docker & Jenkins by Andy Pemberton, CloudbeesReduce DevOps Friction with Docker & Jenkins by Andy Pemberton, Cloudbees
Reduce DevOps Friction with Docker & Jenkins by Andy Pemberton, Cloudbees
Docker, Inc.
 
DockerCon SF 2015: Docker in the New York Times Newsroom
DockerCon SF 2015: Docker in the New York Times NewsroomDockerCon SF 2015: Docker in the New York Times Newsroom
DockerCon SF 2015: Docker in the New York Times Newsroom
Docker, Inc.
 
Docker Roadshow 2016
Docker Roadshow 2016Docker Roadshow 2016
Docker Roadshow 2016
Docker, Inc.
 
Docker for developers on mac and windows
Docker for developers on mac and windowsDocker for developers on mac and windows
Docker for developers on mac and windows
Docker, Inc.
 
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Docker, Inc.
 
DCSF19 Containers for Beginners
DCSF19 Containers for BeginnersDCSF19 Containers for Beginners
DCSF19 Containers for Beginners
Docker, Inc.
 
Docker for Ops - Scott Coulton, Puppet
Docker for Ops - Scott Coulton, PuppetDocker for Ops - Scott Coulton, Puppet
Docker for Ops - Scott Coulton, Puppet
Docker, Inc.
 
Docker for .NET Developers - Michele Leroux Bustamante, Solliance
Docker for .NET Developers - Michele Leroux Bustamante, SollianceDocker for .NET Developers - Michele Leroux Bustamante, Solliance
Docker for .NET Developers - Michele Leroux Bustamante, Solliance
Docker, Inc.
 
DockerCon 2017 - General Session Day 1 - Solomon Hykes
DockerCon 2017 - General Session Day 1 - Solomon HykesDockerCon 2017 - General Session Day 1 - Solomon Hykes
DockerCon 2017 - General Session Day 1 - Solomon Hykes
Docker, Inc.
 
How to accelerate docker adoption with a simple and powerful user experience
How to accelerate docker adoption with a simple and powerful user experienceHow to accelerate docker adoption with a simple and powerful user experience
How to accelerate docker adoption with a simple and powerful user experience
Docker, Inc.
 
Docker on docker leveraging kubernetes in docker ee
Docker on docker leveraging kubernetes in docker eeDocker on docker leveraging kubernetes in docker ee
Docker on docker leveraging kubernetes in docker ee
Docker, Inc.
 
Considerations for operating docker at scale
Considerations for operating docker at scaleConsiderations for operating docker at scale
Considerations for operating docker at scale
Docker, Inc.
 
Production sec ops with kubernetes in docker
Production sec ops with kubernetes in dockerProduction sec ops with kubernetes in docker
Production sec ops with kubernetes in docker
Docker, Inc.
 
DCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless WorldDCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless World
Docker, Inc.
 
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
Activision's Skypilot: Delivering Amazing Game Experiences Through Containeri...
Docker, Inc.
 
DCSF19 How To Build Your Containerization Strategy
DCSF19 How To Build Your Containerization Strategy  DCSF19 How To Build Your Containerization Strategy
DCSF19 How To Build Your Containerization Strategy
Docker, Inc.
 
Modernizing Java Apps with Docker
Modernizing Java Apps with DockerModernizing Java Apps with Docker
Modernizing Java Apps with Docker
Docker, Inc.
 
DockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mphDockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mph
Docker, Inc.
 
Taking Docker from Local to Production at Intuit JanJaap Lahpor, Intuit and H...
Taking Docker from Local to Production at Intuit JanJaap Lahpor, Intuit and H...Taking Docker from Local to Production at Intuit JanJaap Lahpor, Intuit and H...
Taking Docker from Local to Production at Intuit JanJaap Lahpor, Intuit and H...
Docker, Inc.
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Patrick Chanezon
 
Reduce DevOps Friction with Docker & Jenkins by Andy Pemberton, Cloudbees
Reduce DevOps Friction with Docker & Jenkins by Andy Pemberton, CloudbeesReduce DevOps Friction with Docker & Jenkins by Andy Pemberton, Cloudbees
Reduce DevOps Friction with Docker & Jenkins by Andy Pemberton, Cloudbees
Docker, Inc.
 
DockerCon SF 2015: Docker in the New York Times Newsroom
DockerCon SF 2015: Docker in the New York Times NewsroomDockerCon SF 2015: Docker in the New York Times Newsroom
DockerCon SF 2015: Docker in the New York Times Newsroom
Docker, Inc.
 
Docker Roadshow 2016
Docker Roadshow 2016Docker Roadshow 2016
Docker Roadshow 2016
Docker, Inc.
 
Docker for developers on mac and windows
Docker for developers on mac and windowsDocker for developers on mac and windows
Docker for developers on mac and windows
Docker, Inc.
 
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Docker, Inc.
 
DCSF19 Containers for Beginners
DCSF19 Containers for BeginnersDCSF19 Containers for Beginners
DCSF19 Containers for Beginners
Docker, Inc.
 
Docker for Ops - Scott Coulton, Puppet
Docker for Ops - Scott Coulton, PuppetDocker for Ops - Scott Coulton, Puppet
Docker for Ops - Scott Coulton, Puppet
Docker, Inc.
 
Docker for .NET Developers - Michele Leroux Bustamante, Solliance
Docker for .NET Developers - Michele Leroux Bustamante, SollianceDocker for .NET Developers - Michele Leroux Bustamante, Solliance
Docker for .NET Developers - Michele Leroux Bustamante, Solliance
Docker, Inc.
 
DockerCon 2017 - General Session Day 1 - Solomon Hykes
DockerCon 2017 - General Session Day 1 - Solomon HykesDockerCon 2017 - General Session Day 1 - Solomon Hykes
DockerCon 2017 - General Session Day 1 - Solomon Hykes
Docker, Inc.
 
How to accelerate docker adoption with a simple and powerful user experience
How to accelerate docker adoption with a simple and powerful user experienceHow to accelerate docker adoption with a simple and powerful user experience
How to accelerate docker adoption with a simple and powerful user experience
Docker, Inc.
 
Docker on docker leveraging kubernetes in docker ee
Docker on docker leveraging kubernetes in docker eeDocker on docker leveraging kubernetes in docker ee
Docker on docker leveraging kubernetes in docker ee
Docker, Inc.
 

Similar to Predicting Space Weather with Docker (20)

Deploying deep learning models with Docker and Kubernetes
Deploying deep learning models with Docker and KubernetesDeploying deep learning models with Docker and Kubernetes
Deploying deep learning models with Docker and Kubernetes
PetteriTeikariPhD
 
Intro to Cloud Native _ v1.0en (2021/01)
Intro to Cloud Native _ v1.0en (2021/01)Intro to Cloud Native _ v1.0en (2021/01)
Intro to Cloud Native _ v1.0en (2021/01)
Young Suk Ahn Park
 
7+1 myths of the new os
7+1 myths of the new os7+1 myths of the new os
7+1 myths of the new os
Alexis Richardson
 
#VirtualDesignMaster 3 Challenge 4 - Dennis George
#VirtualDesignMaster 3 Challenge 4 - Dennis George#VirtualDesignMaster 3 Challenge 4 - Dennis George
#VirtualDesignMaster 3 Challenge 4 - Dennis George
vdmchallenge
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
Simon Storm
 
The world of Docker and Kubernetes
The world of Docker and Kubernetes The world of Docker and Kubernetes
The world of Docker and Kubernetes
vty
 
DockerDay2015: Keynote
DockerDay2015: KeynoteDockerDay2015: Keynote
DockerDay2015: Keynote
Docker-Hanoi
 
prodops.io k8s presentation
prodops.io k8s presentationprodops.io k8s presentation
prodops.io k8s presentation
Prodops.io
 
Extending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesExtending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with Kubernetes
Nicola Ferraro
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
Hojoong Kim
 
56K.cloud Docker Training
56K.cloud Docker Training56K.cloud Docker Training
56K.cloud Docker Training
Brian Christner
 
Shipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSShipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOS
Ross Kukulinski
 
Lunar Way and the Cloud Native "stack"
Lunar Way and the Cloud Native "stack"Lunar Way and the Cloud Native "stack"
Lunar Way and the Cloud Native "stack"
Kasper Nissen
 
Using Docker EE to Scale Operational Intelligence at Splunk
Using Docker EE to Scale Operational Intelligence at SplunkUsing Docker EE to Scale Operational Intelligence at Splunk
Using Docker EE to Scale Operational Intelligence at Splunk
Docker, Inc.
 
Docker
DockerDocker
Docker
Yansi Keim
 
A docker love story
A docker love storyA docker love story
A docker love story
Brian de Heus
 
DEVNET-1169 CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
DEVNET-1169	CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...DEVNET-1169	CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
DEVNET-1169 CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
Cisco DevNet
 
Cloud Native Dünyada CI/CD
Cloud Native Dünyada CI/CDCloud Native Dünyada CI/CD
Cloud Native Dünyada CI/CD
Mustafa AKIN
 
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesPatterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to Kubernetes
QAware GmbH
 
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesPatterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Josef Adersberger
 
Deploying deep learning models with Docker and Kubernetes
Deploying deep learning models with Docker and KubernetesDeploying deep learning models with Docker and Kubernetes
Deploying deep learning models with Docker and Kubernetes
PetteriTeikariPhD
 
Intro to Cloud Native _ v1.0en (2021/01)
Intro to Cloud Native _ v1.0en (2021/01)Intro to Cloud Native _ v1.0en (2021/01)
Intro to Cloud Native _ v1.0en (2021/01)
Young Suk Ahn Park
 
#VirtualDesignMaster 3 Challenge 4 - Dennis George
#VirtualDesignMaster 3 Challenge 4 - Dennis George#VirtualDesignMaster 3 Challenge 4 - Dennis George
#VirtualDesignMaster 3 Challenge 4 - Dennis George
vdmchallenge
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
Simon Storm
 
The world of Docker and Kubernetes
The world of Docker and Kubernetes The world of Docker and Kubernetes
The world of Docker and Kubernetes
vty
 
DockerDay2015: Keynote
DockerDay2015: KeynoteDockerDay2015: Keynote
DockerDay2015: Keynote
Docker-Hanoi
 
prodops.io k8s presentation
prodops.io k8s presentationprodops.io k8s presentation
prodops.io k8s presentation
Prodops.io
 
Extending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesExtending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with Kubernetes
Nicola Ferraro
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
Hojoong Kim
 
56K.cloud Docker Training
56K.cloud Docker Training56K.cloud Docker Training
56K.cloud Docker Training
Brian Christner
 
Shipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSShipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOS
Ross Kukulinski
 
Lunar Way and the Cloud Native "stack"
Lunar Way and the Cloud Native "stack"Lunar Way and the Cloud Native "stack"
Lunar Way and the Cloud Native "stack"
Kasper Nissen
 
Using Docker EE to Scale Operational Intelligence at Splunk
Using Docker EE to Scale Operational Intelligence at SplunkUsing Docker EE to Scale Operational Intelligence at Splunk
Using Docker EE to Scale Operational Intelligence at Splunk
Docker, Inc.
 
DEVNET-1169 CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
DEVNET-1169	CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...DEVNET-1169	CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
DEVNET-1169 CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
Cisco DevNet
 
Cloud Native Dünyada CI/CD
Cloud Native Dünyada CI/CDCloud Native Dünyada CI/CD
Cloud Native Dünyada CI/CD
Mustafa AKIN
 
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesPatterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to Kubernetes
QAware GmbH
 
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to KubernetesPatterns and Pains of Migrating Legacy Applications to Kubernetes
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Josef Adersberger
 
Ad

More from Docker, Inc. (20)

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
Docker, Inc.
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
Docker, Inc.
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
Docker, Inc.
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
Docker, Inc.
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
Docker, Inc.
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
Docker, Inc.
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
Docker, Inc.
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
Docker, Inc.
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
Docker, Inc.
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
Docker, Inc.
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Docker, Inc.
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Docker, Inc.
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
Docker, Inc.
 
Sharing is Caring: How to Begin Speaking at Conferences
Sharing is Caring: How to Begin Speaking at ConferencesSharing is Caring: How to Begin Speaking at Conferences
Sharing is Caring: How to Begin Speaking at Conferences
Docker, Inc.
 
Virtual Meetup Docker + Arm: Building Multi-arch Apps with Buildx
Virtual Meetup Docker + Arm: Building Multi-arch Apps with BuildxVirtual Meetup Docker + Arm: Building Multi-arch Apps with Buildx
Virtual Meetup Docker + Arm: Building Multi-arch Apps with Buildx
Docker, Inc.
 
DCSF 19 How Entergy is Mitigating Legacy Windows Operating System Vulnerabili...
DCSF 19 How Entergy is Mitigating Legacy Windows Operating System Vulnerabili...DCSF 19 How Entergy is Mitigating Legacy Windows Operating System Vulnerabili...
DCSF 19 How Entergy is Mitigating Legacy Windows Operating System Vulnerabili...
Docker, Inc.
 
DCSF 19 Developing Apps with Containers, Functions and Cloud Services
DCSF 19 Developing Apps with Containers, Functions and Cloud ServicesDCSF 19 Developing Apps with Containers, Functions and Cloud Services
DCSF 19 Developing Apps with Containers, Functions and Cloud Services
Docker, Inc.
 
DCSF 19 eBPF Superpowers
DCSF 19 eBPF SuperpowersDCSF 19 eBPF Superpowers
DCSF 19 eBPF Superpowers
Docker, Inc.
 
Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
Docker, Inc.
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
Docker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
Docker, Inc.
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
Docker, Inc.
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
Docker, Inc.
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
Docker, Inc.
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
Docker, Inc.
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
Docker, Inc.
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
Docker, Inc.
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
Docker, Inc.
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
Docker, Inc.
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
Docker, Inc.
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Docker, Inc.
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Docker, Inc.
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
Docker, Inc.
 
Sharing is Caring: How to Begin Speaking at Conferences
Sharing is Caring: How to Begin Speaking at ConferencesSharing is Caring: How to Begin Speaking at Conferences
Sharing is Caring: How to Begin Speaking at Conferences
Docker, Inc.
 
Virtual Meetup Docker + Arm: Building Multi-arch Apps with Buildx
Virtual Meetup Docker + Arm: Building Multi-arch Apps with BuildxVirtual Meetup Docker + Arm: Building Multi-arch Apps with Buildx
Virtual Meetup Docker + Arm: Building Multi-arch Apps with Buildx
Docker, Inc.
 
DCSF 19 How Entergy is Mitigating Legacy Windows Operating System Vulnerabili...
DCSF 19 How Entergy is Mitigating Legacy Windows Operating System Vulnerabili...DCSF 19 How Entergy is Mitigating Legacy Windows Operating System Vulnerabili...
DCSF 19 How Entergy is Mitigating Legacy Windows Operating System Vulnerabili...
Docker, Inc.
 
DCSF 19 Developing Apps with Containers, Functions and Cloud Services
DCSF 19 Developing Apps with Containers, Functions and Cloud ServicesDCSF 19 Developing Apps with Containers, Functions and Cloud Services
DCSF 19 Developing Apps with Containers, Functions and Cloud Services
Docker, Inc.
 
DCSF 19 eBPF Superpowers
DCSF 19 eBPF SuperpowersDCSF 19 eBPF Superpowers
DCSF 19 eBPF Superpowers
Docker, Inc.
 
Ad

Recently uploaded (20)

Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Buckeye Dreamin 2024: Assessing and Resolving Technical Debt
Buckeye Dreamin 2024: Assessing and Resolving Technical DebtBuckeye Dreamin 2024: Assessing and Resolving Technical Debt
Buckeye Dreamin 2024: Assessing and Resolving Technical Debt
Lynda Kane
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
Lynda Kane
 
Hands On: Create a Lightning Aura Component with force:RecordData
Hands On: Create a Lightning Aura Component with force:RecordDataHands On: Create a Lightning Aura Component with force:RecordData
Hands On: Create a Lightning Aura Component with force:RecordData
Lynda Kane
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Automation Dreamin': Capture User Feedback From Anywhere
Automation Dreamin': Capture User Feedback From AnywhereAutomation Dreamin': Capture User Feedback From Anywhere
Automation Dreamin': Capture User Feedback From Anywhere
Lynda Kane
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Asthma presentación en inglés abril 2025 pdf
Asthma presentación en inglés abril 2025 pdfAsthma presentación en inglés abril 2025 pdf
Asthma presentación en inglés abril 2025 pdf
VanessaRaudez
 
Buckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug LogsBuckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug Logs
Lynda Kane
 
"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko
Fwdays
 
Automation Hour 1/28/2022: Capture User Feedback from Anywhere
Automation Hour 1/28/2022: Capture User Feedback from AnywhereAutomation Hour 1/28/2022: Capture User Feedback from Anywhere
Automation Hour 1/28/2022: Capture User Feedback from Anywhere
Lynda Kane
 
Learn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step GuideLearn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step Guide
Marcel David
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Salesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docxSalesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docx
José Enrique López Rivera
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Buckeye Dreamin 2024: Assessing and Resolving Technical Debt
Buckeye Dreamin 2024: Assessing and Resolving Technical DebtBuckeye Dreamin 2024: Assessing and Resolving Technical Debt
Buckeye Dreamin 2024: Assessing and Resolving Technical Debt
Lynda Kane
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
#AdminHour presents: Hour of Code2018 slide deck from 12/6/2018
Lynda Kane
 
Hands On: Create a Lightning Aura Component with force:RecordData
Hands On: Create a Lightning Aura Component with force:RecordDataHands On: Create a Lightning Aura Component with force:RecordData
Hands On: Create a Lightning Aura Component with force:RecordData
Lynda Kane
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Automation Dreamin': Capture User Feedback From Anywhere
Automation Dreamin': Capture User Feedback From AnywhereAutomation Dreamin': Capture User Feedback From Anywhere
Automation Dreamin': Capture User Feedback From Anywhere
Lynda Kane
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Asthma presentación en inglés abril 2025 pdf
Asthma presentación en inglés abril 2025 pdfAsthma presentación en inglés abril 2025 pdf
Asthma presentación en inglés abril 2025 pdf
VanessaRaudez
 
Buckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug LogsBuckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug Logs
Lynda Kane
 
"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko
Fwdays
 
Automation Hour 1/28/2022: Capture User Feedback from Anywhere
Automation Hour 1/28/2022: Capture User Feedback from AnywhereAutomation Hour 1/28/2022: Capture User Feedback from Anywhere
Automation Hour 1/28/2022: Capture User Feedback from Anywhere
Lynda Kane
 
Learn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step GuideLearn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step Guide
Marcel David
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Salesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docxSalesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docx
José Enrique López Rivera
 

Predicting Space Weather with Docker

  • 1. Predicting Space Weather with Docker Chris Lauer, Senior Application Software Developer, NOAA Space Weather Prediction Center
  • 2. ● Embedded in several levels of agency Bureaucracy: Commerce, NOAA, NWS, NCEP, SWPC ● Different subject area, not in common with parent agencies. Have our own software section. ● FISMA high security system. “No cloud!” they said. ● Cool Mission The Space Weather Prediction Center
  • 4. 1. Trained our developers in scrum 2. Taught us how to build consensus 3. Started sprinting - for 8 years 4. Customer Collaboration over Contract Negotiation We saw big improvements in morale and capability. It was time to improve delivery! First: Agile We started our move to Agile in 2012
  • 5. Giant single MS SQL product database for all data Views and stored procedures reaching across schemas to combine disparate data sources into something “tidy”. Lots of business logic in the database. No Service layer Vast majority of applications hit the database directly. Deep coupling was killing our agility. The Architectural Challenge How do you get started with CI with this?
  • 6. 1. Took some Jenkins/CI training, with Docker! 2. Labeled the old way: shared database integration 3. Read up on a new way: Building Microservices 4. Found a small, high value project (Verification) 5. One team into two: database & microservices teams 6. Developed Verification Service with new rules Part 1: Seeking out a new way How we got started
  • 7. Scientific Software Issues Scientific Software often has delicate, conflicting, and weird dependencies. It might also not have much configurability. Docker captures and isolates these dependencies beautifully. Easing Deployments We want to go faster! If it works on Dev, it should work on Staging, and it should work on Production. Docker can guarantee this if we solve configuration and data persistence for each project. Why Docker?
  • 8. New Rules Only one thing talks to a database. No more deep coupling. Only a service can talk to a database. Automated end-to- end testing. Jenkins can stand up all components and dependencies, drop test data in ingest, query the results. Microservices. A collection of loosely coupled, highly cohesive services that each solve part of the problem.
  • 9. New Rules (Continued) Event driven. Low latency. Use asynchronous messaging for loose coupling. New stuff! NoSQL (MongoDB) for a developer friendly database. Python Flask for RESTful gets/posts. RabbitMQ for messaging. Docker containers for everything. 12factor.net practices. The new default. Especially “store configuration in the environment” and “log to standard out”.
  • 10. Developers were happy. So exciting to be learning contemporary technologies. Pace of learning was rapid! Iterative changes were much easier. It was faster to learn the new stuff than to deliver in the old system. Customer was happy. Customer was thrilled with the capabilities we built, and how quickly they were delivered. How did it go? Amazing.
  • 11. The microservices team got way out ahead of the organization very quickly. We found we’d made a few mistakes. (Learning time!) We started hitting some new obstacles. E.g. Containers wouldn’t build on the secure environment. But... And there’s always a but...
  • 12. Don’t give anything Docker Daemon access. We started monitoring our services with nagios, via the docker daemon. Pen testers were able to compromise nagios and elevate their permissions. Instead: monitor a RESTful endpoint of your service. And if you do give that access, lock it down! We were a little loose on security when we initially set up Jenkins (before we knew what it was for), which was another easy target for pen-testers. Some small lessons from our early security mistakes
  • 13. Minor security missteps aside, initial adoption went great! Let’s keep learning this Docker stuff! Part 2: Replacing a Critical Data Source
  • 14. Part 2: GOES-16 Initial adoption went well! Let’s do it again for real, with a critical component of our operational infrastructure: GOES satellite data
  • 15. GOES drives two out of three of our NOAA Scales X-rays and Particle data impact communications, satellites, and high altitude radiation exposure. This has to be low latency and reliable. Adventures in legacy land Many of our critical applications had dependencies on GOES data (from the database directly). Challenge: Replacing Legacy And getting better at this Docker stuff!
  • 16. 1. Build a service (in a Docker, end to end testing, etc.) 2. That service needs to understand and solve: a. The nature of the data b. The way other applications use the data 3. Add the old data to service (GOES-14 and GOES-15) 4. Port legacy applications to pull from the service 5. Add the new data (GOES-16) to the service. Go live! Replacing the Old Way Using Docker in our Strangler Pattern
  • 17. ● GOES Service: takes posts from ingest, gets (queries) from applications. ● LDM: Unidata software for getting raw data. ● GOES-R ingest: process data from the LDM, post to Service. ● GOES-NOP ingest: process data from the legacy PP, post to Service. ● High-cadence ingest: process 1-second, 2-second data, post to Service. ● Fluence/Background: generate daily indices, post to Service. ● Plotting: Host line plotting UI for forecasters. ● MongoDB: backing store for Service. ● RabbitMQ: loose coupling between ingests, LDM, Legacy PP. ● Imagery ingest: process solar imagery from LDM. ● Imagery: imagery displays for forecasters. GOES: Docker Containers
  • 18. ● docker-compose.yml: defines relationship between the services, and to the host. ● .env: isolate host differences ● service-name.env: one config for each service ● Docker image(s): hosted on our internal registry (Harbor) Four Deployment Artifacts The new way starts to solidify
  • 19. docker-compose.yml CODE EDITOR version: '2.1' services: goesr-ingest: image: harbor.swpc.noaa.gov/goes/goes-microservices_goesr-ingest:latest build: goes_ingest volumes: # define NETCDF_IN in the .env file, which may be hidden by your os - ${NETCDF_IN}:/goes_netcdf_dir env_file: - goes_ingest.env restart: unless-stopped
  • 20. .env: different on each host CODE EDITOR # This file should be modified and saved as '.env' in the same # directory as docker-compose.yml. It will be hidden, but # Docker Compose will source these variables when it runs NETCDF_IN=/data/goesr/ldm QUALITY_ROUTER_PERSISTANCE=/home/goes_nop/
  • 22. Docker Images from Registry From our local harbor (deployed with docker- compose). http://goharbor.io
  • 23. 1. Make an account on the target host 2. Setup docker-compose.yml, .env, and service*.env 3. Add a robot account in harbor. Docker login to the SWPC registry with that account. 4. docker-compose pull 5. docker-compose up -d; docker-compose logs -f Deployment Steps Simple instructions for deploying anything
  • 24. How did it GOES? Amazing.
  • 25. How did it GOES? Amazing.
  • 26. Our biggest mistake Where we really got it wrong. We didn’t build CI into our deployments. Or monitor it. Turned out we weren’t very good at writing tests yet, so they were broken more often than the code. Developers learned to ignore failed builds. A missed opportunity to meet the CI goals of this new architecture.
  • 27. ● Easy to get services running locally in a dev VM! ● Easy to know it will work in staging/production! ● Easy to work on just the part that needs a fix: Can stand up the whole stack, or just one component! ● Easier collaboration between component devs! ● Dependencies are well documented in code! ● Data persistence is very intentional! This Docker stuff is great! Let’s do it for everything!
  • 28. ICAO: Short-fuse Expansion of Mission Within a few months, we needed to be running science code in production to forecast space weather aviation impacts (GPS, communication, and radiation). We had models in varying states of not ready A mix of FORTRAN from the punch card era, IDL, perl, python, shell, and a model we’d always been told was never going to production. Hardcoded paths, messy logging, and hidden dataflow. Part 3: Science Collaboration Collaborating with scientists, in Docker!
  • 29. Let’s Teach Docker I gave a presentation to the scientists: Docker, Containers, and Continuous Integration. We tried three different ways of bringing these models to production in containers, using Docker and Docker Compose. Credit: Randall Munroe, xkcd.com
  • 30. CTIPe: Max Usable Frequency
  • 32. CARI7: High Altitude Radiation
  • 34. Benefits We’re going faster! 1 Month To onboard new devs Used to be ~ 1 year 5 Minutes To deploy to production Used to be an hour, with luck 1 Minute To rollback a deployment And another 5 to try again! 1 Hour To stand up a local dev environment Used to be about a week
  • 35. Tamara Bledsoe Ratina Dodani Marcus England Kelvin Fedrick Kiley Gray Michael Husler Chris Lauer Ben Rowells David Stone