Application
placement
constraints

Carlo Alberto Ferraris

DevOps Engineer

Rakuten Platform as a Service

 

@cafxx

Placement constraints

Load segregation

SECURITY

network ISOLATION

"No, you can't bind dev and prod networks to the same VM"

COMPUTE RESOURCES ISOLATION

Side-channel? Which side-channel?

performance factors

premium resources

I hate noisy neighbors

Where's my GPU?

I love the smell of bare metal in the morning

ECONOMY-CLASS resources

Overcommit to 11

Best-effort service level

ELASTIC CLUSTERS

"isolate workloads across separate networks, IaaS providers, and datacenters to meet compliance, availability, [...] cost requirements [and] compliance requirements with respect to their network isolation and accessibility"

THE STACK HACK

- name: dea
  properties:
    dea_next:
      stacks:
      - name: cflinuxfs2
        package_path: /var/vcap/packages/rootfs_cflinuxfs2/rootfs
- name: dea
  properties:
    dea_next:
      stacks:
      - name: cflinuxfs2        
        package_path: /var/vcap/packages/rootfs_cflinuxfs2/rootfs
      - name: myotherstack
        package_path: /var/vcap/packages/rootfs_myotherstack/rootfs
cf push -s cflinuxfs2     # deploy to dea
cf push -s myotherstack   # deploy to dea
- name: dea_cflinuxfs2
  properties:
    dea_next:
      stacks:
      - name: cflinuxfs2
        package_path: /var/vcap/packages/rootfs_cflinuxfs2/rootfs

- name: dea_myotherstack
  properties:
    dea_next:
      stacks:
      - name: myotherstack
        package_path: /var/vcap/packages/rootfs_myotherstack/rootfs

 

cf push -s cflinuxfs2    # deploy to dea_cflinuxfs2
cf push -s myotherstack  # deploy to dea_myotherstack
- name: dea
  properties:
    dea_next:
      stacks:
      - name: cflinuxfs2
        package_path: /var/vcap/packages/rootfs_cflinuxfs2/rootfs

- name: dea_b
  properties:
    dea_next:
      stacks:
      - name: cflinuxfs2_b
        package_path: /var/vcap/packages/rootfs_cflinuxfs2/rootfs
cf push -s cflinuxfs2    # deploy to dea_cflinuxfs2 (cflinuxfs2)
cf push -s cflinuxfs2_b  # deploy to dea_cflinuxfs2_b (cflinuxfs2)
- name: dea_high_performance
  properties:
    dea_next:
      stacks:
      - name: high_performance
        package_path: /var/vcap/packages/rootfs_cflinuxfs2/rootfs
  resource_pool: dea_high_performance_pool
- name: dea_low_performance
  properties:
    dea_next:
      stacks:
      - name: low_performance
        package_path: /var/vcap/packages/rootfs_cflinuxfs2/rootfs
  resource_pool: dea_low_performance_pool  

 

cf push -s high_performance
cf push -s low_performance
- name: dea_production
  properties:
    dea_next:
      stacks:
      - name: production
        package_path: /var/vcap/packages/rootfs_cflinuxfs2/rootfs
  resource_pool: dea_production_pool
- name: dea_development
  properties:
    dea_next:
      stacks:
      - name: development
        package_path: /var/vcap/packages/rootfs_cflinuxfs2/rootfs
  resource_pool: dea_development_pool  

 

cf push -s production
cf push -s development

ALL GOOD AND WELL?

NOT REALLY

Requires configuring/patching the buildpacks

Makes monitoring more complicated

NOT REALLY

One more knob for the users

(although they have plenty to shoot
themselves in the foot with already)

NOT REALLY

(but it's definitely worth it)

Application placement constraints (abusing Stacks)

By Carlo Alberto Ferraris

Application placement constraints (abusing Stacks)

How to get the functionality of placement pools/isolation segments in Cloud Foundry, before they are available

  • 1,687