Right Money Management App For Your Financial Goals
KUBEDAY - JAPAN 2022 - Building FaaS Platforms.pdf
1.
2. On top of Kubernetes
Mauricio Salatino - VMware / Knative OSS
Tokyo, Japan 2022
Building
FaaS Platforms
3. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Who I am?
Mauricio Salatino
Staff Engineer @VMware, Ex @Red-Hat
Full Time working on Knative OSS
Knative Functions Working Group Co-Lead
https://github.com/knative/func
Contributor to a number of OSS projects like:
Crossplane, Jenkins X, Knative, VCluster, etc.
I am writing a book:
Continuous Delivery for Kubernetes
@ManningBooks
@salaboy - @salaboy@hackyderm.io - https://salaboy.com
4. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Agenda
The need for building platforms on top of Kubernetes
A platform in action
that will make your life easier when building platforms
Context:
Demo:
Tools:
5. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
The need for building platforms
• Kubernetes built-in constructs are just building blocks
• One single Kubernetes Cluster is not enough
• Learning Kubernetes is Hard
• Training large teams
• The CNCF landscape keeps growing
6. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
How a platform can help?
A platform can help with:
• Reducing the cognitive load from development teams
• Provide a self-service approach to consume complex tools
• Improve our software delivery practices, by paving the paths to production
‟A platform is a collection of services and tools
focused on enabling teams with a self-service
approach to get the tools that they need when
they need them.”
- @salaboy, 2022
7. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
How does a platform look like?
Platform
Platform APIs
Tools
Kubernetes Clusters
Cloud Resources
On-Prem Services
Virtual Machines
3rd Party Services
8. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
The challenges of building platforms
Platform
Kubernetes
Infrastructure
App App App App Dev Teams
Platform Team
Infrastructure Team
https://teamtopologies.com/
APIs
10. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Our Application
Production Environment
Monolith
Application
External Data
Source
11. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Let’s add a new feature
Platform API
Can I have a Dev
Environment?
Development
Environment
Sure you can, let me
create one for you …
App Dev Teams
Here, take the keys to
connect
13. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Functions to extend our monolith
Development
Environment
App Dev Teams
Function
Let’s create a Function
and deploy it to my
new Development
Environment
I can be written in any
programming
language!
I can run functions because
the platform already
installed all the tools that I
need
15. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Functions to extend our monolith
GIT
Production Environment
Function
Development
Environment
Function
App Dev Teams
Ok I am done
with my changes
Platform API
Ok! Let’s promote the changes
by creating a Pull Request to
our Production Environment
con
fi
guration repository
21. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
VCluster
• Isolated fully compliant API Server
• Automatic Sync of Resources
• To create a VCluster you just install a Helm Chart
Kubernetes
VCluster A
API Server
API Server
VCluster B
API Server
24. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Knative Functions
Developer Experience and Functions Runtime
• Knative Serving (in your Kubernetes Clusters)
• Scaling up and down based on traffic (down to zero)
• Advanced Traffic Management (for release strategies)
• Simplified user experience (less YAML)
• Knative Functions
• Focused on developer experience
• Supports templates and different programming languages
• Reduce the cognitive load on developers and let them focus on coding
25. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Knative And VCluster
Using our resources wisely - VCluster Knative Plugin
Development Environments
Development
Environment B
Development
Environment A
Development
Environment C
26. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
ArgoCD
GitOps everywhere
• Sync configuration in Git to Kubernetes Clusters
• Avoid changing configurations manually to clusters
• Revert back changing by just reverting commits in Git
• Keep track of configurations changes
27. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
ArgoCD
Platform
Production
Environment
Dev Environments
`func` CLI
App
Git
28. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Other tools & Resources
Other Tools
• OpenFeature https://openfeature.dev/
• Dapr https://dapr.io/
• CloudEvents & CDEvents https://cdevents.dev
• DORA metrics https://github.com/salaboy/from-monolith-to-k8s/tree/main/four-
keys
Resources
• Challenges of building platforms on top of Kubernetes Blogs
• https://salaboy.com
• Step-by-Step tutorial:
•https://github.com/salaboy/kubeday-japan-2022
30. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Recap
Production Platform
Development
Environment
App Dev Teams
Platform Team
31. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Recap
Production Platform
Development
Environment
Git
App Dev Teams
Platform Team
32. @salaboy - @salaboy@hackyderm.io - https://salaboy.com
Recap
This is just an example
• But it is amazing how many people are using these tools to build
similar platforms
• A well-define Platform API can help you to pivot and change the
tools that you are using to implement your platform’s functionality
• Focus on developers experience and developers productivity
Production Platform
Development
Environment
Git
App Dev Teams
Platform Team