Testing CloudFoundry Apps..without CloudFoundry

About me

  • Technical Guidance Unit @ msg systems
  • organizer and speaker at #itconsapcj, now at it's 7th edition.   www.itconferencesap.com
  • Interests & Background:
    • Cloud-Native dev., CloudFoundry
    • DevOps, Continuous Everything
    • ABAP, BOPF, S/4HANA

https://people.sap.com/victor.ionescu

@ivictor88 ( <-- look here for slides )

ionescuv.github.io

Stay tuned for updates!

www.itconferencesap.com

Motivation

"create Order out of Chaos"

Sample architecture(XSA) on SAP Cloud Platform, Cloud Foundry

Test this!

Getting things to run

maven/npm

Environment

Security

Database

Downstream dependencies

Application Runtime

App Binaries

Networking

Platform services

There are many ways to get things done

"let's just disable security temporarily"

set JAVA_HOME=/jre1.8.0_121
...
doSomeLogic();
// commented out for testing
// callOtherSystem();
...

Snowflakes

Dev/Prod Parity

Test environment qualities

"Test-Environment-as-Code"

  • consistent
  • easy to set up
  • centrally managed
  • The Test Environment is your product
  • The development team is your customer

Test-Environment-as-Code

..now back to Cloud Foundry

  • open-source PaaS ("Linux of the Cloud")
  • handles building, deployment and monitoring of apps (Java, Node.JS and many more)
  • provides multiple services for the apps to use
  • hides complexities of underlying Infrastructure

Cloud Foundry Under the Hood

  • Containerization
    • => Buildpacks
  • Services
    • => Service brokers
    • => Application environment
  • Network
    • => Routes

Test Environment for SAP Cloud Platform, CF

Cloud Foundry space:

Test Environment:

Test Environment:

  • Containerization
    • => Buildpacks
  • Services
    • => Service brokers
    • => Application environment
  • Network
    • => Routes

Docker

cf service-keys

mustache
cf-local

container networking

Cloud Foundry

Test Environment

"docker-composing" the puzzle

version: '3'
services:
  launchpad:
    build: ../src/launchpad
    container_name: launchpad
    ports:
     - "8080:8080"
    networks: 
     - NET1
    environment:
     - PORT=8080
     - VCAP_SERVICES={"portal-services":[{"binding_name":null,"credentials":{...
     - DESTINATIONS=[{"name":"app1","url":"http://spring-app1","forwardAuthToken":true},...
     - sapui5url=https://sapui5.hana.ondemand.com/1.56.10
  app1:
    build: ../src/app
    container_name: spring-app1
    networks: 
     - NET1
    environment:     
     - SPRING_PROFILES_ACTIVE=cloud
     - VCAP_APPLICATION={}
     - VCAP_SERVICES={"postgresql":[{..."host":"mypostgres"..
  postgres:
    image: "postgres"
    container_name: mypostgres
    networks: 
     - NET1        
    environment:
     - POSTGRES_USER=postgres
     - POSTGRES_PASSWORD=postgres

Demo Time

or DIY:

https://people.sap.com/victor.ionescu

@ivictor88

ionescuv.github.io

Q&A

Made with Slides.com