Writing code is easy. Getting it distributed out to the appropriate end users or servers can be a pain in the you-know-what. This is one of those places where tooling can really help - especially when something goes wrong.
The web application consists of a few dozen pages (comprising HTML and the scripting language), hooks to the database, active pages, a gazillion artifacts like icons, Cascading Style Sheets, you name it. You've pushed it out to a staging server. Looks good. Now it's time to push it out to the deployment server. Now, how does that work again? What are you going to send over? How do you keep the versions straight?
And then a couple of hours or days later, some pages changed, some scripts have been updated, the style sheet has been changed, the database has a new schema, someone optimized the SQL calls. Oh, and the server is running in the cloud, in a virtualized cluster. How are you going to deploy it?
More importantly, how will you roll it back if something doesn't seem right once the application hits the production environment? Deployment failures are commonplace, and that's not surprising given the complexity of many of today's server environments, and especially due to the number of dependencies on internal and external modules and services.
This is the problem being addressed by a new type of tooling called "DevOps," or developer operations. The premise there is that developers can't simply hand over completed binaries or packages to systems administrators and walk way. Developers, not admins elsewhere in the IT department, are now taking charge of deploying applications, often right from their IDEs or version control system - and managing post-deployment monitoring as well.
We will be covering DevOps a lot in the future; it's real, not hype, and it is revolutionizing enterprise software development.
The company describes ElectricDeploy as
Today's applications are multi-component, multi-tiered, and the processes to deploy them are complex, manual, or driven by ad-hoc scripts, making deployment an error prone, slow, and unreliable process. Each application is deployed several times as it moves through the application delivery pipeline--in development as teams package deployment artifacts, in QA as test engineers test the application, in pre-production as the applications are accepted, and in production as the application is rolled out to users.
ElectricDeploy reduces the occurrences and impacts of deployment failures in production environments through its fail-safe features by refining deployment processes throughout the application delivery pipeline from development to operations. These fail-safe features integrate three distinct capabilities:
- Code-Safe offers run-time debugging capabilities to interactively refine deployment processes.
- Run-Safe lets teams define success and failure thresholds for application deployments so that deployments can account for real-world solutions.
- Recover-Safe enables teams to define recovery policies and processes for dynamic management of deployment failures.
Manual application deployment processes don't scale, don't detect failures, and make it really hard to roll back to a known good state. While ElectricDeploy is only one of the new breed of DevOps tools, it typifies the types of problems that DevOps is trying to solve - getting applications out of the lab and into the real world.