SlideShare a Scribd company logo
IMPROVING VELOCITY
THROUGH ABSTRACTION
A PRIMER ON CONTAINERIZATION,
VIRTUALIZATION, AND THE CLOUD
ALL ABOARD THE HYPE TRAIN
NON-STOP TO THE SCRAPYARD
HARD TO MAKE INFORMED TECH DECISIONS
▸ Hype - NetFlix is doing it!
▸ Fast Pace of Technology - React or Angular?
▸ Biases - Shiny Object Syndrome
▸ Self-Interest - Lack of Skin-in-the-Game
▸ LOSE TRACK OF WHAT’S IMPORTANT ….
SHOW ME THE MONEY VALUE
BUSINESS VALUE
What your customers want!
VELOCITY
Business Value over Time
Do modern day opportunities
still exist to improve Velocity ?
…and at Force-Multiplier levels!!
YES!!!
PACMAN
1980 2005
Assembly Java
1 Developer* 1 Developer
1 Year Dev 2 Day Dev
2 Month Dev
20x Improvement!!
787 DREAMLINER
2009
32 Billion Dollar Project
Cutting-Edge Technology
0.15x Improvement!!
95%
5% Business Value
?
?
?
?
?
DEVELOPER PRODUCTIVITY
ASSEMBLY CODE
ld hl,#36a5
rst #18
ld e,(hl)
inc hl
ld d,(hl)
ld ix,#4400
add ix,de
push ix
ld de,#fc00
add ix,de
ld de,#ffff
bit 7,(hl)
jr nz,#2c7c
ld de,#ffe0
inc hl
ld a,b
ld bc,#0000
add a,a
jr c,#2cac
ld a,(hl)
cp #2f
jr z,#2c92
ld (ix+#00),a
inc hl
add ix,de
inc b
jr #2c84
inc hl
pop ix
ld a,(hl)
and a
jp m,#2ca4
ld a,(hl)
ld (ix+#00),a
inc hl
add ix,de
djnz #2c9a
ret
; (hl+2*b) -> hl
; Start of Color RAM
; Calculate starting pos in CRAM
; 4400 + (hl) -> stack
; Calculate starting pos in VRAM
; Offset for normal text
; (3)
; Offset for top + bottom 2 lines
; b -> a
; 0 -> b,c
; 2*a -> a
; Special Draw routine for entries 80+
; Read next char
; #2f = end of text
; Done with VRAM
; Write char to screen
; Next char
; Calc next VRAM pos
; Inc char count
; loop
; Get CRAM start pos
; Get color
; Jump if > #80
; Get color
; Drop in CRAM
; Next color
; Calc next CRAM pos
; Loop until b=0
JAVA CODE
Font smallfont = new Font("Helvetica", Font.BOLD, 14);
graphics.setFont(smallfont);
graphics.setColor(Color.BLUE);
graphics.drawString("'S' to start game", 120, 100);
“NO MATTER THE PROGRAMMING
LANGUAGE CHOSEN,
A PROFESSIONAL DEVELOPER WILL
WRITE IN AVERAGE 10 LINES OF CODE
(LOC) DAY. “
FRED BROOKS (MYTHICAL MAN MONTH)
JAVA
ASSEMBLY
C/C++
VELOCITYKOTLIN ABSTRACTION
Performance is no longer a driving factor !!
“THE BEST CODE IS NO CODE AT ALL“
JEFF ATWOOD
CODING HORROR / STACKOVERLOW
DEVELOPER PRODUCTIVITY
HIGHER
Business Value
Registers
Memory Management
Performance Focus
Verboseness
Null Checking
DIY
Chipset specific code
Gotos
Here is my business logic;
run it on a chip for me;
I don’t care how.
So, how do we further
improve Velocity ?
OPPORTUNITIES
▸ Diminishing Returns with Programming
Languages
▸ Development Eco-system / Frameworks /
Practices
▸Infrastructure
Here is my app;
run it for me;
I don’t care how.
DEVELOPER FOCUS
Here are my servers;
Set them up and maintain them
for me;
I don’t care how.
OPS FOCUS
95%
5% Value
?
?
?
?
?
DEVELOPER PRODUCTIVITY
+ OPS EFFICIENCY
PAAS
BARE-METAL
IAAS
VELOCITYABSTRACTION
CAAS / IAAS+
BARE METAL / ON-PREM
OS+APP
HARDWARE
OS+APP
HARDWARE
OS+APP
HARDWARE
Long lead time !
VM
VIRTUAL MACHINES (VM’S)
OS+APP
HOST OS
HARDWARE
VM
OS+APP
VM
OS+APP
CLOUD
▸ API to some shared pool of resources
▸ Typically: Rapid, On-Demand, Elastic, and
Self-Serve
▸ Public, Private, or Hybrid
INFRASTRUCTURE AS A SERVICE (IAAS)
▸ OpenStack, vSphere, AWS, etc
▸ API for virtualized infrastructure
▸ Compute / Network / Storage
▸ Including “Infrastructure Orchestration”
▸ Auto-Healing, Bin-Packing, Scaling, etc
ON-PREM IAAS
OS
HARDWARE
MIDDLEWARE
APPLICATION
VIRTUALIZATION
OS
HARDWARE
MIDDLEWARE
APPLICATION
VIRTUALIZATION
YOU MANAGE
OTHERS MANAGE
Note .. you’re still on the hook for the OS!
Clear separation of concerns …
VM VM
CONTAINERS
OS
HOST OS
OS
APP + BIN
OS
APP + BIN
HARDWARE
CONTAINER ENGINE
CONTAINERCONTAINER
REALLY BIG!
WHO MANAGES IT ?
CONTAINERS
▸ Lightweight, stand-alone, portable, executable package of
software to run specific services
▸ Runs as an isolated process, but on a SHARED Operating
System
▸ Allows for more efficient resource consumption
▸ History back to 1979 (chroot) and 2000 (FreeBSD Jails)
▸ Numerous different Containers exist …
▸ Often sharing the same underlying tech - runc / containerd
DOCKER
▸ Docker the Company
▸ Docker the Containerization Technology
▸ Packaging, Deploying, and Running Docker Images
▸ Popularized container technologies ~2013
▸ First big win was local containers on developer machines
▸ CTO / Founder Solomon Hykes departure - March/28/18
▸ Not the ONLY nor the FIRST container technology ..
▸ Ex-passenger on the Hype Train ?
ON-PREM IAAS
OS
HARDWARE
MIDDLEWARE
APPLICATION
VIRTUALIZATION
OS
HARDWARE
MIDDLEWARE
APPLICATION
VIRTUALIZATION
YOU MANAGE
OTHERS MANAGE
CAAS
CONTAINER AS A SERVICE
OS
HARDWARE
CONTAINER
MIDDLEWARE
VIRTUALIZATION
APPLICATION
No longer responsible for OS! (better for security)
CONTAINER AS A SERVICE (CAAS/IAAS+)
▸ Kubernetes, Docker Swarm, Apache Mesos, etc
▸ API at Container level
▸ OS abstraction
▸ Including “Container Orchestration”
▸ Auto-Healing, Bin-Packing, Scaling, etc
KUBERNETES (K8S)
▸ Open-Source Docker-based Container Orchestration / CaaS /
IaaS+ by Google
▸ Used to deployed BILLIONS of containers per month on
Google’s infrastructure
▸ Adds concept of Pods - groupings of containers
▸ Popularized Container Orchestration ~2015
▸ Not the ONLY nor the FIRST container orchestration tool..
▸ Full steam ahead for the Hype Train !!
KUBERNETES PHILOSOPHY
Here’s my code;
I’ll tell you EXACTLY how you
should run it for me;
and don’t you dare make any
assumptions on the deployment
WITHOUT my written consent!
DEPLOYING TO KUBERNETES
▸ Define Docker File
▸ Define Deployment, Pod, Networking, and
Services
▸ Publish to Registry
▸ Deploy
▸ kubectl run my-app
WORK REQUIRED
▸ Configuration Management
▸ Binary Management
▸ Memory Management
▸ JVM* and older Linux tools (free / top) will look at the OS host
OVERALL memory / CPU counts instead of container ones !!
▸ “Why you’re going to FAIL running Java on Docker” - Redhat
Workshop
Here is my app;
run it for me;
I don’t care how.
CONTAINER / VM
PLATFORMS?
BINARIES /
DEPENDENCIES
APPLICATION
BUILDPACK
ON-PREM IAAS
OS
HARDWARE
MIDDLEWARE
APPLICATION
VIRTUALIZATION
OS
HARDWARE
MIDDLEWARE
APPLICATION
VIRTUALIZATION
YOU
MANAGE
OTHERS
MANAGE
CAAS
OS
HARDWARE
CONTAINER / POD
MIDDLEWARE
VIRTUALIZATION
APPLICATION
PAAS
OS
HARDWARE
CONTAINER
MIDDLEWARE
VIRTUALIZATION
APPLICATION
Dev Focus is now on Application Development
PLATFORM AS A SERVICE (PAAS)
▸ AWS Beanstalk / PCF / Heroku / ETC
▸ Popularized by Heroku ~2009
▸ API at Application Level
▸ VM or Container hosted!
▸ Including “Application Orchestration”
▸ Auto-Healing, Bin-Packing, Scaling, etc
PIVOTAL CLOUD FOUNDRY (PCF)
▸ Container-based Open-Source PaaS by Pivotal
▸ MultiCloud (Public / Private or Hybrid)
▸ Modern Cloud-Native / 12 Factor Apps
▸ Deployments: Java, .NET Native, NodeJS, Docker, Go, etc
▸ Also includes:
▸ PKS - Pivotal Container Service (Kubernetes)
▸ PFS - Pivotal Function Service
DEPLOYING TO PCF
▸ Deploy
▸ cf push my-app
HIGHER
Business Value
Manual Scaling
Container Management
Orchestration
Verboseness
Manual Updates / Reboots
DIY
DEVELOPER PRODUCTIVITY
+ OPS EFFICIENCY
ABSTRACTION
PAAS
BARE-METAL
IAAS
CAAS / IAAS+
To maximize BUSINESS VALUE..
.. work at the highest
abstraction level possible.
THE POINT
For the MAJORITY (>99%) of GreenField
business apps, default to:
Java for programming language*.
PaaS for infrastructure*.
*or higher
Economics have shifted where general
focus should be:
Developer productivity over performance
and flexibility.
QUESTIONS TO ASK ..
(WHEN OPTIMIZING, NEEDING A LOWER ABSTRACTION LEVEL)
▸ What is your bottleneck ?
▸ Hardware is cheap! Developers are expensive!
▸ You’re not Google / NetFlix !
▸ Profile!
▸ Are you re-inventing the wheel ?
▸ Compare to off-the-shelve solutions
▸ Have you weighted the costs ?
▸ Not a free lunch !!
▸ Understand that you’re trading off productivity
MICROSERVICES
▸ Independently deployable, small, modular
services instead of larger Monolith style apps
▸ Not really a new concept !
▸ Service Oriented Architecture (SOA) has been
around for much longer!
▸ Passenger on the Hype Train since ~2014!
Do MicroServices increase Velocity ?
IT DEPENDS!!!
and they can often
NEGATIVELY affect it!!
NOT A SILVER BULLET !
▸ Net Complexity Booster!! / Not an Abstraction !
▸ Debugging costs
▸ Refactoring costs
▸ Multiple SCM Management
▸ Deployment CI/CD costs
▸ API Versioning
▸ Retry Logic
▸ Performance Hit (Networks are slower!!)
▸ Transactions
“DON'T LEAP INTO MICROSERVICES
JUST BECAUSE IT SOUNDS COOL.
SEGREGATE THE SYSTEM INTO JARS
USING A PLUGIN ARCHITECTURE
FIRST.
IF THAT'S NOT SUFFICIENT, THEN
CONSIDER INTRODUCING SERVICE
BOUNDARIES AT STRATEGIC POINTS.”
UNCLE BOB (ROBERT C MARTIN)
“I'M WARY OF DISTRIBUTION AND MY
DEFAULT INCLINATION IS TO PREFER A
MONOLITHIC DESIGN.”
MARTIN FOWLER
“IF YOU CAN’T BUILD A WELL-
STRUCTURED MONOLITH,
WHAT MAKES YOU THINK YOU CAN BUILD
A WELL-STRUCTURED SET OF
MICROSERVICES?”
SIMON BROWN
CODING THE ARCHITECTURE
RECOMMENDATIONS
▸ Monoliths are NOT a bad thing !!
▸ MicroServices are NOT a replacement / but an alternative!
▸ Ensure proper DevOps first
▸ For Performance:
▸ Tech Giant Fallacy - You’re not NetFlix!
▸ Profile !! What is your Bottleneck ?
▸ Consider “Cookie Cutter” scaling !
▸CONSIDER AND UNDERSTAND THE COSTS!!
▸WEIGHT THE PROS AND CONS!!
THE SWEET SPOT (DEFAULT)
Monolith
1 ∞
Number of MicroServices
Per FunctionPer Agile Team
Super
?
THE QUESTION THAT YOU
SHOULD ALWAYS BE ASKING ..
IS THIS ADDING BUSINESS VALUE?
“IN DEFERENCE TO THE GODS OF
YAGNI,
WHEN IN DOUBT ERR ON THE SIDE OF
SIMPLICITY. ”
MARTIN FOWLER
Victor Szoltysek
Platform Architect @ Pivotal
vszoltysek@pivotal.io

More Related Content

PPTX
AWS Summit London 2019 - Containers on AWS
PDF
A Cloud Native Platform - Cloud Native Day Santa Monica
PDF
Success Factors for a Mature Microservices Implementation
PPT
All Change! How the new economics of Cloud will make you think differently ab...
PPT
All Change how the economics of Cloud will make you think differently about Java
PPTX
JavaOne 2015 Devops and the Darkside CON6447
PDF
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
PDF
Sustainable Agile Development
AWS Summit London 2019 - Containers on AWS
A Cloud Native Platform - Cloud Native Day Santa Monica
Success Factors for a Mature Microservices Implementation
All Change! How the new economics of Cloud will make you think differently ab...
All Change how the economics of Cloud will make you think differently about Java
JavaOne 2015 Devops and the Darkside CON6447
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Sustainable Agile Development

Similar to Improving velocity through abstraction (20)

PPT
The Economies of Scaling Software
PPT
Cloud Economics
PPT
The economies of scaling software - Abdel Remani
PPTX
Docker & aPaaS: Enterprise Innovation and Trends for 2015
PPTX
Docker-N-Beyond
PDF
"Portrait of the developer as The Artist" Lockheed Architect Workshop
PPTX
The end of server management : hosting have to become a commodity - #devoxxPL...
PPTX
JavaOne 2016 "Java, Microservices, Cloud and Containers"
PPTX
Architecture evolution
PDF
Introduction to DevOps
PDF
Serverless Spring - Nate Schutta 1/2
PPT
All change! How the new Economics of Cloud will make you think differently ab...
PDF
Docker Enables DevOps - Boston
PDF
Rethink your infrastructure to rebuild your code
PDF
A complete Open Source cloud: Storage, Virt, IaaS, PaaS
PDF
Docker Enables DevOps - Keep C.A.L.M.S. and Docker on ...
PDF
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015
PPT
UnConference for Georgia Southern Computer Science March 31, 2015
PDF
Scaling a Serverless Developer Platform for Teams
PDF
Mini-course "Practices of the Web Giants" at Global Code - São Paulo
The Economies of Scaling Software
Cloud Economics
The economies of scaling software - Abdel Remani
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker-N-Beyond
"Portrait of the developer as The Artist" Lockheed Architect Workshop
The end of server management : hosting have to become a commodity - #devoxxPL...
JavaOne 2016 "Java, Microservices, Cloud and Containers"
Architecture evolution
Introduction to DevOps
Serverless Spring - Nate Schutta 1/2
All change! How the new Economics of Cloud will make you think differently ab...
Docker Enables DevOps - Boston
Rethink your infrastructure to rebuild your code
A complete Open Source cloud: Storage, Virt, IaaS, PaaS
Docker Enables DevOps - Keep C.A.L.M.S. and Docker on ...
Deploying to Production 50+ Times a Day - Calgary Agile Users Group 2015
UnConference for Georgia Southern Computer Science March 31, 2015
Scaling a Serverless Developer Platform for Teams
Mini-course "Practices of the Web Giants" at Global Code - São Paulo
Ad

More from VictorSzoltysek (20)

PDF
Cloud for Grownups - 🛑 No Kubernetes, 🌀 No Complexity, ✅ Just AWS-Powered Res...
PDF
The Gold Jacket Journey - How I passed 12 AWS Certs without Burning Out (and ...
PDF
Java on AWS Without the Headaches - Fast Builds, Cheap Deploys, No Kubernetes
PDF
Demystifying GitHub Actions - Harnessing the power of automation to streamlin...
PDF
ChatGPT and Beyond - Elevating DevOps Productivity
PDF
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
PDF
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
PDF
Simplified DevOps Bliss -with OpenAI API
PDF
From SpaceX Launch Pads to Rapid Deployments
PDF
The Future of JVM Languages
PDF
Driving Process Improvements - A Guided Approach to Running Effective Retrosp...
PDF
Spaceships, Pull Requests and Feature Branching - A Principles-Based approac...
PDF
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
PDF
Real-World Application Observability - 11 Practical Developer Focused Tips
PDF
Victor's Awesome Retro Deck
PDF
Software Development in Internet Memes
PDF
Big Bangs, Monorails and Microservices - Feb 2020
PDF
Making your RDBMS fast!
PDF
SQL Tips + Tricks for Developers
PDF
Less is more the 7 wastes of lean software development
Cloud for Grownups - 🛑 No Kubernetes, 🌀 No Complexity, ✅ Just AWS-Powered Res...
The Gold Jacket Journey - How I passed 12 AWS Certs without Burning Out (and ...
Java on AWS Without the Headaches - Fast Builds, Cheap Deploys, No Kubernetes
Demystifying GitHub Actions - Harnessing the power of automation to streamlin...
ChatGPT and Beyond - Elevating DevOps Productivity
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Simplified DevOps Bliss -with OpenAI API
From SpaceX Launch Pads to Rapid Deployments
The Future of JVM Languages
Driving Process Improvements - A Guided Approach to Running Effective Retrosp...
Spaceships, Pull Requests and Feature Branching - A Principles-Based approac...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World Application Observability - 11 Practical Developer Focused Tips
Victor's Awesome Retro Deck
Software Development in Internet Memes
Big Bangs, Monorails and Microservices - Feb 2020
Making your RDBMS fast!
SQL Tips + Tricks for Developers
Less is more the 7 wastes of lean software development
Ad

Recently uploaded (20)

PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
Introduction to Artificial Intelligence
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
AI in Product Development-omnex systems
PPTX
Transform Your Business with a Software ERP System
PPTX
ai tools demonstartion for schools and inter college
PDF
Digital Strategies for Manufacturing Companies
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
medical staffing services at VALiNTRY
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
VVF-Customer-Presentation2025-Ver1.9.pptx
PTS Company Brochure 2025 (1).pdf.......
Operating system designcfffgfgggggggvggggggggg
Wondershare Filmora 15 Crack With Activation Key [2025
Navsoft: AI-Powered Business Solutions & Custom Software Development
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Odoo Companies in India – Driving Business Transformation.pdf
Introduction to Artificial Intelligence
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
AI in Product Development-omnex systems
Transform Your Business with a Software ERP System
ai tools demonstartion for schools and inter college
Digital Strategies for Manufacturing Companies
ManageIQ - Sprint 268 Review - Slide Deck
Upgrade and Innovation Strategies for SAP ERP Customers
medical staffing services at VALiNTRY
Design an Analysis of Algorithms I-SECS-1021-03
How Creative Agencies Leverage Project Management Software.pdf
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)

Improving velocity through abstraction

  • 1. IMPROVING VELOCITY THROUGH ABSTRACTION A PRIMER ON CONTAINERIZATION, VIRTUALIZATION, AND THE CLOUD
  • 2. ALL ABOARD THE HYPE TRAIN NON-STOP TO THE SCRAPYARD
  • 3. HARD TO MAKE INFORMED TECH DECISIONS ▸ Hype - NetFlix is doing it! ▸ Fast Pace of Technology - React or Angular? ▸ Biases - Shiny Object Syndrome ▸ Self-Interest - Lack of Skin-in-the-Game ▸ LOSE TRACK OF WHAT’S IMPORTANT ….
  • 4. SHOW ME THE MONEY VALUE
  • 5. BUSINESS VALUE What your customers want! VELOCITY Business Value over Time
  • 6. Do modern day opportunities still exist to improve Velocity ? …and at Force-Multiplier levels!! YES!!!
  • 8. 1980 2005 Assembly Java 1 Developer* 1 Developer 1 Year Dev 2 Day Dev 2 Month Dev 20x Improvement!!
  • 10. 2009 32 Billion Dollar Project Cutting-Edge Technology 0.15x Improvement!!
  • 12. ASSEMBLY CODE ld hl,#36a5 rst #18 ld e,(hl) inc hl ld d,(hl) ld ix,#4400 add ix,de push ix ld de,#fc00 add ix,de ld de,#ffff bit 7,(hl) jr nz,#2c7c ld de,#ffe0 inc hl ld a,b ld bc,#0000 add a,a jr c,#2cac ld a,(hl) cp #2f jr z,#2c92 ld (ix+#00),a inc hl add ix,de inc b jr #2c84 inc hl pop ix ld a,(hl) and a jp m,#2ca4 ld a,(hl) ld (ix+#00),a inc hl add ix,de djnz #2c9a ret ; (hl+2*b) -> hl ; Start of Color RAM ; Calculate starting pos in CRAM ; 4400 + (hl) -> stack ; Calculate starting pos in VRAM ; Offset for normal text ; (3) ; Offset for top + bottom 2 lines ; b -> a ; 0 -> b,c ; 2*a -> a ; Special Draw routine for entries 80+ ; Read next char ; #2f = end of text ; Done with VRAM ; Write char to screen ; Next char ; Calc next VRAM pos ; Inc char count ; loop ; Get CRAM start pos ; Get color ; Jump if > #80 ; Get color ; Drop in CRAM ; Next color ; Calc next CRAM pos ; Loop until b=0
  • 13. JAVA CODE Font smallfont = new Font("Helvetica", Font.BOLD, 14); graphics.setFont(smallfont); graphics.setColor(Color.BLUE); graphics.drawString("'S' to start game", 120, 100);
  • 14. “NO MATTER THE PROGRAMMING LANGUAGE CHOSEN, A PROFESSIONAL DEVELOPER WILL WRITE IN AVERAGE 10 LINES OF CODE (LOC) DAY. “ FRED BROOKS (MYTHICAL MAN MONTH)
  • 16. “THE BEST CODE IS NO CODE AT ALL“ JEFF ATWOOD CODING HORROR / STACKOVERLOW
  • 17. DEVELOPER PRODUCTIVITY HIGHER Business Value Registers Memory Management Performance Focus Verboseness Null Checking DIY Chipset specific code Gotos
  • 18. Here is my business logic; run it on a chip for me; I don’t care how.
  • 19. So, how do we further improve Velocity ?
  • 20. OPPORTUNITIES ▸ Diminishing Returns with Programming Languages ▸ Development Eco-system / Frameworks / Practices ▸Infrastructure
  • 21. Here is my app; run it for me; I don’t care how. DEVELOPER FOCUS
  • 22. Here are my servers; Set them up and maintain them for me; I don’t care how. OPS FOCUS
  • 25. BARE METAL / ON-PREM OS+APP HARDWARE OS+APP HARDWARE OS+APP HARDWARE Long lead time !
  • 26. VM VIRTUAL MACHINES (VM’S) OS+APP HOST OS HARDWARE VM OS+APP VM OS+APP
  • 27. CLOUD ▸ API to some shared pool of resources ▸ Typically: Rapid, On-Demand, Elastic, and Self-Serve ▸ Public, Private, or Hybrid
  • 28. INFRASTRUCTURE AS A SERVICE (IAAS) ▸ OpenStack, vSphere, AWS, etc ▸ API for virtualized infrastructure ▸ Compute / Network / Storage ▸ Including “Infrastructure Orchestration” ▸ Auto-Healing, Bin-Packing, Scaling, etc
  • 29. ON-PREM IAAS OS HARDWARE MIDDLEWARE APPLICATION VIRTUALIZATION OS HARDWARE MIDDLEWARE APPLICATION VIRTUALIZATION YOU MANAGE OTHERS MANAGE Note .. you’re still on the hook for the OS! Clear separation of concerns …
  • 30. VM VM CONTAINERS OS HOST OS OS APP + BIN OS APP + BIN HARDWARE CONTAINER ENGINE CONTAINERCONTAINER REALLY BIG! WHO MANAGES IT ?
  • 31. CONTAINERS ▸ Lightweight, stand-alone, portable, executable package of software to run specific services ▸ Runs as an isolated process, but on a SHARED Operating System ▸ Allows for more efficient resource consumption ▸ History back to 1979 (chroot) and 2000 (FreeBSD Jails) ▸ Numerous different Containers exist … ▸ Often sharing the same underlying tech - runc / containerd
  • 32. DOCKER ▸ Docker the Company ▸ Docker the Containerization Technology ▸ Packaging, Deploying, and Running Docker Images ▸ Popularized container technologies ~2013 ▸ First big win was local containers on developer machines ▸ CTO / Founder Solomon Hykes departure - March/28/18 ▸ Not the ONLY nor the FIRST container technology .. ▸ Ex-passenger on the Hype Train ?
  • 33. ON-PREM IAAS OS HARDWARE MIDDLEWARE APPLICATION VIRTUALIZATION OS HARDWARE MIDDLEWARE APPLICATION VIRTUALIZATION YOU MANAGE OTHERS MANAGE CAAS CONTAINER AS A SERVICE OS HARDWARE CONTAINER MIDDLEWARE VIRTUALIZATION APPLICATION No longer responsible for OS! (better for security)
  • 34. CONTAINER AS A SERVICE (CAAS/IAAS+) ▸ Kubernetes, Docker Swarm, Apache Mesos, etc ▸ API at Container level ▸ OS abstraction ▸ Including “Container Orchestration” ▸ Auto-Healing, Bin-Packing, Scaling, etc
  • 35. KUBERNETES (K8S) ▸ Open-Source Docker-based Container Orchestration / CaaS / IaaS+ by Google ▸ Used to deployed BILLIONS of containers per month on Google’s infrastructure ▸ Adds concept of Pods - groupings of containers ▸ Popularized Container Orchestration ~2015 ▸ Not the ONLY nor the FIRST container orchestration tool.. ▸ Full steam ahead for the Hype Train !!
  • 36. KUBERNETES PHILOSOPHY Here’s my code; I’ll tell you EXACTLY how you should run it for me; and don’t you dare make any assumptions on the deployment WITHOUT my written consent!
  • 37. DEPLOYING TO KUBERNETES ▸ Define Docker File ▸ Define Deployment, Pod, Networking, and Services ▸ Publish to Registry ▸ Deploy ▸ kubectl run my-app
  • 38. WORK REQUIRED ▸ Configuration Management ▸ Binary Management ▸ Memory Management ▸ JVM* and older Linux tools (free / top) will look at the OS host OVERALL memory / CPU counts instead of container ones !! ▸ “Why you’re going to FAIL running Java on Docker” - Redhat Workshop
  • 39. Here is my app; run it for me; I don’t care how.
  • 40. CONTAINER / VM PLATFORMS? BINARIES / DEPENDENCIES APPLICATION BUILDPACK
  • 41. ON-PREM IAAS OS HARDWARE MIDDLEWARE APPLICATION VIRTUALIZATION OS HARDWARE MIDDLEWARE APPLICATION VIRTUALIZATION YOU MANAGE OTHERS MANAGE CAAS OS HARDWARE CONTAINER / POD MIDDLEWARE VIRTUALIZATION APPLICATION PAAS OS HARDWARE CONTAINER MIDDLEWARE VIRTUALIZATION APPLICATION Dev Focus is now on Application Development
  • 42. PLATFORM AS A SERVICE (PAAS) ▸ AWS Beanstalk / PCF / Heroku / ETC ▸ Popularized by Heroku ~2009 ▸ API at Application Level ▸ VM or Container hosted! ▸ Including “Application Orchestration” ▸ Auto-Healing, Bin-Packing, Scaling, etc
  • 43. PIVOTAL CLOUD FOUNDRY (PCF) ▸ Container-based Open-Source PaaS by Pivotal ▸ MultiCloud (Public / Private or Hybrid) ▸ Modern Cloud-Native / 12 Factor Apps ▸ Deployments: Java, .NET Native, NodeJS, Docker, Go, etc ▸ Also includes: ▸ PKS - Pivotal Container Service (Kubernetes) ▸ PFS - Pivotal Function Service
  • 44. DEPLOYING TO PCF ▸ Deploy ▸ cf push my-app
  • 45. HIGHER Business Value Manual Scaling Container Management Orchestration Verboseness Manual Updates / Reboots DIY DEVELOPER PRODUCTIVITY + OPS EFFICIENCY
  • 47. To maximize BUSINESS VALUE.. .. work at the highest abstraction level possible. THE POINT
  • 48. For the MAJORITY (>99%) of GreenField business apps, default to: Java for programming language*. PaaS for infrastructure*. *or higher
  • 49. Economics have shifted where general focus should be: Developer productivity over performance and flexibility.
  • 50. QUESTIONS TO ASK .. (WHEN OPTIMIZING, NEEDING A LOWER ABSTRACTION LEVEL) ▸ What is your bottleneck ? ▸ Hardware is cheap! Developers are expensive! ▸ You’re not Google / NetFlix ! ▸ Profile! ▸ Are you re-inventing the wheel ? ▸ Compare to off-the-shelve solutions ▸ Have you weighted the costs ? ▸ Not a free lunch !! ▸ Understand that you’re trading off productivity
  • 51. MICROSERVICES ▸ Independently deployable, small, modular services instead of larger Monolith style apps ▸ Not really a new concept ! ▸ Service Oriented Architecture (SOA) has been around for much longer! ▸ Passenger on the Hype Train since ~2014!
  • 52. Do MicroServices increase Velocity ? IT DEPENDS!!! and they can often NEGATIVELY affect it!!
  • 53. NOT A SILVER BULLET ! ▸ Net Complexity Booster!! / Not an Abstraction ! ▸ Debugging costs ▸ Refactoring costs ▸ Multiple SCM Management ▸ Deployment CI/CD costs ▸ API Versioning ▸ Retry Logic ▸ Performance Hit (Networks are slower!!) ▸ Transactions
  • 54. “DON'T LEAP INTO MICROSERVICES JUST BECAUSE IT SOUNDS COOL. SEGREGATE THE SYSTEM INTO JARS USING A PLUGIN ARCHITECTURE FIRST. IF THAT'S NOT SUFFICIENT, THEN CONSIDER INTRODUCING SERVICE BOUNDARIES AT STRATEGIC POINTS.” UNCLE BOB (ROBERT C MARTIN)
  • 55. “I'M WARY OF DISTRIBUTION AND MY DEFAULT INCLINATION IS TO PREFER A MONOLITHIC DESIGN.” MARTIN FOWLER
  • 56. “IF YOU CAN’T BUILD A WELL- STRUCTURED MONOLITH, WHAT MAKES YOU THINK YOU CAN BUILD A WELL-STRUCTURED SET OF MICROSERVICES?” SIMON BROWN CODING THE ARCHITECTURE
  • 57. RECOMMENDATIONS ▸ Monoliths are NOT a bad thing !! ▸ MicroServices are NOT a replacement / but an alternative! ▸ Ensure proper DevOps first ▸ For Performance: ▸ Tech Giant Fallacy - You’re not NetFlix! ▸ Profile !! What is your Bottleneck ? ▸ Consider “Cookie Cutter” scaling ! ▸CONSIDER AND UNDERSTAND THE COSTS!! ▸WEIGHT THE PROS AND CONS!!
  • 58. THE SWEET SPOT (DEFAULT) Monolith 1 ∞ Number of MicroServices Per FunctionPer Agile Team Super ?
  • 59. THE QUESTION THAT YOU SHOULD ALWAYS BE ASKING .. IS THIS ADDING BUSINESS VALUE?
  • 60. “IN DEFERENCE TO THE GODS OF YAGNI, WHEN IN DOUBT ERR ON THE SIDE OF SIMPLICITY. ” MARTIN FOWLER
  • 61. Victor Szoltysek Platform Architect @ Pivotal vszoltysek@pivotal.io