The document discusses agile development in the cloud. It defines agile and cloud characteristics and describes how automated testing, continuous integration, infrastructure as code, and continuous delivery enable fast and reliable software delivery. These practices allow for rapid feedback, deployment to elastic cloud infrastructure on a pay-as-you-go basis, and production-ready software with each change.
10. Parallel test
execution
…
EC2 EC2 EC2
def run_tests_in_parallel
create :n ec2 instances
run test across :n ec2 instances
destroy :n ec2 instances
end
28. AWS CloudFormation gives developers and systems
administrators an easy way to create and manage a
collection of related AWS resources, provisioning and
updating them in an orderly and predictable fashion.
29. Instances
Cloud
formation
Template
{{Save in Version Control}}
30. Puppet is IT automation software that helps
system administrators manage infrastructure
throughout its lifecycle, from provisioning and
configuration to patch management and
compliance.
31. class ntp {
package { "ntp":
ensure => installed
}
service { "ntp":
ensure => running,
}
}
34. production – ready software
Fast, automated feedback on the production
readiness of your applications every time
there is a change - to code, infrastructure, or
configuration
37. conclusion
Automated testing
Managed hosting and services
Continuous Integration
Elastic computing and storage
Infrastructure as code
Pay-as-you-go pricing model
Continuous Delivery
38. conclusion
Automated testing
Managed hosting and services
Continuous Integration
Elastic computing and storage
Infrastructure as code
Pay-as-you-go pricing model
Continuous Delivery
39. conclusion
Automated testing
Managed hosting and services
Continuous Integration
Elastic computing and storage
Infrastructure as code
Pay-as-you-go pricing model
Continuous Delivery
40. conclusion
Automated testing
Managed hosting and services
Continuous Integration
Elastic computing and storage
Infrastructure as code
Pay-as-you-go pricing model
Continuous Delivery
41. conclusion
Automated testing
Managed hosting and services
Continuous Integration
Elastic computing and storage
Infrastructure as code
Pay-as-you-go pricing model
Continuous Delivery
Notas del editor
Welcome everyone. Thank you for your attendance today as Joe and I get to talk about Agile in the Cloud. And Joe, I think we should congratulate ourselves with the fact that we’ve managed to use two of the most nebulous and ill-defined terms in computing together in the title. I think we could talk about pretty much anything to do with IT and be able to defend it as being somehow related to Agile and/or the Cloud... it’s a shame we didn’t get a chance to work Big Data into the title as well :-)
Automated testing is one of the cornerstone practices of all Agile engineering teams. Many of the more advanced practices become difficult if not impossible to perform adequately without having the safety net of a fast running automated test suite.Agile teams crave fast feedback on the work they are doing and want to have confidence that they can improve existing code without fear of introducing regression problems into the codebase: the appropriate use of automated testing addresses all of these issues. And modern development languages and platforms have mature automated testing tools and frameworks available to them. [so?!?]However, many teams still take a manual approach to the bulk of their testing, even when computers are far better at this repetitive, repeatable, detail-oriented type of work. There will always be a place for manual testing for most pieces of software, but this type of work should be concentrated on those aspects of applications which are truly difficult to test. Invest in automated testing to free up your precious testing people to focus on just testing those crucially difficult-to-automate areas.
And there are many different types of testing which can be freely automated. In fact, some types of testing can only be done in an automated fashion.This diagram is from noted Agile tester, Brian Marick, and is breaks common types of testing that Agile teams do into 4 quadrants... I like this diagram because it does a good job of identifying lots of different types of testing that teams do, but also gives an opinion on what types of tests are best suited to automation or manual testing.
Amazon provides instances on demand, so for parallel execution of tests, we can bring up instances , run tests and shut down instances when done.
Have CI on the cloud gives us an ability to add / remove build agents with different configuration. It comes handy when we have to run functional test on different OS.