Top Banner
A Reference Platform for Software Performance Engineering in DevOps Teerat Pitakrat Jonas Heinisch
20

A Reference Platform for Software Performance Engineering in ...

Feb 14, 2017

Download

Documents

duongliem
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: A Reference Platform for Software Performance Engineering in ...

A Reference Platform for

Software Performance

Engineering in DevOps

Teerat Pitakrat Jonas Heinisch

Page 2: A Reference Platform for Software Performance Engineering in ...

“DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production,[…]”

Bass, Zhu, and Weber (2015)

2

Page 3: A Reference Platform for Software Performance Engineering in ...

Deployments at Amazon (2011)

• Mean time between deployments (weekday) 11.6s

• Max deployments per hour 1,079 • Mean number of hosts simultaneously

receiving a deployment 10,000 • Max number of hosts simultaneously

receiving a deployment 30,000 3 DevOps, Continuous Integration and Deployment on AWS , AWS Summit, 2015

Page 4: A Reference Platform for Software Performance Engineering in ...

Infrastructure Technology Requirement Architecture Development Build Testing Deployment Execution

4

Page 5: A Reference Platform for Software Performance Engineering in ...

Software Performance Engineering Approaches

Requirement Architecture Development Build Testing Deployment Execution

Performance Regression

Testing

Capacity Planning

Online Resource

Management

Performance Monitoring

Design-time Performance Prediction

Design-Space Exploration

(Optimization)

Performance Model

Extraction

Performance Problem Diagnosis

Profiling

Load Testing

Performance Unit Testing

SLA Negotiation

5

Page 6: A Reference Platform for Software Performance Engineering in ...

Software Performance Engineering Approaches

Requirement Architecture Development Build Testing Deployment Execution

Performance Regression

Testing

Capacity Planning

Online Resource

Management

Performance Monitoring

Design-time Performance Prediction

Design-Space Exploration

(Optimization)

Performance Model

Extraction

Performance Problem Diagnosis

Profiling

Load Testing

Performance Unit Testing

SLA Negotiation

ContiPerf

6

Page 7: A Reference Platform for Software Performance Engineering in ...

Acknowledgement

This work is a part of the SPEC RG DevOps working group’s blueprint for performance-aware DevOps http://research.spec.org/devopswg/

7

Page 8: A Reference Platform for Software Performance Engineering in ...

Objective

• Showcase/benchmarking environment for software performance engineering in DevOps – Ready-to-use – Community-driven – Extensible – Reproducible – Representative for real-world scenarios – Based on open standards/technologies – Provides performance-aware CI/CD pipeline – Provides sample applications

8

Page 9: A Reference Platform for Software Performance Engineering in ...

Infrastructure Technology Requirement Architecture Development Build Testing Deployment Execution

9

Page 10: A Reference Platform for Software Performance Engineering in ...

Fabric8 • Open source integrated developer platform by Red Hat • Provides continuous delivery pipeline by:

– Combining existing tools

– Providing an integration layer and UI • Based on

– Docker

– Kubernetes

10

Page 11: A Reference Platform for Software Performance Engineering in ...

Docker • Open source container technology • Runs on any Linux machines (kernel 2.6.32+) • Lightweight • Fast startup time

Example (Redis server): • Create Dockerfile

• Build • Run

$ docker run –d redis

FROM ubuntu:14.04

RUN apt-get update && apt-get install -y redis-server

EXPOSE 6379

ENTRYPOINT ["/usr/bin/redis-server"]

$ docker build –t redis .

11

Page 12: A Reference Platform for Software Performance Engineering in ...

12

Page 13: A Reference Platform for Software Performance Engineering in ...

Kubernetes

• Open source container cluster manager • Provides

– Load balancing – Service discovery – Fault tolerance – Horizontal scaling – Rolling update

13

Page 14: A Reference Platform for Software Performance Engineering in ...

Fabric8 Technology Stack Requirement Architecture Development Build Testing Deployment Execution

14

Page 15: A Reference Platform for Software Performance Engineering in ...

Fabric8 Demo

15

Page 16: A Reference Platform for Software Performance Engineering in ...

Reference Platform for SPE

Physical / virtual machines

Operating system

RSS reader JPetStore MediaStore DVDStore CoCoME SPECjEnterprise

Requirement Architecture Development Build Testing Deployment Execution

16

Page 17: A Reference Platform for Software Performance Engineering in ...

How to Add Performance-aware Services

1. Package service as a Docker image

2. Create yaml file to describe the deployment

3. Deploy service to Kubernetes

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

name: kieker-monitoring-server

spec:

replicas: 1

template:

metadata:

labels:

app: kieker

spec:

containers:

- name: kieker

image: kieker:1.12

ports:

- containerPort: 80

kieker-monitoring-server.yaml 17

Page 18: A Reference Platform for Software Performance Engineering in ...

How to Add Services into Pipeline

• Extend Fabric8 (Jenkins) pipeline

18

Page 19: A Reference Platform for Software Performance Engineering in ...

Example Use Cases

19

Modeling Testing Online Performance Management

Monitoring

Applications

OPEN.xtrace

Problem Diagnosis Model Extraction Online Failure Prediction

Page 20: A Reference Platform for Software Performance Engineering in ...

Summary Goals • Reference platform for software performance engineering in

DevOps • Extensible performance-aware CI/CD pipeline • Reproducible environment for research

Current state • Migrating SPE tools/services to Docker/Kubernetes • Extending Fabric8 pipeline • Migrating sample applications to Fabric8

Source code • https://github.com/spec-rgdevops/

20