How the Cloud Is Changing Software Product Engineering
Blog: NASSCOM Official Blog
Due to growth in the cloud, Software-as-a-Service (SaaS) is becoming an increasingly common and appealing alternative to the traditional software as a product. With SaaS, software is hosted on a platform that services a specific use case for the service.
SaaS is used in many applications across every industry from finance to manufacturing. Take, for example, the gaming industry where cloud-based gaming has changed the entire landscape with multiplayer online editions. These games use real-time simulation, massive computing power, and AI for decision trees and pathfinding. AI has improved gaming on many fronts from design and development to functionality and how it is played.
However, these applications need a massively distributed computing and streaming platform that offers secure access to all players. As it is too costly and difficult for gaming companies to individually build these massive gaming platforms, only the cloud can make this possible. In addition, any software that includes gaming typically needs three components: an SW infrastructure platform, application logic, and ecosystem integration. Rather than building their own infrastructure and ecosystem, today’s gaming software companies leverage the cloud. This enables them to focus more on their core competency of gaming logic and reduce time to market as well as cost of development.
A New Approach to Development, Deployment, and Operations
There are several ways in which cloud native computing changes the development, deployment, and operations approach of the typical software product/ application:
Products and applications are now built as lightweight, independent, autonomous containers with all the required services built into the containers and then deployed as microservices. Different functionalities are built as individual microservices and are orchestrated together with an engine, usually Kubernetes. The entire infrastructure is managed as an elastic infrastructure through agile DevOps processes and continuous delivery workflows.
The cloud offers different types of scalable storage, such as object store, file store, and network file system (NFS). Just as cloud native application development takes on a microservices and modular approach, so must cloud native storage. Developers can simply set the data storage rules, enabling data to be stored automatically in different areas based on the criticality of the data. The cloud will then handle backing and restoring data based on the developer’s specifications. Operators can also allocate storage quotas and network policies that are accessed by developers and resource administrators.
The cloud offers multiple development environments where each service can be built using the best-in-class technologies and frameworks suited for the functionalities. As cloud native applications are polyglot, services use a variety of languages, runtimes, and frameworks.
Instead of using a single relational database management system (RDBMS), cloud native applications use multiple types of purpose-built databases suitable for specific functionalities. Developers can use these databases for storing, managing, and extracting data rather than building these services as part of an application. For example, Amazon RDS offers several database instance types optimized for memory, performance, and database engines, such as Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle, and SQL Server. Finally, cloud native databases provide advantages like disposability, enhanced security, scalability, and significant cost savings.
Each service of a cloud native application goes through an independent lifecycle in an agile DevOps process. In this lifecycle, multiple continuous integration/continuous delivery (CI/CD) pipelines work in parallel to deploy and manage it. Cloud native applications are also highly automated and align well with the concept of infrastructure as code. Most of the workload management tasks like deployment, update, monitoring, and scaling can be done automatically based on the policy.
Security is a shared responsibility in a cloud native environment. While application logic must be secured by developers, cloud native services used by developers need to be secured by the cloud provider itself. For example, AWS monitors its infrastructure around the clock globally, provides services to increase privacy, controls network access, and provides security monitoring services.
The Cloud Native Focus
Cloud native computing enables developers to focus more on their core business by using cloud native services for the components required to build products or platforms at scale. To gain the best benefits of this radical change in software products engineering, developers must:
Adapt a mindset that continually adapts to changing needs – As software changes will be continuous, there will no longer be periodic releases. Design products that can continually adapt and change in the future, making it possible to respond to changing customer demands and expectations on short notice.
Engineer experiences and leverage the cloud for experiential growth –Focus on creating enhanced customer experiences and revenue streams. Instead of being limited to UI/UX, innovation and new experiences should embrace all aspects of the user experience, including upgrades, integration, management, and security.
Drive digital transformation through AI – Take a new approach that uses AI to bring out the full power of everything. Move beyond deploying AI for automation alone and look to the new frontier of release planning, future development, issue resolution, and detailed visualization.
Move to on-demand scaling with optimized cloud consumption – Remove complexity with scaling on demand and optimize cloud costs by making products cloud native, simplifying operations, securing products with tools, and gaining full operational control.
Create an engine for continuous innovation – Tap into the unprecedented scale of disruptive cloud technology available today to innovate products and platforms.
Choose a new licensing and business model – There is no longer a need for per-use licensing. The cloud offers a number of possibilities for new businesses and monetization models that can be personalized or customized for different end users.
Support growth and better product development – Cloud native applications enable developers to focus more on core business functions, such as product conceptualization, customer centricity, consumption, and economies of scale. As the cloud makes massive computing power available to everyone, it can shorten the lifecycle and improve interoperability as product needs follow the common principles of cloud native architecture.
Vice President, IES,