AWS Lunch and Learn - Agile Development

1,515 views

Published on

AWS Lunch and Learn - Lean and Agile Development

Published in: Technology

AWS Lunch and Learn - Agile Development

  1. 1. Lean & Agile Development Approaches Markku Lepistö Principal Technology Evangelist @markkulepisto
  2. 2. IDEA%!%
  3. 3. Fail%Fast% Fail%Cheap% Fail%Forward%
  4. 4. Scale%Success%
  5. 5. Validate%Idea%
  6. 6. 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!’%
  7. 7. ApplicaFon%Architecture% for%MVP’s%Core%Features%
  8. 8. Tightly%Coupled,%Monolithic%(monster)%
  9. 9. Decomposed%to%Services%
  10. 10. Decomposed%to%Services%
  11. 11. Decomposed%to%Services%
  12. 12. Define%Your%MVP’s%Building%Blocks%
  13. 13. 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%
  14. 14. Focus%
  15. 15. Focus%on%Your%Core%DifferenFator%
  16. 16. 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%
  17. 17. Amazon%Web%Services%
  18. 18. Regions,%Zones%and%Edge%LocaFons%
  19. 19. 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
  20. 20. Discover%SW%Components%–%AWS%marketplace%
  21. 21. Discover%SW%Components%–%GitHub%
  22. 22. Discover%SW%Components%–%NeclixOSS%
  23. 23. 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%
  24. 24. Loose%Coupling%Enables%ScaleHout%and%Resiliency% Use%Message%Queues%
  25. 25. Loose%Coupling%Enables%ScaleHout%and%Resiliency% Use%Message%Queues% Simple%Queue%Service% (SQS)%
  26. 26. Loose%Coupling%Enables%ScaleHout%and%Resiliency% Use%Idempotent%Interfaces%
  27. 27. Loose%Coupling%Enables%ScaleHout%and%Resiliency% Use%Circuit%Breakers%
  28. 28. Loose%Coupling%Enables%ScaleHout%and%Resiliency% Use%Circuit%Breakers% Temporarily%bypass% unresponsive%service.% Switch%to%degraded% mode%transacFons%
  29. 29. Auto%Scale,%Load%Balance,%Monitor,%HA%Assure% Each%Service%Separately%
  30. 30. 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
  31. 31. Amazon%DynamoDB% Zero%Admin%NoSQL%Service% Unlimited%Storage% Provisioned%Throughput% <10ms%response%Fme% Durable%on%SSD%
  32. 32. CloudHSOA% S O A •  CloudHnaFve%New%ApplicaFons% •  SOA%principles%leveraging%Cloud%services% •  Architect%for% –  AutomaFon% –  Scale% –  Cost% –  Availability% –  Data% •  ApplicaFons%are%% –  AlwaysHon% –  SelfHhealing% –  AnFHfragile%
  33. 33. Implemented%by%TwoHPizza%Teams% •  Small,%autonomous%teams% •  Full%responsibility%for%Service%X% •  Decoupled%launch%schedules% •  No%handovers% •  Trust% %
  34. 34. Puing%It%All%Together%into%a%SoluFon%
  35. 35. Puing%It%All%Together%into%a%SoluFon%
  36. 36. Puing%It%All%Together%into%a%SoluFon%
  37. 37. Puing%It%All%Together%into%a%SoluFon%
  38. 38. =$ Programmable%Placorm%
  39. 39. If%you%can%program%it% You%can%automate%it%
  40. 40. AWS%SDKs%
  41. 41. 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()! !])! …! !
  42. 42. Unified%Command%Line%Interface% ~ $ aws ec2 run-instances --image-id ami-554ac83c --min-count 1 --max-count 1 --key-name MyKeyPair --security-groups MySecurityGroup
  43. 43. 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%%
  44. 44. 3rd%Party%ConfiguraFon%Mgmt%&%OrchestraFon%Tools%
  45. 45. 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%
  46. 46. CloudFormaFon% Template%
  47. 47. SOURCE CODE REPOSITORY DNS CONTINUOUS INTEGRATION SERVER PROJECT MANAGEMENT SERVER BUILDS DATABASE STORAGE
  48. 48. CLOUDFORMATION TEMPLATE BUILD + DB SNAPSHOT
  49. 49. Application Versions + Infrastructure Versions ApplicaFon% Your%Code% Infrastructure% To%Run%and%Support%Your%Code%
  50. 50. 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%
  51. 51. test% ConFnuous%IntegraFon% code% build%plan% Agile%Development% Source%hop://www.collab.net% deploy% operate% collaboraFon% value% DevOps% release% ConFnuous%Delivery%
  52. 52. 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%
  53. 53. Measure%&%Log%Everything% Amazon%CloudWatch%
  54. 54. COLLECT%|%%STORE%%|%ANALYZE%|%SHARE% Import%Export% Glacier% S3% EC2% Redshi]%DynamoDB%% EMR% Data%Pipeline% S3%Direct%Connect% Leverage%AWS%Big%Data%Services% CloudFront% Kinesis%
  55. 55. Keep%IteraFng%
  56. 56. Keep%InnovaFng%
  57. 57. «%Want%to%increase%innovaFon?% Lower$the$cost$of$failure$»% $ Joi%Ito% MIT%MediaLabs%
  58. 58. Fail%Fast%&%Cheap%H%Scale%Success% Experiment$ OXen$ $ Fail$quickly$at$a$ low$cost$ $ More$ InnovaHon$ Experiment$ Infrequently$ $ Failure$is$ expensive$ $ Less$InnovaHon$ ONZPREMISE$
  59. 59. SHOW$ME$ALREADY$!$
  60. 60. 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%
  61. 61. Thank%you% Markku%Lepistö%–%Principal%Technology%Evangelist% @markkulepisto%

×