aws lunch and learn - agile development

65
Lean & Agile Development Approaches Markku Lepistö Principal Technology Evangelist @markkulepisto

Upload: amazon-web-services

Post on 08-Sep-2014

843 views

Category:

Technology


4 download

DESCRIPTION

AWS Lunch and Learn - Lean and Agile Development

TRANSCRIPT

Page 1: AWS Lunch and Learn - Agile Development

Lean & Agile Development Approaches

Markku Lepistö

Principal Technology Evangelist @markkulepisto

Page 2: AWS Lunch and Learn - Agile Development

IDEA%!%

Page 3: AWS Lunch and Learn - Agile Development

Fail%Fast%

Fail%Cheap%

Fail%Forward%

Page 4: AWS Lunch and Learn - Agile Development

Scale%Success%

Page 5: AWS Lunch and Learn - Agile Development

Validate%Idea%

Page 6: AWS Lunch and Learn - Agile Development

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!’%

%

Page 7: AWS Lunch and Learn - Agile Development

ApplicaFon%Architecture%

for%MVP’s%Core%Features%

Page 8: AWS Lunch and Learn - Agile Development

Tightly%Coupled,%Monolithic%(monster)%

Page 9: AWS Lunch and Learn - Agile Development

Decomposed%to%Services%

Page 10: AWS Lunch and Learn - Agile Development

Decomposed%to%Services%

Page 11: AWS Lunch and Learn - Agile Development

Decomposed%to%Services%

Page 12: AWS Lunch and Learn - Agile Development

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

Page 13: AWS Lunch and Learn - Agile Development

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%

Page 14: AWS Lunch and Learn - Agile Development

Focus%

Page 15: AWS Lunch and Learn - Agile Development

Focus%on%Your%Core%DifferenFator%

Page 16: AWS Lunch and Learn - Agile Development

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%

Page 17: AWS Lunch and Learn - Agile Development

Amazon%Web%Services%

Page 18: AWS Lunch and Learn - Agile Development

Regions,%Zones%and%Edge%LocaFons%

Page 19: AWS Lunch and Learn - Agile Development

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

Page 20: AWS Lunch and Learn - Agile Development

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

Page 21: AWS Lunch and Learn - Agile Development

Discover%SW%Components%–%GitHub%

Page 22: AWS Lunch and Learn - Agile Development

Discover%SW%Components%–%NeclixOSS%

Page 23: AWS Lunch and Learn - Agile Development

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%

Page 24: AWS Lunch and Learn - Agile Development

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

Use%Message%Queues%

Page 25: AWS Lunch and Learn - Agile Development

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

Use%Message%Queues%

Simple%Queue%Service%

(SQS)%

Page 26: AWS Lunch and Learn - Agile Development

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

Use%Idempotent%Interfaces%

Page 27: AWS Lunch and Learn - Agile Development

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

Use%Circuit%Breakers%

Page 28: AWS Lunch and Learn - Agile Development

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

Use%Circuit%Breakers%

Temporarily%bypass%

unresponsive%service.%

Switch%to%degraded%

mode%transacFons%

Page 29: AWS Lunch and Learn - Agile Development

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

Each%Service%Separately%

Page 30: AWS Lunch and Learn - Agile Development

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

Page 31: AWS Lunch and Learn - Agile Development

Amazon%DynamoDB%

Zero%Admin%NoSQL%Service%

Unlimited%Storage%

Provisioned%Throughput%

<10ms%response%Fme%

Durable%on%SSD%

Page 32: AWS Lunch and Learn - Agile Development

CloudHSOA%

S

O

A

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

–  AutomaFon%

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

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

Page 33: AWS Lunch and Learn - Agile Development

Implemented%by%TwoHPizza%Teams%

•  Small,%autonomous%teams%

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

Page 34: AWS Lunch and Learn - Agile Development

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

Page 35: AWS Lunch and Learn - Agile Development

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

Page 36: AWS Lunch and Learn - Agile Development

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

Page 37: AWS Lunch and Learn - Agile Development

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

Page 38: AWS Lunch and Learn - Agile Development
Page 39: AWS Lunch and Learn - Agile Development

=$

Programmable%Placorm%

Page 40: AWS Lunch and Learn - Agile Development

If%you%can%program%it%

You%can%automate%it%

Page 41: AWS Lunch and Learn - Agile Development

AWS%SDKs%

Page 42: AWS Lunch and Learn - Agile Development

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()!!])!

…!!

Page 43: AWS Lunch and Learn - Agile Development

Unified%Command%Line%Interface%

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

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

Page 44: AWS Lunch and Learn - Agile Development
Page 45: AWS Lunch and Learn - Agile Development

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%%

Page 46: AWS Lunch and Learn - Agile Development

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

Page 47: AWS Lunch and Learn - Agile Development

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%

Page 48: AWS Lunch and Learn - Agile Development

CloudFormaFon%

Template%

Page 49: AWS Lunch and Learn - Agile Development
Page 50: AWS Lunch and Learn - Agile Development

SOURCE CODE REPOSITORY

DNS

CONTINUOUS INTEGRATION SERVER

PROJECT MANAGEMENT SERVER

BUILDS

DATABASE

STORAGE

Page 51: AWS Lunch and Learn - Agile Development

CLOUDFORMATION TEMPLATE

BUILD + DB SNAPSHOT

Page 52: AWS Lunch and Learn - Agile Development

Application Versions + Infrastructure Versions

ApplicaFon%Your%Code%

Infrastructure%

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

Page 53: AWS Lunch and Learn - Agile Development

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%

Page 54: AWS Lunch and Learn - Agile Development

test%

ConFnuous%IntegraFon%

code% build%plan%

Agile%Development%

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

deploy% operate%

collaboraFon%

value%

DevOps%

release%

ConFnuous%Delivery%

Page 55: AWS Lunch and Learn - Agile Development

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%

Page 56: AWS Lunch and Learn - Agile Development
Page 57: AWS Lunch and Learn - Agile Development

Measure%&%Log%Everything%

Amazon%CloudWatch%

Page 58: AWS Lunch and Learn - Agile Development

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

Import%Export%

Glacier%

S3% EC2%

Redshi]%DynamoDB%%

EMR%

Data%Pipeline%

S3%Direct%Connect%

Leverage%AWS%Big%Data%Services%

CloudFront%

Kinesis%

Page 59: AWS Lunch and Learn - Agile Development

Keep%IteraFng%

Page 60: AWS Lunch and Learn - Agile Development

Keep%InnovaFng%

Page 61: AWS Lunch and Learn - Agile Development

«%Want%to%increase%innovaFon?%

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

$

Joi%Ito%

MIT%MediaLabs%

Page 62: AWS Lunch and Learn - Agile Development

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

Experiment$

OXen$

$

Fail$quickly$at$a$

low$cost$

$

More$

InnovaHon$

Experiment$

Infrequently$

$

Failure$is$

expensive$

$

Less$InnovaHon$

ONZPREMISE$

Page 63: AWS Lunch and Learn - Agile Development

SHOW$ME$ALREADY$!$

Page 64: AWS Lunch and Learn - Agile Development

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%

Page 65: AWS Lunch and Learn - Agile Development

Thank%you%

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

@markkulepisto%