Ship It or It Never Happened
😰
🤮
🤬
😱
😎
DOGUHAN ULUCA




Shipping Code
Value Stream
Config. Gap
Repeat Intg.
n ➡️ n Deploys

Shipping Code
practice
🙏
❌
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝
📝



value
value
quality
Features
Time
Quality
Roy Osherove
Lean
Kanban
Scrum
LeSS
SAFe
SoS
Nexus
Spotify
, forward flow
consistent
of features
"It's not up to them
it's up to us [the developers]"
Ron Jeffries, Chet Hendrickson, deliver:Agile 2018.


repeatable value stream













-
know when and how to say no
-
create a repeatable value stream
Value Stream
GitHub Flow

Branch

Commit

Open Pull Request

Discuss and Review

Deploy

Merge
-
enforce standards
-
isolate changes
-
make it repeatable
💰
🔥
The Configuration Gap

Branch
Merge

Branch
Merge
Ship
The Configuration Gap
Dockerfile
Anatomy of a Dockerfile
FROM
SETUP
COPY
CMD
Anatomy of a Dockerfile
FROM
Dockerfile Inheritance
FROM
FROM
FROM
scratch
Anatomy of a Dockerfile
FROM
SETUP
Security
Dependencies
Docker Security
Host OS
Docker
Runtime
Container
Web Server
App

Anatomy of a Dockerfile
FROM
SETUP
COPY
Security
Dependencies
Copying Code
Host OS
Docker
Runtime
Docker Image
Web Server
App Code
Copying Code
Host OS
Docker
Runtime
minimal-node-web-server
Express.js
Angular
/dist
/usr/src/app
Anatomy of a Dockerfile
FROM
SETUP
COPY
CMD
Security
Dependencies
Anatomy of a Dockerfile
FROM
SETUP
COPY
CMD
Security
Dependencies
npm Scripts for Docker
bit.ly/npmScriptsForDocker
-
Create living documentation
-
Achieve DevOps
-
Close the configuration gap
Repeatable Integration



.circleci/config.yml
.circleci/config.yml
FROM
jobs
build
deploy
.circleci/config.yml
FROM
build
env
steps
Docker
checkout
run
store build artifacts
store test results
Multi-Stage Dockerfile
FROM
FROM
FROM
as builder
as tester
COPY
from builder
CMD
copy end result
duluca/lemon-mart
FROM
FROM
FROM
as builder
as tester
COPY
from builder
CMD
minimal-node-build-env
alpine-node-chromium
minimal-nginx-web-server
50+ Mb
200+ Mb
7 Mb
Execution
docker build -f Dockerfile.integration . -t lemon-mart
github.com/duluca/lemon-mart
-
Use declarative tools
-
Achieve Infrastructure-as-Code
-
Repeatable Integration
n ➡️ n Deployments
Local build
CI-x build
...


.circleci/config.yml
FROM
jobs
build
deploy
.circleci/config.yml
FROM
deploy
restore
steps
Build artifact
Sign in to container repo
Publish to repo
Trigger deployment
npm Script for AWS
bit.ly/npmScriptsForAWS
npm run aws:fargate-release
heroku container:push web -a lemon-mart
now --docker --public

-
Use declarative tools
-
Achieve Infrastructure-as-Code
-
Repeatable deployments
-
n ➡️ n Flexibility










Shipping Code
Value Stream
Config. Gap
Repeat Intg.
n ➡️ n Deploys

⛴ 👈 or 👉 😣 🤷

AngularForEnterprise.com
for discount codes visit