Cloud computing often seems like the universal cure for IT problems, according to various claims. Real IT managers,...
developers and architects know that's not true. But they also know the cloud can help solve a lot of problems and allow faster software development if it's properly applied. That's particularly true with application development, where the cloud can build a new kind of development collaboration, incorporate cloud-resident features with minimal coding, facilitate the reuse of components to reduce development effort, create realistic distributed testing for application lifecycle management and move teams toward user-level self-care in application customization.
The most straightforward approach to faster software development with the cloud is to take advantage of cloud agility and flexibility in hosting development tools. Most development tools are cloud-hostable, but some new ones are designed for cloud delivery.
Start with containers
The first level of cloud-based dev tools deliver development environments in managed containers. So, everyone can work in parallel without the need to dedicate a server to each developer or risk creating confused crosstalk between developers during testing. Cloud9, Codeanywhere and Coderun are examples of developers of this kind of tool. Virtualizing developer workspaces is a baseline requirement these days. Vendors like Codenvy add development project management features and collaboration, and also provide an on-ramp for DevOps use to facilitate the operations handoff. All of these can result in dramatically faster software development.
The second advance in shortening a development cycle with the cloud is the increased availability of "feature as a service" APIs from cloud providers. These offer both basic development features like relational database management systems and complex features like internet of things (IoT) device management or functional (Lambda) programming. The features are fully implemented and easily invoked. Combining three or four of these with some minimal custom code can create an application that might have required man-years to build using traditional methods.
Both Amazon and Microsoft have been adding new features to their web-service cloud API inventories. Some of these directly support a developer with as much as half a dozen APIs in Amazon's Developer Tools category and API management tools from both Amazon and Microsoft. Some provide specific application features to facilitate cloud development, like Microsoft's Azure Service Fabric and Amazon's Lambda service for functional programming, and IoT and artificial intelligence services from both Amazon and Microsoft.
Even where there's no easy-to-include canned cloud API available to drop into an application, the cloud still improves development efficiency. Cloud components and cloud infrastructure combine to produce an IT model where application power can expand and contract by instantiating and removing instances of key components. This provides what's turning out to be the most powerful driver of componentization of applications. Since component-sharing is a path toward lower development cost, it can help with faster software development.
Nowhere is the drive toward componentization more obvious than in the area of microservices. Microservices are just what the name implies, almost-atomic-level units of functionality that are much easier to reuse because of their simplicity. Microservice brokers are coming up to the level of functionality of SOA service brokers, but you can also use microservices in a simple web-REST way. Applications built from microservices could cut what some businesses estimate is 40% of development time. But they can also present challenges with application lifecycle management (ALM) because of the extensive reuse and the fact that a microservice change can roll through many apps.
Testing can be tricky
Speaking of ALM, one of the most challenging issues of application lifecycle management is defining a realistic test scenario. Modern applications are designed to be used everywhere, by everyone, and the intrinsic limitations of traditional test data generation mean ALM can't easily replicate real-world data and use patterns. With the cloud, distributed test data generation lets you simulate actual production much more closely.
Elsevier, CA Inc. and Informatica are examples of companies that offer tools for generating test data for cloud applications. They also provide guidance and tools to facilitate the distribution of test bots in the cloud. Automatic test data generators, including open source products, can also be combined with public cloud functional programs or Azure's Bot feature to distribute virtual users to exercise applications.
The ultimate in faster software development is the "no-code" model where functionality is assembled using drag-and-drop principles, even by workers rather than IT professionals. Appian Corp., perhaps the most visible player in the space, calls these citizen developers. The cloud provides parallel paths of encouragement for this approach: one being the increasing richness of components available for assembly and the other in the form of tools.
Few really believe that it's possible to eliminate all professional software development, even for business applications. But creating simple tools for nonprogrammers to use was the hope for making IT more responsive to business needs and reduce overall development costs. The cloud has encouraged shadow IT by offering software as a service. And simple programming tools perhaps combined with Lambda or functional programming techniques are extending the shadow all the way into basic development.
A common model for the future?
While it's not clear at this point, it's almost certain that all these initiatives will coalesce into a common model. That model will take the form of a "variable code" platform that draws on both cloud components and user-developed components for application assembly and ALM. The first driver for this is the continuous delivery software model. The second is the shadow IT movement driven by cloud adoption by line departments. And the third is the ever-enriching cloud API inventory, now moving all the way up to entire applications as composable components (Salesforce and Oracle).
The most important impacts of the cloud on faster software development are being felt only now, and it's clear that we're heading for a true software revolution in just a few years. In fact, cloud-specific programming techniques will probably rewrite the book on software development and impact even programming for desktop systems and devices. Populist IT requires Agile development, and we are moving quickly to deliver it in the cloud.
Why flexibility is essential in cloud
Things to consider when choosing mobile app development tools
Learn how app development emerges in the cloud