22
CCP-EN © 2015 ZHAW / InIT Zurich University of Applied Sciences Presenter: Sandro Brunner e-mail: [email protected] Cloud-Native Application Design

Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Zurich University of Applied Sciences

Presenter: Sandro Brunnere-mail: [email protected]

Cloud-Native Application Design

Page 2: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

ICCLab

Part of InIT - Institute of Applied Information Technology

Research Lab at ZHAW in Winterthur CH

Currently 25 Researchers

Page 3: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

ICCLab - Research Topics● Research Themes

o Energy Efficiency in Cloud Computingo Infrastructure as a Service (IaaS)o Platform as a Service (PaaS)

● Research Initiativeso Cloud Dependability and High Availabilityo Cloud Incident Managemento Cloud Orchestrationo Cloud Storageo Cloud-Native Applicationso Distributed Computing in the Cloudo Energy Aware Cloud Load Managemento PaaS on OpenStacko Rating – Charging – Billingo Software Defined Networking for Cloudso Understanding Cloud Energy Consumption

Page 4: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Cloud-Native Application

What is a Cloud-Native Application?Application optimized to run in the cloud. Takes advantage and considers the drawbacks of the cloud-environment.

Main Characteristics of a Cloud-Native ApplicationScalabilty & Resilience

Also possible to get there by migrating an already existing application.

Page 5: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Motivation

Exploiting Benefits of Cloud Computing● Obtain IT-Resources on Demand (Compute, Storage, Network)● Pay-as-you-go Pricing-Model → No upfront costs● Speeding-Up Development / Deployment Cycle● Transfer responsibility of operating infrastructure● ...

Can be boiled down to economical reasons/benefits → Reduce Costs through Technology→ Improve Time-To-Market through Technology

Page 6: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

NFV vs Cloud-Native Applications I

Specialized HW

Specialized OS

NF

HW

OS

VM VM

OS OS

NF NF

Hosting (e.g.: Cloud)

Application

Page 7: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

NFV vs Cloud-Native Applications II

Specialized HW

OS

Application

HW

OS

VM

OS

App App

Hosting in Cloud

Application (Instances)

Con

tain

er

Page 8: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Designing a Cloud-Native Application

Example: Simple Web-Application Web Server

App Server

DatabaseApp

licat

ion

Application-Session-State

: Welcome Back, John Doe: Contents of Shopping Cart

Page 9: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Example: Simple Web-Application Web Server

App Server

DatabaseApp

licat

ion

Application-Session-State

: Welcome Back, John Doe: Contents of Shopping Cart

Too much load for current configuration

→ Naive Solution: Scale Up / Get Bigger Machine

Designing a Cloud-Native Application

Page 10: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Example: Simple Web-Application Web Server

App Server

DatabaseApp

licat

ion

Application-Session-State

: Welcome Back, John Doe: Contents of Shopping Cart

Application-Session-State

Too much load for current configuration

→ Naive Solution: Scale Up / Get Bigger Machine

Designing a Cloud-Native Application

Page 11: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Example: Simple Web-Application Web Server

App Server

DatabaseApp

licat

ion

Application-Session-State

: Welcome Back, John Doe: Contents of Shopping Cart

Application

-Session-State

Are resources really optimally used?What if the application crashes?Vertical scaling is limited.

→ Vertical scaling is not optimal solution

Designing a Cloud-Native Application

Page 12: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Web Server

App Server

DatabaseApp

licat

ion

Application-Session-State

Better Solution: Horizontal Scaling→ Resources used more efficiently→ No over- or underprovisioning of resources

Application-Session-State

Application-Session-State

Application-Session-State

Load Balancer

Designing a Cloud-Native Application

Page 13: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Web Server

App Server

DatabaseApp

licat

ion

Application-Session-State

Application-Session-State

Application-Session-State

Application-Session-State

Load Balancer

Beware!→ Save state outside of component!→ Failure of component should not influence the rest of the system

Designing a Cloud-Native Application

Page 14: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Web Server

App Server

DatabaseApp

licat

ion

Load Balancer

ApplicationApplication

ApplicationState

Designing a Cloud-Native Application

Page 15: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Web Server

App Server

DatabaseApp

licat

ionNext Step: Automate Scaling

- Need to know “what’s going on”Resource Usage, Response Times, …

- Need to be able to take actions accordingly

Load Balancer

ApplicationApplication

ApplicationState

Designing a Cloud-Native Application

Page 16: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Web Server

App Server

DatabaseApp

licat

ionNext Step: Automate Scaling

- Need to know “what’s going on”Resource Usage, Response Times, …

- Need to be able to take actions accordingly

Load Balancer

ApplicationApplication

ApplicationState

Monitoring System Logs

→ Monitoring System:- Monitor Systems + Applications - Collect / Aggregate Logs

Designing a Cloud-Native Application

Page 17: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Web Server

App Server

DatabaseApp

licat

ionNext Step: Automate Scaling

- Need to know “what’s going on”Resource Usage, Response Times, …

- Need to be able to take actions accordingly

Load Balancer

ApplicationApplication

ApplicationState

Monitoring System Logs

→ Monitoring System:- Monitor Systems + Applications - Collect / Aggregate Logs

→ Management System:- Input from Monitoring System- Able to scale system up or down

Management System

Designing a Cloud-Native Application

Page 18: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Summary Cloud-Native Applications

Cloud-Native Applications should be:Scalable: Run as economically efficient as possibleResilient: Expect Failure / Infrastructure uses Commodity Hardware

Components of Cloud-Native Applications should be:Stateless: Outage of a single component should not compromise the whole systemScalable & Resilient

Cloud-Native Applications are:A composition of a variety of services (Application, Monitoring, Management)Distributed SystemsComplex

Page 19: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

How to Build Cloud-Native Applications

Loads of problems already encountered and solved

Design Patterns for Cloud-Native Applications→ Circuit Breaker, Valet Key, Bulkhead, Retry

Services offered by Cloud Vendor (Amazon, Google, Microsoft)

Open Source Libraries / Frameworks:→ Netflix OSS – e.g.: Hystrix, Ribbon, Chaos Monkey, etc.→ Twitter – Zipkin, Snowflake, Finagle, Mesos→ Spring Cloud

Open Source Tools→ Caches, Key-Value Stores, Webserver, Load-Balancer, Messaging/Queuing Systems, Service Registries, Configuration Management, Monitoring/Log Data Collection & Analysis, Load/Performance Tester

Page 20: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Questions

Page 21: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

LinksICCLab:

• http://blog.zhaw.ch/icclab/

Cloud-Native Applications Initiative:• http://blog.zhaw.ch/icclab/category/research-approach/themes/cloud-native-applications/

ZHAW InIT• http://init.zhaw.ch/en/engineering/institutes-centres/institute-of-applied-information-technology.html

Page 22: Cloud-Native Application Design - ZHAW Blogsblog.zhaw.ch/icclab/files/2015/03/KuVS-NGSDP... · o Cloud Incident Management o Cloud Orchestration o Cloud Storage o Cloud-Native Applications

CCP-EN © 2015 ZHAW / InIT

Links IIAdditional Resources

Book: Cloud Design PatternsLibraries: Netflix OSS, Twitter Open Source, Spring CloudCaches / Key-Value Stores: Memcached, redis, etcd, Apache ZookeeperDBs: Druid, Apache Cassandra, InfluxDBWebserver / Proxys: Apache HTTP Server, nginx, HAProxyMessaging/Queuing Systems: RabbitMQ, Apache Kafka, Queues.IO, beanstalkd, ejabberdConfiguration Management Tools: cdist, Chef, PuppetMonitoring / Log Data Collection & Analysis: Zabbix, nagios, New Relic, Loggly, fluentd, logplex,

Elasticsearch, logstash, kibana, SensuLoad/Performance Tester: loader.io, Jmeter, stress, Tsung, httperfVarious: Hystrix, Graphite, Jenkins, CloudFlare, Varnish, PgBouncer, Gearman, Quartz