Well-Architected SaaS on Cloud Foundry

Victor Ionescu

Lead IT Consultant | Technical Guidance Unit @ msg systems Romania

Software-as-a-Service

the WHAT && the WHY

ivictor88

Customer

("subscriber")

Customer

("subscriber")

"Software-as-a-Service"

Vendor

("provider")

subscribes to

subscribes to

manages

ivictor88

Customer

("subscriber")

"Software-as-a-Service"

subscribes to

The "WHY" for Subscribers

  • No upfront investments
  • Predictable costs using pay-per-use model
  • No lengthy implementation project
  • Fast on- (and off-)boarding

ivictor88

"Software-as-a-Service"

The "WHY" for Providers

  • all customers on the same software version
  • 1 single active release to maintain
  • Ship features fast, directly to production

Vendor

("provider")

manages

ivictor88

Building a multitenant SaaS

Challanges and how to address them

ivictor88

Choosing a Platform

ivictor88

CaaS, PaaS, FaaS. K8s, CF and others..

 

Infrastructure

App

Cloud Native Application Blueprint

Container Orchestration

Container

Security

Runtime

App

Container

Runtime

Network

Services

ivictor88

Infrastructure

App

Container Orchestration

Container

Security

Runtime

App

Container

Runtime

Network

Services

ivictor88

Compute, Storage

Subnets,

Public/Private Network

Configure Routing

Database

Configure

Monitoring, Tracing, Logging

Run, Check, Scale

Messaging

"Overhead"

App

Container

Runtime

Value

Authentication & Authorization

Day 2 Operations

Monitor,

Patch,

Upgrade

ivictor88

-- Commoditization of Containers

Infrastructure

App

Container Orchestration

Container

Security

Runtime

CaaS

Network

Services

Dev/Ops

Overhead

Value

ivictor88

Infrastructure

Container Orchestration

Container

Security

Runtime

PaaS

Network

Container

Runtime

Security

Network

Services

App

Dev/Ops

Overhead

Value

adds:

  • Services
  • Networking
  • Container from Code (opt.)

ivictor88

Infrastructure

Container Orchestration

Container

Runtime

FaaS

Container

Runtime

Security

Network

Services

Eventing

Func

Func

Func

Func

Func

Func

Func

Func

Dev/Ops

Eventing

Overhead

Value

  • Eventing (native)
  • Focus on pure Value
  • Ecosystem maturity!

!!

simple,

but opinionated

flexible,

but complex

cf push nodeapp --hostname webapi
cf bind-service nodeapp postgres_db

Node.JS sources

Node.JS sources

App Container

Pod

Postgres

PersistentVolume

ConfigMap

Pod

Service

Ingress

kubectl apply -f ...

ivictor88

  • Container Management Platform and much more
  • Hides the complexities of the underlying infrastructure
  • Deploys applications to containers and manages their operation throughout the entire application lifecycle

app.

CloudFoundry

deploy

ivictor88

CF Buildpacks & Routing

Detecting buildpack:

staticfile_buildpack..
java_buildpack..
nodejs_buildpack..
ruby_buildpack.. MATCHED!

app.

Buildpack detection

Router

CF Service Brokers

Service Brokers

Distributed Cache

Database

Messaging

...

iRE Cloud on SAP Cloud Foundry

- Architecting for Scale and Resilience -

ivictor88

12factor microservices

  • decoupled lifecycle
  • independently scalable

event based comm.

circuit breakers

  • resilience
  • eventual consistency

Handling Multitenancy

ivictor88

Tenant 1

Tenant 2

"Software-as-a-Service"

Multitenancy

Tenant isolation levels:

  • Security
  • Persistence
  • Connectivity

ivictor88

"Software-as-a-Service"

subscribes to

subscribes to

Customer account

  • SaaS runtime environment
  • Platform services (DB, messaging, ..)
  • Users and Roles, IdP
  • On-Premise Connectivity

Customer account

  • Users and Roles, IdP
  • On-Premise Connectivity

Provider account

Multitenancy on SAP Cloud Platform

Handling multitenancy on application level

GET https://ire-prod-<tenant identifier>.cfapps.....

ivictor88

Thank You for your attention!

ionescuv.github.io

@ivictor88

Victor Ionescu

msg systems, Technical Guidance Unit

Well-architected SaaS on Cloud Foundry

By Victor Ionescu

Well-architected SaaS on Cloud Foundry

Transylvania Cloud Meetup

  • 1,458