Cloud Patterns Beuth Hochschule

61
CLOUD ARCHITECTURE Sascha Möllering | zanox AG

Transcript of Cloud Patterns Beuth Hochschule

Page 1: Cloud Patterns Beuth Hochschule

CLOUD ARCHITECTURESascha Möllering | zanox AG

Page 2: Cloud Patterns Beuth Hochschule

Sascha Möllering

[email protected]

Lead Engineer / DevOps Hipster

zanox AG

http://autoscaling.io

@sascha242

ABOUT ME

Page 3: Cloud Patterns Beuth Hochschule

JAVA MAGAZIN 11.14

ARCHITEKTUR IM KONTEXT DER CLOUD: PATTERNS UND BEST

PRACTICES

AWS VIRTUAL CLOUD SUMMIT

CONTINUOUS DELIVERY IN AWS USING DOCKER

ENTWICKLER SPEZIAL: DOCKER

ÜBER DEN WOLKEN: EIN ERFAHRUNGSBERICHT ZUM DOCKER-

EINSATZ IN DER AMAZON CLOUD

ABOUT ME

Page 4: Cloud Patterns Beuth Hochschule

AGENDA

●AWS Overview

●Creating a cloud service

●Real World example

●Cloud deployment

●Q&A

Page 5: Cloud Patterns Beuth Hochschule

HOW CAN WE SCALE?

Page 6: Cloud Patterns Beuth Hochschule

HOW CAN WE SCALE?

Page 7: Cloud Patterns Beuth Hochschule

AWS OVERVIEW

RegionUS-WEST (N. California) EU-WEST (Ireland)

ASIA PAC

(Tokyo)

ASIA PAC

(Singapore)

US-WEST (Oregon)

SOUTH AMERICA (Sao

Paulo)

US-EAST (Virginia)

GOV CLOUD

ASIA PAC

(Sydney)

EU-CENTRAL (Frankfurt)

Page 8: Cloud Patterns Beuth Hochschule

AWS OVERVIEW

Availability

Zone

Page 9: Cloud Patterns Beuth Hochschule

AWS OVERVIEW

EC2: Resizable compute capacity

AutoScaling: scale up or down

Route 53: Domain Name System

ELB: Load Balancing

Elastic IP: Static IP address

Page 10: Cloud Patterns Beuth Hochschule

AWS OVERVIEW

RDS: Managed database service

DynamoDB: NoSQL implementation

Redshift: data warehouse solution

ElastiCache: Managed cache

Kinesis: Service for streaming data

Page 11: Cloud Patterns Beuth Hochschule

AWS OVERVIEW

S3: Highly-scalable object storage

CloudFront: CDN implementation

CloudWatch: Monitoring service

IAM: Identity and Access Management

EMR: Managed Hadoop

Page 12: Cloud Patterns Beuth Hochschule

STARTING POINT

●How can we leverage the Cloud?

●Our application:

● Simple Java based web application

● One application

● One database

● Runs in our own DC

Page 13: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Initial setup:

●Route53 for DNS

●One Elastic IP (static IPs for the Cloud)

●One EC2 instance

● Web Application

● Database

●One AZ

Page 14: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

Availability Zone

Page 15: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Simple approach to scale:

●More RAM

●More CPU power

●More IOPS

●Different EC2 instance type

●Approach will hit a barrier

Page 16: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Problems:

●No failover

●No redundancy

●Database and application on one instance

●Does not scale very well

Page 17: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Separate Web Application from DB

●One EC2 instance for the Web Application

●One EC2 instance for the DB

●Or: Managed DB service (RDS)

●One AZ

Page 18: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

Availability Zone

Database

Page 19: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Problems:

●No failover

●No redundancy

●Does still not scale very well

Page 20: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Add an ELB

●Add EC2 instance for Web Application

●Different AZs

●Standby DB instance

●Multi AZ setup in RDS

Page 21: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

Page 22: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

Availability Zone

Database

Availability Zone

Database

Page 23: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Problems:

●Still limited scaling capabilities

● If one EC2 instance crashes, 50% less

capability

Page 24: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Add additional EC2 instances

●Add read replicas in RDS

Page 25: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

Availability Zone

Database

Availability Zone

Database

Page 26: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Problems:

●Naive implementation

●Does not leverage AWS services

●Limited scaling

●Can be quite expensive

Page 27: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Refactoring

●Introduce caches to take load from DB

●Use S3 and CloudFront to ship static

content

●Store session data in DynamoDB

●Add Autoscaling

Page 28: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Autoscaling

●Automatic resizing of compute clusters based

on demand

● Integrated to Amazon CloudWatch

●Maximum and minimum pool sizes

●Autoscaling policies triggered by CloudWatch

alarms

Page 29: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

Availability Zone

Auto Scaling

group

Page 30: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Started with a simple web application

●Added several Amazon services

●Managed to shift load from application to

services

●Added caches and CDN

●Added Autoscaling

Page 31: Cloud Patterns Beuth Hochschule

CREATING A CLOUD SERVICE

●Next steps:

●SOA

●Loose coupling: decouple interactions

●Amazon services, don‘t reinvent the wheel

●Database federation

●Database sharding

Page 32: Cloud Patterns Beuth Hochschule

REAL WORLD EXAMPLE

●Elastic architecture that grows and shrinks

●Multiple AZs

●Use case: streaming data

●Decoupling using Kinesis

● IAM Roles for managing credentials

●CloudWatch for monitoring

Page 33: Cloud Patterns Beuth Hochschule

Internet

Auto Scaling group

Auto Scaling group

Availability Zone

Availability Zone

ARCHITECTURE

Page 34: Cloud Patterns Beuth Hochschule

ARCHITECTURE

Page 35: Cloud Patterns Beuth Hochschule

“Vert.x is a lightweight, high performance application

platform for the JVM that's designed for modern

mobile, web, and enterprise applications.”

Vert.x

Page 36: Cloud Patterns Beuth Hochschule

ARCHITECTURE

●Main framework Vert.x

●mod-kinesis (Kinesis-Adapter for Vert.x)

●AWS Java SDK

● IAM roles for Amazon EC2 instances

●Coda Hale metrics and CloudWatch reporter

●Jedis (Redis client for Java)

●…

Page 37: Cloud Patterns Beuth Hochschule

DEPLOYMENT

WorkstationGitHub

Jenkins

Python/Fabric

Nexus

Datacenter

Artefakt

Page 38: Cloud Patterns Beuth Hochschule
Page 39: Cloud Patterns Beuth Hochschule

DEPLOYMENT

EC2 instance with Docker

registry (port 5000)

S3 bucket to store

Docker images

Page 40: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Amazon Cloud

WorkstationGitHub

Jenkins

Python/Boto

Docker Image

Docker Registry S3 bucket with

Docker Images

Page 41: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 42: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 43: Cloud Patterns Beuth Hochschule

EC2 INSTANCES AND ELB

python start_docker_instance.py \

-r <myregistry>:5000 \

-i tracking-ppv \

-t 95 \

-q 2 \

-s quality \

-d '-d -p 8080:8080'

https://github.com/SaschaMoellering/aws-docker-

scripts

Page 44: Cloud Patterns Beuth Hochschule

EC2 INSTANCES AND ELB

python start_elb.py \

-r <myregistry>:5000 \

-i tracking-ppv \

-t 95 \

-s quality \

-d '-d -p 8080:8080'

https://github.com/SaschaMoellering/aws-docker-

scripts

Page 45: Cloud Patterns Beuth Hochschule

EC2 INSTANCES AND ELB

Page 46: Cloud Patterns Beuth Hochschule

EC2 INSTANCES AND ELB

Page 47: Cloud Patterns Beuth Hochschule

DEPLOYMENT

●Amazon EC2 Container Service (ECS):

●Container management service

● Fast

●Highly scalable

●Supports Docker

Page 48: Cloud Patterns Beuth Hochschule

DEPLOYMENT

●Cluster

●Container Instance

●Task Definition

●Task

●Container

Page 49: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 50: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 51: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 52: Cloud Patterns Beuth Hochschule

DEPLOYMENT

#!/bin/bash

echo ECS_CLUSTER = \

your_cluster_name >> \

/etc/ecs/ecs.config

Page 53: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 54: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 55: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 56: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 57: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 58: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 59: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 60: Cloud Patterns Beuth Hochschule

DEPLOYMENT

Page 61: Cloud Patterns Beuth Hochschule