Software Development Productivity Boosters

Forward-looking enterprises have begun to adopt newer, nimbler platforms and practices to build products and services. This has empowered them to be constructive like never before and surging their throughput to the maximum. At each step in the software building process, by employing more and more automated, virtualized, shareable, and standardized capabilities, focus is being drawn to customer satisfaction and to produce core, differentiating services.

Note: The concepts described below are not futuristic; many of these are already in my lab – NTT Data’s Cloud Product Development Center (CPDC) where we are building cloud orchestration and migration platforms.

Lets consider one exemplary enterprise and be a fly on the wall to observe how a typical day looks like in such high-performing environment. The illustration below takes a snapshot of the day and calls out what few key members in the team are performing.

 

office
A day-in-life of an integrated cross-functional team working with productivity boosters

If you study the above scenario, you will recognize quite a powerful set of capabilities in play that have transformed the way products and solutions are being built:

Advanced Release Techniques

The product manager is making use of advanced deployment practices setup in his team that enables him to separate the deployment and release of any feature. He wants to do a soak testing of new feature developed and get feedback on it by launching it to customers selectively to minimize risk.

Declarative Deployment

Designing deployment of hyper-scale, cloud native application architectures is non-trivial tasks. Here is the technical lead is using feature called Declarative Deployment where he specifies the expected performance and operational SLAs as attributes declaratively and the platform designs the deployment accordingly.

For instance, he can specify the Disaster Recovery or Data Residency attributes for which the system automatically selects and designs the cloud deployments across the availability regions and zones and automatically tackles the cluster configuration.

One-click Debugging

On click a button, a completely new debug sandbox and provides instant access to an environment complete with necessary technical stack, source packages, libraries, configuration of dependent resources and links. With the preparation work on part of the engineer is greatly reduced and can focus on actually fixing the bug.

Automated Testing

Here the QA engineer is leveraging an easy-to-use, automated testing framework to set up the test bed to simulate spikes in load and replicate the scaling of production environments during peak load times. Once the testing is done, the entire test bed and associated servers will be torn down. Thus the testing footprint and costs are temporary and most optimized.

Elastic, Auto Scaling of Targeted Services

The operations team is employing a mechanism called Y-axis scaling on an application that is decomposed into multiple, individual services. Scaling individual services is much more effective and efficient than scaling the entire application.

Four Key Enablers

These capabilities can be realized when four fundamental, rapidly-evolving momentums come together to form the most effective backbone for constructing application and service infrastructure:

Platform-as-a-Service (PaaS)

In general, PaaS provides the application and service infrastructure to address the middleware and non-functional capabilities so that developers can focus on the business features. For instance, PaaS provides orchestration and deployment of services on cloud, and also auto-scales those services based on pre-set policies. 

Containers

Containers are way to encapsulate and package the application services in a standardized and portable manner. By adopting lightweight virtualization, containers provide better alternative to create virtual machines than hypervisors. To enterprises, this means better utilization of resources, mechanism to share and isolate, full-stack workloads that can be either independent or wired to create larger solutions.

Microservices

Microservices is an excellent design paradigm for packaging small and purpose-built services to create an agile distributed architecture realizing the principles of Service Oriented Architecture. They capture highly cohesive but loosely coupled behavior that can be composed to build larger, complex and scalable applications.

Continuous Delivery

Continuous Delivery (CD) is an engineering approach of delivering product features in an incremental and continuous manner. Two key tenets of CD that distinct it from similar practices are a) automate everything and b) separate product releases from product delivery.

We have seen an overview of few next-generation product building capabilities and their underpinning enablers. While these are useful on their own, in the next blog post I will expand on how they are made for each other, and when adopted together, the multiplier effect kicks and the whole becomes greater then the sum of it parts.

Leave a comment