aws lunch and learn - agile development

Post on 08-Sep-2014

843 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

AWS Lunch and Learn - Lean and Agile Development

TRANSCRIPT

Lean & Agile Development Approaches

Markku Lepistö

Principal Technology Evangelist @markkulepisto

IDEA%!%

Fail%Fast%

Fail%Cheap%

Fail%Forward%

Scale%Success%

Validate%Idea%

Minimum%Viable%Product%(MVP)%

•  Release%quickly%•  Limited%core%features%

•  Iterate%in%producFon%•  Business%decisions%based%on%data%%

“Produc(on*is*truly*the*only*place**you*can*validate*your*code”*

H%Michael%Nygard,%author%of%‘Release%it!’%

%

ApplicaFon%Architecture%

for%MVP’s%Core%Features%

Tightly%Coupled,%Monolithic%(monster)%

Decomposed%to%Services%

Decomposed%to%Services%

Decomposed%to%Services%

Define%Your%MVP’s%Building%Blocks%

Define%Your%MVP’s%Building%Blocks%

Microservices*Architecture*

Compute%

Object%Store%

Load%Balancer%

SQL%Database%

IdenFty%&%Access%

Data%Warehouse%

ApplicaFon%Lifecycle%

CDN% RecommendaFon%Engine%

Social%Login%SSO%

BI%AnalyFcs%

Web%Server%

Reverse%Proxy%

My%Second%Cool%Feature%My%Cool%Feature%

Focus%

Focus%on%Your%Core%DifferenFator%

Outsource%UndifferenFaFng%Ones%to%Services%

Amazon%EC2%

Amazon%S3%

ElasFc%Load%Balancing%

Amazon%RDS%

AWS%IAM%

Amazon%RedShi]%

AWS%OpsWorks%

Amazon%CloudFront% EasyRec%

HybridAuth%

JasperSo]%

Puma%

Nginx%

My%Second%Cool%Feature%My%Cool%Feature%

Amazon%Web%Services%

Regions,%Zones%and%Edge%LocaFons%

API$

Regions Availability Zones Edge Locations

Storage%

S3 EBS Glacier Storage Gateway

Foun

datio

n Se

rvice

s$

Networking%

VPC Direct Connect

ELB Route53

Databases

RDS ElastiCache Dynamo RedShift

Content Delivery

CloudFront

Analytics%

DataPipeline EMR Kinesis

EC2

Compute%

WorkSpaces

AWS$Global$Infrastructure$

Depl

oym

ent &

Ma

nage

men

t$IAM Federation

Identity & Access Monitoring

CloudWatch

Deployment & Management

BeanStalk Cloud Formation

OpsWork CloudTrail

AWS$

Global$

Infrastru

cture$Libraries, SDK’s%

Web Console

Interaction%

Human Interaction%

Support

Command Line

AWS$Global$Infrastructure$

Appl

icatio

n Se

rvice

s$

Application Services%

SES SNS SQS Elastic Transcoder

CloudSearch SWF AppStream

Discover%SW%Components%–%AWS%marketplace%

Discover%SW%Components%–%GitHub%

Discover%SW%Components%–%NeclixOSS%

Services%are%Black%Boxes%Exposed%via%APIs%

My%Cool%Feature%

Iterate,%even%reH

write%internal%

implementaFon%

API%is%stable,%with%few%

changes,%potenFally%

versioning%

API%

Loose%Coupling%Enables%ScaleHout%and%Resiliency%

Use%Message%Queues%

Loose%Coupling%Enables%ScaleHout%and%Resiliency%

Use%Message%Queues%

Simple%Queue%Service%

(SQS)%

Loose%Coupling%Enables%ScaleHout%and%Resiliency%

Use%Idempotent%Interfaces%

Loose%Coupling%Enables%ScaleHout%and%Resiliency%

Use%Circuit%Breakers%

Loose%Coupling%Enables%ScaleHout%and%Resiliency%

Use%Circuit%Breakers%

Temporarily%bypass%

unresponsive%service.%

Switch%to%degraded%

mode%transacFons%

Auto%Scale,%Load%Balance,%Monitor,%HA%Assure%

Each%Service%Separately%

Statelessness%Enables%ScaleHout%

Separate%State%and%Data%from%Compute%Instances%

Load%Balanced,%Auto%Scaling%

pool%of%EC2%Workers%

Scalable%Services%for%

State%and%Data%

ElastiCache DynamoDB S3

Amazon%DynamoDB%

Zero%Admin%NoSQL%Service%

Unlimited%Storage%

Provisioned%Throughput%

<10ms%response%Fme%

Durable%on%SSD%

CloudHSOA%

S

O

A

•  CloudHnaFve%New%ApplicaFons%•  SOA%principles%leveraging%Cloud%services%•  Architect%for%

–  AutomaFon%

–  Scale%–  Cost%–  Availability%–  Data%

•  ApplicaFons%are%%–  AlwaysHon%–  SelfHhealing%–  AnFHfragile%

Implemented%by%TwoHPizza%Teams%

•  Small,%autonomous%teams%

•  Full%responsibility%for%Service%X%•  Decoupled%launch%schedules%•  No%handovers%•  Trust%%

Puing%It%All%Together%into%a%SoluFon%

Puing%It%All%Together%into%a%SoluFon%

Puing%It%All%Together%into%a%SoluFon%

Puing%It%All%Together%into%a%SoluFon%

=$

Programmable%Placorm%

If%you%can%program%it%

You%can%automate%it%

AWS%SDKs%

Java%SDK%

…!res = ec2.runInstances new RunInstancesRequest([!

!imageId: "ami-00754474", !!keyName: ”MyKeyPair", !!instanceType: ”m3.medium", !!securityGroups: [”MySecurityGroup"],!!minCount: 1,!!maxCount: 1,!!userData:!!"AWSWeb.war".bytes.encodeBase64().toString()!!])!

…!!

Unified%Command%Line%Interface%

~ $ aws ec2 run-instances --image-id ami-554ac83c --min-count 1

--max-count 1 --key-name MyKeyPair --security-groups MySecurityGroup

AMI$AMI$AMI$

YOUR$CODE$

CORE$SERVICES$

3rd$PARTY$

LIBRARIES$

OPERATING$SYSTEM$

YOUR$CODE$

CORE$SERVICES$

3rd$PARTY$

LIBRARIES$

OPERATING$SYSTEM$

YOUR$CODE$

CORE$SERVICES$

3rd$PARTY$

LIBRARIES$

OPERATING$SYSTEM$

PreHbaked%Image% Base%OS%Image%+%OrchestraFon%%

3rd%Party%ConfiguraFon%Mgmt%&%OrchestraFon%Tools%

AWS$OpsWorks$ AWS$CloudFormaHon$

AWS$ElasHc$Beanstalk$

DevOps$framework$for$

applicaHon$lifecycle$

management$and$

automaHon$

Templates$to$deploy$&$

update$infrastructure$

as$code$

Automated%resource$

management$–$web$

apps$made$easy$

DIY$/$$On$Demand$

DIY,$on$demand$

resources:$EC2,$S3,$

custom$AMI’s,$etc.$

Control Convenience

AWS%Services%for%ApplicaFon%Lifecycle%Management%

CloudFormaFon%

Template%

SOURCE CODE REPOSITORY

DNS

CONTINUOUS INTEGRATION SERVER

PROJECT MANAGEMENT SERVER

BUILDS

DATABASE

STORAGE

CLOUDFORMATION TEMPLATE

BUILD + DB SNAPSHOT

Application Versions + Infrastructure Versions

ApplicaFon%Your%Code%

Infrastructure%

To%Run%and%Support%Your%Code%

Deliver%ConFnuously%

•  Infrastructure%as%Code%– Everything%now%programmable%

– App%=%code%+%infrastructure%descripFon%–  In%version%control%

•  Full%test%automaFon%

•  Frequent%small%risk%&%size%builds%

•  Successful%builds%to%producFon%

test%

ConFnuous%IntegraFon%

code% build%plan%

Agile%Development%

Source%hop://www.collab.net%

deploy% operate%

collaboraFon%

value%

DevOps%

release%

ConFnuous%Delivery%

Go%Global%–%in%Minutes%

•  Launch%in%a%test%market%

•  A/B%TesFng%•  Collect%all%logs%•  AnalyFcs%!%Insights%!%Iterate%

%

Once%you%hit%the%sweet%spot%–%

•  Replicate%the%applicaFon%to%all%regions%

Measure%&%Log%Everything%

Amazon%CloudWatch%

COLLECT%|%%STORE%%|%ANALYZE%|%SHARE%

Import%Export%

Glacier%

S3% EC2%

Redshi]%DynamoDB%%

EMR%

Data%Pipeline%

S3%Direct%Connect%

Leverage%AWS%Big%Data%Services%

CloudFront%

Kinesis%

Keep%IteraFng%

Keep%InnovaFng%

«%Want%to%increase%innovaFon?%

Lower$the$cost$of$failure$»%

$

Joi%Ito%

MIT%MediaLabs%

Fail%Fast%&%Cheap%H%Scale%Success%

Experiment$

OXen$

$

Fail$quickly$at$a$

low$cost$

$

More$

InnovaHon$

Experiment$

Infrequently$

$

Failure$is$

expensive$

$

Less$InnovaHon$

ONZPREMISE$

SHOW$ME$ALREADY$!$

DEMOS%

1.  AWS%ElasFc%Beanstalk% %% %Deploy%to%ProducFon%using%Git%

2.  AWS%CloudFormaFon% %% %Upgrade%a%Deployed%Template%%

3.  AWS%SDK%for%Ruby% % %Control%EC2,%S3%&%RDS%

Thank%you%

Markku%Lepistö%–%Principal%Technology%Evangelist%

@markkulepisto%

top related