SlideShare a Scribd company logo
You Might Just be a
Functional Programmer Now
Cornelia Davis
VP of Technology
Pivotal
@cdavisafc
Kubecon Barcelona
May 2019
Me?
❖ Cal State Northridge: Computer Science
❖ Indiana University: Computer Science
(ABD)
❖ Pivotal: Product Strategy (PCF, PCC, PKS)
❖ And now…
Ops
as much as
Dev
now
Discount code 40% off!: ctwkubeconeur19
Assembly Language
Fortran
C
C++
Java
Golang
Clojure
Scala
Kotlin
Functional
Programming
Imperative
Programming
F#
[(0, 5), (5, 17), (17, 20), (20, 33)]
Merge short Segments together
[(0, 17), (17, 33)]
def mergeSegments(s_list, threshold):
list_len = len(s_list)
i = 0
while i < list_len:
seg_length = s_list[i][1]-s_list[i][0]
if seg_length < threshold:
s_list[i+1] =
(s_list[i][0], s_list[i+1][1])
del s_list[i]
list_len -= 1
else:
i += 1
0 5 5 17 17 20 20 33
i
0 1 2 3
4
List Length
0
0 17 17 20 20 33
17
i
3
0 17 17 20 20 33
i
3
0 17 17 33
i
2
Hallmarks of Imperative Programs
❖ Sequential - we control every step in the process.
❖ Variables … with side effects
❖ Hairy edge cases
❖ Difficult to parallelize
@cdavisafc
(define (mergeSegments segs threshold)
(if
(or (null? segs) (null? (cdr segs)))
segs
(let
((rest (mergeSegments (cdr segs) threshold)))
(if
(< (currSegLen segs) threshold)
(cons (cons (start segs) (end rest))
(cdr rest))
(cons (car segs) rest)))))
0 5 5 17 17 20 20 33
5 17 17 33
0 17
Merge short Segments together
17 33
Hallmarks of Functional Programs
❖ Declarative
❖ NO side effects
❖ Recursive
❖ Easier to program in a way that allows for parallelization
❖ Far fewer edge cases
❖ Provably correct
@cdavisafc
Gene Kim
3000 Lines of Objective C
To
1500 Lines of Typescript & React
To
500 Lines of Clojure
What is the
model
we use to reason with?
Imperative Functional
Iterative Declarative
Mutable State Immutability
Looping Recursive
Libraries (compiled in) Aspect Oriented Prog.
Maybe not functional, but modern
programming practice
*
*
Programming
Imperative Functional
Iterative Declarative
Mutable State Immutability
Looping Recursive
Libraries (compiled in) Aspect Oriented Prog.*
Programming
We cannot reason about every detail so we need
a model
that allows machines to reason for us.
Bash
Puppet
Chef
Systems
Programming
Ansible
Salt
Imperative
Kubernetes
BOSH
CF/PAS
Systems
Programming
Functional
Scripted Deployments Declarative Deployments
ssh Immutable Infrastructure
Long Running Context (Ephemeral) Containers
Middleware Sidecars
We cannot reason about every detail so we need
a model
that allows machines to reason for us.
Imperative Functional
Systems Programming
Declarative Deployments
@cdavisafc
My app:
- image: posts
type: pod
replicas: 3
- image: connections
type: pod
replicas: 5
- image: aggregator
type: pod
replicas: 2
Compliance:
- image: audit
type: daemonset
P
P
P
CC
C
C
C
A
A
Audit
Audit Audit
Audit
My app:
- image: posts
type: pod
replicas: 3
- image: connections
type: pod
replicas: 5
- image: aggregator
type: pod
replicas: 2
Compliance:
- image: audit
type: daemonset
P
P
P
CC
C
C
A
Audit
Audit Audit
C
A
AuditA
C
Control Loop
My app:
- image: posts
type: pod
replicas: 3
- image: connections
type: pod
replicas: 5
- image: aggregator
type: pod
replicas: 2
Compliance:
- image: audit
type: daemonset
P
P
P
CC
C
C
A
Audit
Audit Audit
A
C
Independent Control Loops!!!
ReplicaSet Controller
DaemonSet Controller
(define sumToN
(lambda (n)
(if (= n 1)
1
(+ n (sumToN (- n 1)))
)))
A bit like Functional Programming
Base Case
General Case
(Bit of a leap of faith)
Immutable Infrastructure
@cdavisafc
provision
Infrastructure
configure deploy configure
Pipelines,
not humans…
Challenges Remain
Slow Shortcuts
ssh (eeghads!)
Complex Dependencies
Configured
PLATFORM
provision
Infrastructure
configure deploy configure
Infrastructure
Configured PLATFORM
deploy configure
MillisecondsDesigned for
self-service!
configureconfigureconfigureconfigure
deploydeploydeploydeploy
Infrastructure
Configured PLATFORM
deploy configure
Designed for
self-service!
configureconfigureconfigureconfigure
deploydeploydeploydeploy
Infrastructure
Configured PLATFORM
deploy
configuredeploy
Designed for
self-service!
configureconfigureconfigureconfigure
deploydeploydeploydeploy
Infrastructure
Configured PLATFORM
deploy
configuredeploy
Designed for
self-service!
But what does all of this have to do with
Imperative and Functional Models?
@cdavisafc
0 5 5 17 17 20 20 33
i
0State:
5 17 17 20 20 33
i
0
17
State:
5 17 20 330
17
i
State:
5 17 20 330
17
i
State:
def mergeSegments(s_list, threshold):
list_len = len(s_list)
i = 0
while i < list_len:
seg_length = s_list[i][1]-s_list[i][0]
if seg_length < threshold:
s_list[i+1] =
(s_list[i][0], s_list[i+1][1])
del s_list[i]
list_len -= 1
else:
i += 1
Correctness?
?
Other Influences?
The call stack captures a
series of events from
which state can be derived
Frames are
immutable!
0 17 17 33
Final
State:
Frames are
immutable!
0 17 17 33
Final
State:
The call stack captures a
series of events from
which state can be derived
Container images
are a bit like your
stack frames…
… with the
controller as your
interpreter
event store
… …
There is another place
we are seeing this
pattern…
Events are
immutable and
sequenced!
Legacy Store
(Ephemeral) Containers
@cdavisafc
HOST
Host OS
(Kernel)
OS Image
Runtime Layer
Application Layer
HOST
Host OS
(Kernel)
OS Image
Runtime Layer
Application Layer
HOST
Host OS
(Kernel)
OS Image
Runtime Layer
Application Layer
OS Image
Runtime Layer
Application Layer
OS Image
Runtime Layer
Application Layer
HOST
Host OS
(Kernel)
OS Image
Runtime Layer
Application Layer
HOST
Host OS
(Kernel)
You can
Repave
the entire
environment
VERY Often!!!
Like several
times per week
“often”!
Sidecars
@cdavisafc
Database
Web
Server
Messaging
Your Application Code
Virtualized
Infrastructure
Platform Team
Application Team
Iteratively building and
delivering digital offerings to
the consumer
Enabling the app teams all
while maintaining
Security
Compliance
Resilience
Cost Efficiency
47
Platform
You Might Just be a Functional Programmer Now
POD
HOST
Host OS
(Kernel)
SidecarApp
You Might Just be a Functional Programmer Now
You Might Just be a Functional Programmer Now
POD
HOST
Host OS
(Kernel)
SidecarApp
POD
HOST
Host OS
(Kernel)
SidecarApp
POD
Daemon Set
(Sidecar)
D
D
D
D
It’s about injecting cross-cutting concerns
(As it was for AOP)
@cdavisafc
configureconfigureconfigureconfigure
deploydeploydeploydeploy
provision
Infrastructure
Configured PLATFORM
deploy
configuredeploy
Cross-cutting
Concerns
Cross-cutting
Concerns
Systems Programming
Scripted Deployments Declarative Deployments
ssh Immutable Infrastructure
Long Running Context (Ephemeral) Containers
Middleware Sidecars
(Declarative)
(Immutable)
(Recursive)
(AOP)
Systems ProgrammingFunctional
We cannot reason about every detail so we need
a model
that allows machines to reason for us.
Thank you
@cdavisafc

More Related Content

What's hot (20)

PPTX
12 Factor App
Erkan Erol
 
PPTX
Building Developer Pipelines with PKS, Harbor, Clair, and Concourse
VMware Tanzu
 
PDF
PKS: The What and How of Enterprise-Grade Kubernetes
VMware Tanzu
 
PDF
Getting MongoDB to a Developer Fast - Kubernetes for the Enterprise - London
VMware Tanzu
 
PDF
Welcome - Kubernetes for the Enterprise - London
VMware Tanzu
 
PPTX
Improving Your Company’s Health with Middleware Takeout
VMware Tanzu
 
PDF
Kube Your Enthusiasm - Paul Czarkowski
VMware Tanzu
 
PDF
DCEU 18: Docker Container Networking
Docker, Inc.
 
PPTX
Azure dev ops_demo
Abhishek Sahu
 
PPTX
Fabio rapposelli pks-vmug
VMUG IT
 
PDF
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
SlideTeam
 
PDF
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
VMware Tanzu
 
PDF
Weave GitOps Core Overview (Free GitOps Workshop)
Weaveworks
 
PDF
Helm - Package Manager for Kubernetes
Knoldus Inc.
 
PDF
Spring Boot Loves K8s
VMware Tanzu
 
PPTX
Tectonic Summit 2016: Multi-Cluster Kubernetes: Planning for Unknowns
CoreOS
 
PDF
Spring Boot Observability
VMware Tanzu
 
PDF
An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...
SlideTeam
 
PDF
Spring Boot Whirlwind Tour
VMware Tanzu
 
PDF
Is your kubernetes negative or positive
LibbySchulze
 
12 Factor App
Erkan Erol
 
Building Developer Pipelines with PKS, Harbor, Clair, and Concourse
VMware Tanzu
 
PKS: The What and How of Enterprise-Grade Kubernetes
VMware Tanzu
 
Getting MongoDB to a Developer Fast - Kubernetes for the Enterprise - London
VMware Tanzu
 
Welcome - Kubernetes for the Enterprise - London
VMware Tanzu
 
Improving Your Company’s Health with Middleware Takeout
VMware Tanzu
 
Kube Your Enthusiasm - Paul Czarkowski
VMware Tanzu
 
DCEU 18: Docker Container Networking
Docker, Inc.
 
Azure dev ops_demo
Abhishek Sahu
 
Fabio rapposelli pks-vmug
VMUG IT
 
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
SlideTeam
 
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
VMware Tanzu
 
Weave GitOps Core Overview (Free GitOps Workshop)
Weaveworks
 
Helm - Package Manager for Kubernetes
Knoldus Inc.
 
Spring Boot Loves K8s
VMware Tanzu
 
Tectonic Summit 2016: Multi-Cluster Kubernetes: Planning for Unknowns
CoreOS
 
Spring Boot Observability
VMware Tanzu
 
An Architectural Deep Dive With Kubernetes And Containers Powerpoint Presenta...
SlideTeam
 
Spring Boot Whirlwind Tour
VMware Tanzu
 
Is your kubernetes negative or positive
LibbySchulze
 

Similar to You Might Just be a Functional Programmer Now (20)

PPTX
Design pattern-refactor-functional
Kfir Bloch
 
PPTX
Refactoring Design Patterns the Functional Way (in Scala)
Kfir Bloch
 
PPTX
Flink internals web
Kostas Tzoumas
 
PPT
Dotnetintroduce 100324201546-phpapp02
Wei Sun
 
DOCX
Memento Pattern Implementation
Steve Widom
 
PPTX
2 Years of Real World FP at REA
kenbot
 
DOC
1183 c-interview-questions-and-answers
Akash Gawali
 
PDF
Entity Framework Interview Questions PDF By ScholarHat
Scholarhat
 
PDF
Clojure and The Robot Apocalypse
elliando dias
 
PPTX
More Data, More Problems: Evolving big data machine learning pipelines with S...
Alex Sadovsky
 
PPTX
ICT C++
Karthikeyan A K
 
PPT
DotNet Introduction
Wei Sun
 
PDF
Beyond Breakpoints: A Tour of Dynamic Analysis
C4Media
 
PPT
Introduction to CLIPS Expert System
Motaz Saad
 
PPTX
Introduction to c_plus_plus
Sayed Ahmed
 
PPTX
Introduction to c_plus_plus (6)
Sayed Ahmed
 
PDF
Nt1310 Unit 3 Language Analysis
Nicole Gomez
 
PPT
Software Engineering Systems Designing end to end
arvindthangamani1
 
PDF
Simon Elliston Ball – When to NoSQL and When to Know SQL - NoSQL matters Barc...
NoSQLmatters
 
PPT
Os Owens
oscon2007
 
Design pattern-refactor-functional
Kfir Bloch
 
Refactoring Design Patterns the Functional Way (in Scala)
Kfir Bloch
 
Flink internals web
Kostas Tzoumas
 
Dotnetintroduce 100324201546-phpapp02
Wei Sun
 
Memento Pattern Implementation
Steve Widom
 
2 Years of Real World FP at REA
kenbot
 
1183 c-interview-questions-and-answers
Akash Gawali
 
Entity Framework Interview Questions PDF By ScholarHat
Scholarhat
 
Clojure and The Robot Apocalypse
elliando dias
 
More Data, More Problems: Evolving big data machine learning pipelines with S...
Alex Sadovsky
 
ICT C++
Karthikeyan A K
 
DotNet Introduction
Wei Sun
 
Beyond Breakpoints: A Tour of Dynamic Analysis
C4Media
 
Introduction to CLIPS Expert System
Motaz Saad
 
Introduction to c_plus_plus
Sayed Ahmed
 
Introduction to c_plus_plus (6)
Sayed Ahmed
 
Nt1310 Unit 3 Language Analysis
Nicole Gomez
 
Software Engineering Systems Designing end to end
arvindthangamani1
 
Simon Elliston Ball – When to NoSQL and When to Know SQL - NoSQL matters Barc...
NoSQLmatters
 
Os Owens
oscon2007
 
Ad

More from cornelia davis (20)

PDF
You've Made Kubernetes Available to Your Developers, Now What?
cornelia davis
 
PDF
It’s Not Just Request/Response: Understanding Event-driven Microservices
cornelia davis
 
PDF
Cloud Native Architectures for Devops
cornelia davis
 
PDF
Cloud-native Data
cornelia davis
 
PDF
Cloud Native: Designing Change-tolerant Software
cornelia davis
 
PDF
Cloud Native: Designing Change-tolerant Software
cornelia davis
 
PDF
Cloud-native Data: Every Microservice Needs a Cache
cornelia davis
 
PDF
Devops: Who Does What? - Devops Enterprise Summit 2016
cornelia davis
 
PDF
Velocity NY 2016 - Devops: Who Does What?
cornelia davis
 
PDF
Devops Enterprise Summit: My Great Awakening: 
Top “Ah-ha” Moments As Former ...
cornelia davis
 
PDF
Linux Collaboration Summit Keynote: Transformation: It Takes a Platform
cornelia davis
 
PDF
Devops: Enabled Through a Recasting of Operational Roles
cornelia davis
 
PPTX
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
cornelia davis
 
PPTX
Removing Barriers Between Dev and Ops
cornelia davis
 
PPTX
Declarative Infrastructure with Cloud Foundry BOSH
cornelia davis
 
PPTX
Cloud Foundry Diego, Lattice, Docker and more
cornelia davis
 
PPTX
Cloud Foundry Platform Operations - CF Summit 2015
cornelia davis
 
PPTX
Competing with Software: It Takes a Platform -- Devops @ EMC World
cornelia davis
 
PPTX
Pivotal Cloud Platform Roadshow Keynote
cornelia davis
 
PPTX
Evolving Devops: The Benefits of PaaS and Application Dial Tone
cornelia davis
 
You've Made Kubernetes Available to Your Developers, Now What?
cornelia davis
 
It’s Not Just Request/Response: Understanding Event-driven Microservices
cornelia davis
 
Cloud Native Architectures for Devops
cornelia davis
 
Cloud-native Data
cornelia davis
 
Cloud Native: Designing Change-tolerant Software
cornelia davis
 
Cloud Native: Designing Change-tolerant Software
cornelia davis
 
Cloud-native Data: Every Microservice Needs a Cache
cornelia davis
 
Devops: Who Does What? - Devops Enterprise Summit 2016
cornelia davis
 
Velocity NY 2016 - Devops: Who Does What?
cornelia davis
 
Devops Enterprise Summit: My Great Awakening: 
Top “Ah-ha” Moments As Former ...
cornelia davis
 
Linux Collaboration Summit Keynote: Transformation: It Takes a Platform
cornelia davis
 
Devops: Enabled Through a Recasting of Operational Roles
cornelia davis
 
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...
cornelia davis
 
Removing Barriers Between Dev and Ops
cornelia davis
 
Declarative Infrastructure with Cloud Foundry BOSH
cornelia davis
 
Cloud Foundry Diego, Lattice, Docker and more
cornelia davis
 
Cloud Foundry Platform Operations - CF Summit 2015
cornelia davis
 
Competing with Software: It Takes a Platform -- Devops @ EMC World
cornelia davis
 
Pivotal Cloud Platform Roadshow Keynote
cornelia davis
 
Evolving Devops: The Benefits of PaaS and Application Dial Tone
cornelia davis
 
Ad

Recently uploaded (20)

PDF
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
PPTX
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PPTX
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PPTX
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
PDF
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PPTX
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
PDF
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 

You Might Just be a Functional Programmer Now