Friday, June 10, 2011

Cloud Development = 2X the Salary for Developers? Developers as Production Operations/System Administrators?


Agile development requirements are forcing developers to start delivering on production operational tasks. Developers are not as knowledgeable about the infrastructure upon which their applications run in production – servers, load balancers, switches, scale up, proactive monitoring, etc.  Before the cloud-era, they were extremely dependent upon the IT organization provisioning infrastructure for them.  This also lead to IT having a lot more say and power on the enterprise standards.

With the advent of the cloud, developers can deploy their applications to live public cloud production environments without needing approval from IT (or at least not asking for it – if you don’t ask, you don’t give someone the authority to say no).  However, along with this agile deployment methodology/environment, comes a new set of responsibilities: Service Level Agreements (SLAs) with the business still have to be met - the applications have to scale, be up and responsiveness as demanded by the application user.  

In order to meet SLAs of applications developers deploy in the cloud themselves, they have to manage the following types of activities (which used to reside with production ops teams):

  • Elastic scaling of the application based on varying demand
  • Proactively monitoring application health
  • Preventing misuse of root access to production (such as making impromptu changes in production)
  • Ensuring deployment success from development to production 

The opportunity for vendors provide solutions to help developers automate these types of tasks.  Below are some examples of toolings/solutions from the the PHP ecosystemto help developers in these DevOps dual roles:
  • Elastic scaling of the application: Developers do not want to think about how many servers/instances are needed to address peak capacity or low utilization periods, yet will now have to ensure the infrastructure is provisioned appropriately.  Platform as a Service solutions are evolving to provide just in-time infrastructure scaling based on varying demand to maximize end-user responsiveness while minimizing cloud computing costs.  When system load increases, additional servers are launched. As demand decreases, servers are automatically decommissioned, while ensuring no user sessions are lost in the process.
  • Proactively monitoring application health: monitoring at the transaction and application level is critical to maintain SLAs.  Developers already know what thresholds to set which when exceeded provide an indication that something might be trending towards failure.  In the past, there was a chasm between production and development teams, and hence this conversation around what thresholds to set and what to monitor for, never happened.  Now developers just need to talk to themselves.  Here is an example of the types of errors to be monitoring for and a monitoring solution that aggregates these errors across servers.  
  • Preventing misuse of root access in Production:  In the cloud, if developers deploy their applications into production, then they have 24X7 root access to production.  Ideally, the only reason they want access to production is to reproduce a production problem/try to fix it – with a high rate of feature/functionality releases (sometimes multiple releases a day) and the impact immediately felt by a large community of users, organizations cannot afford “bad” change.  Developers are tinkerers – they want to make what are perceived to be small changes to try out their fixes while in production (but in reality have large ramifications based on the legacy code that already exists).  Technology is evolving to eliminate the need to reproduce problems in production which will hopefully reduce the mean time to repair, and a developer’s requirement for access to production.
  • Ensuring deployment success from development to production: If both development and production are in the cloud, this could be as simple as exposing the cloud instance to the world.  However, if not, one has to ensure that versions of PHP, extensions, etc. are all same to ensure highest deployment success rates – Zend’s PHP application server (Zend Server) provides a pre-configured PHP stack via an Amazon AMI instance and on development workstations.
Controversial Question:  Is the Cloud significantly reducing the influence and control Production Operations organizations/CIOs have going forward?  Is more power in the hands of the developers?  Who and how should vendors be selling our solutions to?

No comments:

Post a Comment