Cloud-enabled Development: Putting the Agile into the Infrastructure

1,054 views

Published on

As software development teams seek greater efficiency and effectiveness, they often find that they are held back by old IT architecture for development and test. They wrestle with low-powered servers, difficult-to-scale static environments, and a slow IT provisioning and change processes. Today, software leaders have radically changed the way they build, test, and deploy software—almost exclusively using cloud computing to power their development processes. This presentation provides specifics on which application workloads are ideal for the cloud model and how the use of cloud computing supports Agile development practices.

Published in: Technology, Business
2 Comments
2 Likes
Statistics
Notes
  • Thanks for pointing this out. i actually got this from one of our customers without the source. Slides have been updated.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Only fair to credit Geek&Poke for the cartoon on slide 10. Original is here: http://geekandpoke.typepad.com/geekandpoke/2009/03/simply-explained-part-37-agility.html
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
1,054
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
17
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide
  • May want to take an up front show of hands to tune the presentation for the audience.How many of you are using Agile software development methods?How many of you are using public cloud computing solutions?
  • Your slide. Title says it all.
  • The move to agile development methods continues to increase. I pulled a few samples from the web as one data point to show this. Large number of books and jobs that reference agile software development. The waterfall software development is more of a joke, obviously not a common search. Waterfall is a methodology that was used and continues to be used in some arenas.
  • This is another slide on Agile progress.Sundar pulled this data from VersionOne’s web site which is a company that specializes in Agile development accuracy may be somewhat suspect. I’d cover both these two up front slides fairly quickly assuming the audience is unlikely to disbelieve that this trend is happening.
  • To set the context, describe a traditional software development lifecycle. This is called the “waterfall” method of development as you can see by how it is typically diagramed, as the water runs down the phases. It is characterized by defining requirements up front so you know what you are building, then doing the development, then testing, etc. Typically long development cycles sometimes years. Infrastructure is usually provisioned up front and rarely changes throughout the process. Very hard to react to changing requirements and often projects complete that are way of the mark originally set many month ago.
  • Agile methods on the other hand are characterized by short release cycles focused on solving specific customers problems and delivering software at each iteration. The short cycles (typically weeks) allow teams to quickly react to changing requirements. The focus on delivering smaller, more incremental changes to customers allows teams to get feedback from customers and then quickly iterate. You may also here this method discussed as “iterative development” We use this method at Skytap with “4 week iterations”. Unlike waterfall methods, there is increased pressure using Agile to deploy/ship features and as such there is more likely hood of infrastructure changes being made more frequently than in water fall method.
  • So, if you are using Agile development methods. What does that mean for your infrastructure requirements and for operations of that software? The weakest link in the chain from development to test to operations may become the infrastructure as your teams deliver more features faster.Let’s look at the challenges development teams using agile may face.
  • Development teams face big hurdles when they need new infrastructure. Clearly ordering hardware, having it shipped, unpacked, installed in the racks, and configured can take weeks to months. This is the state of many IT organizations. Projects using waterfall methods can deal with these delays, but not agile development teams. Even companies that are fully virtualized, tend to take 24-48 hours to provision a new virtual machine. On top of all that development/test teams tend to take second priority to keeping the lights on in produtions.Q: How many of you are happy with how quickly your IT organizations deliver new servers?2) The second challenge is in changing/recycling existing hardware. As an application scales and grows, a development team may decide they need to double the CPU or memory for the servers supporting the application. It is not easy nor quick to do this with existing hardware resources.3) Sharing environments is not very practical. If a tester finds a bug and the developer is unable to reproduce it in their own environment, the tester may be stalled as the developer takes over the test environment to troubleshoot. Likewise, creating copies and reproducing replicas of existing environments is not feasible.4) There can be high costs in maintaining dev/test infrastructure. As compute and storage resources grow, maintaining staging environments that closely mirror production can be expensive. A lot of the times these staging environments sit unused. Larger up-front capital expense to start a project. Again for projects that will run for 12+ months this ok, but for agil projects it is very costly to get started.
  • So, if you are doing agile development, you will want more agile infrastructure. Can cloud computing help address these challenges?
  • Funny cloud quip at managers expense. Feel free to cut.
  • First, a quick side not on “What is cloud computing?” There is so much hype in the industry it is worth just defining what I mean by this.First, it is about compute (virtual machines), storage, and networks. These are the resources that make up dev, integration, test, staging, and production environments.Second, they are delivered as a service. You may have heard of Infrastructure as a Service. This is essentially the heart of cloud computing.The service is available from both web interfaces and APIs in a self service manner.Cloud computing is characterized by the ability to provision apparently infinite resources in minutes vs. hours. The reverse is true, resources can be returned to the pool in minutes so that they can be repurposed.Finally, the business model is pay for use, operating expense vs. a purchase/capital expense where you pay for the resources regardless whether they are being used or not.
  • So cloud computing brings rapid provisioning to address issue #1.
  • Cloud computing also makes it easy to change infrasructure on the fly. Shown here is Amazon web services where you can select specific VM configurations with their own CPU/Memory, you can also create volumes of different sizes. Rackspace has similar pre-configured VMs to chose from.
  • With Skytap Cloud, you have even more flexibility to pick # of CPUs, RAM, number and size of disks, and the number of network interface cards each VM has (NICs). This allows you to re-configure your computing resources in minutes and on-the-fly without direct IT involvement.So cloud computing address the second challenge of changing and repurposing infrastructure during the rapid iterations of agile development.
  • Thirdly cloud computing can bring better tools for collaborating with teams. A user can build out an set of VMs, define the networking configurations, and get everything running. [BUILD1] These cloud environments can then be “Saved” or snapshotted into a library as a template. [BUILD2] For example, imagine a developer creates a “golden” development environment and saves it as a template. A second developer can then create their own separate environment from that original template.[BUILD3] Another tenant of agile development is sharing software with customers. Rather than stopping development, you can provision a separate enviornment, and then add it to a project or publish it so other team members or even external customers can try out new changes.
  • Finally cloud computing can lower costs. No up-front capital expenditures. Pay for use.Many people still think they can run things more cheaply in-house.
  • What is important to consider is the type of workload. Predictable 24x7 production workloads are core to IT, they require dedicated IT resources, and typically changes do not occur with any high frequencty. However, for agile development, workloads are more dynamic. Developers only work 8-10 hours a day for example.
  • So for the type of workloads that are no “always on”, cloud computing with its pay for use model is hard to beat. Other simliar use cases existing for training labs and software demo/proof-of-concepts environments which are also seeing strong cloud adoption.So, in summary, cloud computing can address the four major hurdles faced with agile teams using traditional IT infrastructure.
  • Quick couple sentences on each of these.
  • Quick couple sentences on each of these.Detailed case studies of these accounts and others are available on the Skytap website.
  • Don’t over analyze. Pick a small project and get started. You can usually do this with a modest sized project for <$1000 a month with no commitment to continue spending.Think about your use cases up front, there many cloud computing options available all with differing costs and capabilities. But remember. Don’t over analyze.Evaluate support for existing tools.Try it out, how easy is it to use/learn?Evaluate ability to manage resource consumption. You can’t save money if you don’t have visiblity into usage and ways to control resource burn.Even though you start small, consider how the solution will scale up to multiple teams and many users. Was it designed for a few individual developers or Enterprises?
  • So in summary, agile development adoption is accelerating. We see cloud computing as offering signfiicant advantages to development and test teams who are making that transition. Agile development requires Agile infrastructure. The next link in the chain to explore is operations and the movement toward dev/ops where development teams are more intimately involved in the production operations of applications.
  • Come visit us at the booth for detailed demo and more information.Sign-up for a free developer trial at www.skytap.com
  • Cloud-enabled Development: Putting the Agile into the Infrastructure

    1. 1. Cloud-enabled Development:Putting the Agile into the InfrastructureBrian WhiteVP Products, Skytap
    2. 2. Innovation Is Accelerating… The world 1 of 8 couples in starts tweeting the US getting Facebook has overYouTube is born married met online 800M active users Google buys The iPhone is born Cloud computing YouTube goes mainstream 2005 2006 2007 2008 2009 2010 2011 ??? Facebook Obama’s campaign Over 2.1 billion opens up grows $21M - $150M global internet using social media users Wikipedia grows to Apple launches 25M+ pages movies on iTunes. Google Books starts The beginning of scanning the world’s the end for movie literature stores
    3. 3. Momentum Behind Agile Development 3
    4. 4. Momentum Behind Agile Development47% of companiessurveyed followthe agile model 2010 - State of Agile Software by VersionOne Survey of 4770 Participants 4
    5. 5. Typical Software Development Life-Cycle• Define requirements up front• Difficult to change the outcome if requirements change• IT infrastructure rarely changes during long dev/test cycles Design Requirements Testable software Develop Shippable software Test Deploy & Support 6 to 12 month development and test cycle
    6. 6. Agile Development Model• Short release cycles which deliver customer value• Welcome changing business requirements• Collaboration with business and customer stakeholders Customer Customer Customer Problem 1 Problem 2 Problem 3 Design Develop Design Develop Design Develop Ship Ship Test Test Test 3 to 6 week release cycle 3 to 6 week release cycle 3 to 6 week release cycle 6
    7. 7. The Weakest Link Agile Agile Dev/Ops Development Infrastructure?? 7
    8. 8. Infrastructure Challenges with Agile Development Slow to • Ordering and provisioning requests take weeks or longerProvision • Lower priority than production operationsDifficult to • Difficult to change and recycle hardware once ordered Change • Not easy to re-configured Memory, CPU, DiskDifficult to • Sharing environments or “copies” of environments with remote Share teams or customers is not practical • Reproducing complex bugs requires snapshots of full environments • Costly to maintain state of the art dev/test hardwareHigh Cost • Costly to duplicate production environments • Capital expense vs. Operating expense 8
    9. 9. Cloud Computing Can Cloud Computing Help Address these Challenges? 9
    10. 10. Cloud ComputingCredit Geek and Pokehttp://geekandpoke.typepad.com/geekandpoke/2009/03/simply-explained-part-37-agility.html
    11. 11. What Is Cloud Computing?• Compute, Storage, and Networking Resources• Delivered as a service (i.e. IaaS)• Self service access via web interfaces and APIs• Provision / release resources in minutes• Pay for usage model 11
    12. 12. Rapid Provisioning Time to Results Per Project 2 to 3 weeks In-house 1 day • Quicker Release Cycles Hybrid Time liberated to focus • Faster Time to Market for strategic priorities • Positive Business Impact Days 0 5 10 15 20 25  Purchasing Set-up Changes Tear downIn-house data based on customer input 12
    13. 13. Easy to Change Infrastructure 13
    14. 14. Easy to Change Infrastructure CPU RAM Disks NICs 14
    15. 15. Improved Collaboration Add to Project / Publish New EnvironmentMy Environment Environment Save as Template Templates 15
    16. 16. Lower Cost• No up-front capital expenditure• Pay for use model  Allows for simulating production environments Isn’t it cheaper to run in-house? 16
    17. 17. Predictable vs. Dynamic Workloads Predictable Workloads Agile Development Workloads Ideal for Enterprise Data Centers Ideal for Cloud Computing• Core to IT operations • Contextual for IT operations• Dedicated IT resources • Limited IT resources Predictable Predictable Dynamic Dynamic• IT managed changes • Developer managed changes Source: Customer interviews 17
    18. 18. Dynamic Workloads Are Moving To The Cloud Agile Development Workloads Ideal for Cloud Computing App Dev/ App IT Virtual Software Dynamic Test Migration Sandbox Training Demo Software teams are moving agile dev/test workloads to the cloud 1. Fast Provisioning and dynamic capacity management 2. High flexibility for changing resources requirements 3. Improved sharing and team collaboration 4. Lower total costsSource: IDC, Gartner, Customer Interviews
    19. 19. Skytap Case Studies Software Development and QA Software Development and QAChallenges: Challenges:• Support clients on 6+ code lines • Needed ad-hoc cloud capacity to test and• Validate bugs on 3 stacks: customers version, deliver data center applications lasted released, lastest dev • Distributed IT users; 10s of users in England• Quickly provision complex environments for and US. 2 different vendors • Base dev/test configurations contained 180 short-term bug fixing/troubleshooting VMs; ability to refresh at will• Cross-continent distributed dev/test teams • Multi-platform support, Windows / Java• Use with existing applications unchanged applications, BMC, HP applications• Try out new features with clients • Hybrid model to connect back to datacenterValue Delivered: Value Delivered:• Provision time from hours to minutes • Cost savings in up front capital expense• Improve response for high value clients • Reduced provisioning time down 20 days to less• Reduced dev/test costs than one hour• No additional IT staffing required • Deferred hiring 2 FTE for IT management
    20. 20. Skytap Case Studies Software Development and QA Software Development and QARequirements: Requirements:• Multiple projects running concurrently • Complex software stacks requiring tiered• Application Development and QA machines networking and clustering for entire development team • Self service for App dev team• Advanced configurable networking • Environments support hands-on global• Central configuration routing for DB VMs user acceptance testing and training• Self service for developer changes/snapshots • Constrained IT staff resources for• Granular charge back to projects infrastructure managementValue Delivered: Value Delivered:• Distributed user self-service • Rapid provisioning of VDC templates• Full dev stacks & QA environments in Skytap • Full VDC snapshots for defect capture• IT managed cloud templates in private library • Parallel Development and QA team work• Project level constructs for RBAC • Project level reporting
    21. 21. How do I get Started?1. Start Small  Identify a single project and get your feet wet2. Define your requirements up front  Many cloud options with varying cost structures and completeness of solutions3. Evaluate support for your existing dev test tools & processes  Changing processes and tools is typically much harder than it seems  Can you connect to existing on-premise tools (e.g. source control)4. Test drive the self-service interface to assess learning curve  Try before you buy if you can. Even 14 days of usage can give you a clearer picture of how easy or hard it will be to adopt.5. Evaluate your ability to manage/control resource consumption  Can you create reports on usage by user, project?  Can you set quotas and notifications?6. Consider scalability both of infrastructure as well as teams  How well will the solution handle complex environments or hundreds of users? 21
    22. 22. Putting the Agile into your Infrastructure Agile development adoption is accelerating Cloud computing offers significant advantages for development and test workloads 22
    23. 23. Skytap Demonstration• Self-Service and Ease- of-use• Complex Computing Environments• Teams vs. Individuals• Solutions vs. Infrastructure• Developer and IT friendly 23
    24. 24. Learn More about Skytap www.skytap.com 1-888-759-8278

    ×