• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
 

AWS Lunch and Learn - Agile Development

on

  • 632 views

AWS Lunch and Learn - Lean and Agile Development

AWS Lunch and Learn - Lean and Agile Development

Statistics

Views

Total Views
632
Views on SlideShare
632
Embed Views
0

Actions

Likes
9
Downloads
15
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via SlideShare as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    AWS Lunch and Learn - Agile Development AWS Lunch and Learn - Agile Development Presentation 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 Foundation Services$ Networking% VPC Direct Connect ELB Route53 Databases RDS ElastiCacheDynamo RedShift Content Delivery CloudFront Analytics% DataPipelineEMR Kinesis EC2 Compute% WorkSpaces AWS$Global$Infrastructure$ Deployment& Management$ IAM Federation Identity & AccessMonitoring 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$ Application Services$ 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% ElastiCacheDynamoDBS3
    • 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.$ ControlConvenience 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%