Release early, release often Release early, release often

While we talked about deployment capabilities as a strong requirement for ECM platforms, another area very close to that one is development methodology and tools. No doubt there are major opportunities here for whoever wants to develop a content-centric app efficiently. The traditional waterfall model of software project development has definitely demonstrated its limits and new methodologies, as well as new tools, can bring substantial value, to the extent that the platform is well suited to these models and tools!

Modern Development: Agile and Soon in the Cloud

The new requirements of ECM mean that “out of the box” solutions are no longer sufficient. Content-driven applications have a level of uniqueness that requires most organizations to set up a development team to configure, develop, maintain and deploy the solution. While the complexity and cost of this might be a concern, using modern software methodologies, tooling and a well-designed software framework can dramatically minimize the delivery effort.

A set of best practices can ensure higher quality solutions with a lower cost of implementation than traditional software delivery approaches:

  • Adopt Agile and iterative development practices. Embrace the “release early, release often” approach. These practices have been shown to reduce delivery risk compared to traditional predictive project management practices.

  • Implement continuous integration. Building at every change ensures that changes in the code base that have a negative impact are identified early, before they can cause additional issues.

  • Implement automatic testing. This reduces the time, effort and cost of testing and ensures that a full regression suite is always available to confirm the validity of software changes.

  • Use modern tools and techniques for source control (e.g. Git) that provide developers with more efficiency than traditional tools that lock entire files while a single developer makes changes. This newer breed of source control tools also enables truly distributed development – something that was challenging and expensive with earlier solutions.

  • Implement continuous and automatic performance testing/benchmarking. This establishes baselines for the solution so that the team can easily identify any changes that substantially impact performance.

  • Implement continuous deployment. Continuous deployment automates the deployment process and reduces the time required to perform tasks and the risk of missing critical steps.

IaaS, SaaS and PaaS are now almost well-established areas for the cloud, but an additional area is emerging – development in the cloud. Cloud-based development rounds out the cloud-computing environment, allowing organizations to not only use (SaaS), assemble (PaaS) and run (IaaS), but actually build software remotely. In the current environment of “everything as a service,” it isn’t a stretch to assert that development as a service will be the next frontier of the cloud to experience growth.

Development in the cloud has many of the same benefits as other cloud-based offerings, such as lower acquisition cost, faster adoption, simpler setup and configuration and reduced management and maintenance effort. A number of cloud-based IDEs have been recently introduced, such as Eclipse’s Orion, Nuxeo Studio for the Nuxeo Platform and the popular Salesforce which provides solution designers a high-level abstraction from the actual source code. However, development in the cloud isn’t just about the integrated development environment (IDE). To be truly holistic, development-as-a-service must support the entire develop-to-deploy lifecycle, which includes:

  • Code creation

  • Compilation

  • Source control

  • Continuous Integration

  • Automated Development Testing

  • Deployment to multiple deployment targets

This model is illustrated below and is already being offered by products such as VMWare’s Code2Cloud and CloudBees[email protected] An ideal ECM platform must embrace this development model, not provide barriers to adoption, like many tools built with legacy architectures.

Development-as-a-service is still in its earliest stages; a lot of evolutions must occur before the full development cycle is supported in the cloud. However, there is already real value in adopting this new approach toward development, when you can combine and integrate a cloud-based development environment with an on-premise development infrastructure, such as the continuous integration chain and the deployment process.


Enhanced by Zemanta