Continuous Integration & Scalable Application Deployments on AWS Cloud - With David Nedved @ITOCAustralia


Published on

Slides from my talk at our 2013 July Amazon Web Services, Brisbane (Queensland, Australia) User-group.

This time I return to give you a run down on using Amazon's EC2 to deploy continuous integration & scalable & automated build processes leveraging the AWS API to help save resources, costs, and most importantly accelerate your innovation to the next level!

Published in: Technology
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Continuous Integration & Scalable Application Deployments on AWS Cloud - With David Nedved @ITOCAustralia

  1. 1. Continuous Integration & Scalable Application Deployments On the Cloud
  2. 2. Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. What is continuous integration? ● Integrate changes at least daily ● Solve problems quickly ○ You don't need a whole team to do a single deploy... ○ Less time debugging & more time innovating new features! ● More than a process ○ Make builds "self test" ○ Automate whole process ○ Maintain single repository Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove.
  3. 3. There are many CI-Deploy tools (servers) out there that can be scripted to leverage the AWS API - Some are SAAS, some self-hosted, and some open source... Build & Deploy Tools Often there is no "one-size-fits-all" for CI due to application specific requirements. Thanks to the AWS API that gap is rapidly shrinking!
  4. 4. ... Please excuse my photoshop skills Simple CI Process & Deployment David Nedved - 2013
  5. 5. Traditional app Architect, Dev, Test, UA, Deploy, Admin, (and so on) team... Lean dev team, CI & the AWS Cloud takes care of the rest... SME Use Case: Wynbox Your Enterprise or Growing SME
  6. 6. ● Integration with Source Control Systems (Atlassian Stash) ● Integration with Build Tools (Atlassian Bamboo + Scala SBT) ● Integration with Project Management Tools (Atlassian Jira) ● Metrics/notifications collection, build statuses etc (via bamboo) ● Ability to deploy to automated, scalable, HA environment using AWS API. ○ Zero down time ○ High volume transactional system (payment processing) meaning no service interruptions ○ Ability to roll back and forward build versions What they wanted.. Spend time to utilise the AWS API's with your tools/application properly and you will be rewarded in days to come...
  7. 7. How it works (in a nutshell) Build Server Creates New AMI (v2.0) BLD v1.0 AMI v2.0 AMI Scalable DynamoDB Backend v1.0 v2.0 DNS Cloudwatch Auto- scales each AMI v1 v1 v2 v2 David Nedved - 2013 base img base img 1. Bamboo takes code from repo, performs test/ua (selenium). 2. Code is placed on "base img" which is then turned into an AMI. 3. New AMI is deployed behind a new auto-scaling ELB and pre- warms instances. 4. Route53 points app to the new ELB (running v2 AMI) which begins to serve application requests. 5. v1 application stack terminates on instances once all requests have finished processing, v2 application is now running and can auto-scale to accommodate application load... ● TTL on Route53 is generally set to 60 sec. ● Application can be rolled back to old AMI (whole instance) version. ● Provides true 99.99~ uptime guarantee, faster innovation & less room for human error as oppose to manually deploying! ● Model displayed here can be obviously deployed as often as you like! AZ-1 AZ-2 AZ-1 AZ-2
  8. 8. A/B Testing?
  9. 9. A/B Testing?
  10. 10. A/B Testing?
  11. 11. A/B Testing?
  12. 12. A/B Testing?
  13. 13. A/B Testing?
  14. 14. A/B Testing?
  15. 15. A/B Testing?
  16. 16. A/B Testing?
  17. 17. Many ways to scale & test! There are many ways to scale your CI on AWS using their APIs. The Wynbox example uses multiple ELB's so that another layer of automated "testing" can be performed before the application is officially rolled out.. (final-stage load testing & dr testing etc). For example A/B testing can be rolled out using similar methods to select customers, UA testing could be performed in a "real world environment" before cutting over, the list goes on.... You could run Chaos Monkey as part of your standard deploy tests.
  18. 18. Questions, Beer & Thank You! Email: Deploying HA Applications on: