Every Business Needs To Be A Digital Business Today
Today, we are living in what @bethcomstock rightly calls the Emergent era. In her blog she explains it succinctly as, “… a time defined by the rapid waning of our legacy institutions, even though their replacements haven’t scaled up yet. We’re in that messy, sometimes anxious, and ambiguous space between the old and the new.”
In this emergent world, businesses are dealing with significant uncertainty and dynamism in customer behaviour and competition. In addition, there is significant disruption hitting all industries due to remarkable progress in technology, collectively being called the 4th Industrial Revolution. In today’s world, businesses need to adopt digital technologies to adapt and survive in the markets.
Elements of Digital Solutions
At the core of a Digital Business lies software that is disruptive and helps business grow and thrive in these uncertain time. While enterprise business software has been around for some time, we’re seeing a revolutionary shift in the way Digital solutions are getting conceptualized and created. Some of the unique attributes that differentiate them from traditional enterprise apps are:
- UX – Delivers delightful omni-channel customer experience that engages users to make them strong personal advocates for the business
- IoT – Leverage the connectedness of “things” – devices and people; to power disruptive solutions that enhance overall capabilities of the product as well as user experience
- AI – Imbibes “intelligence” derived from stored or streamed data gleaned from different aspects of ongoing business operations to help make real time decisions more effective
- Bots – Executes “tasks, workflows and actions” through automation that help streamline work and also improves business efficiency and agility, while enhancing governance and compliance
- Digital Ecosystems – Reimagine the supply chain and the industry networks supporting the customers and markets using technology and shifts the value levers using emerging technologies
Digital Solutions Need Adaptive And Agile Platforms
The expectations from digital solutions to help businesses transform are significant and the most critical aspect of being able to build such solutions is having the right skilled cross-functional teams that have full end to end accountability for the product/ solution lifecycle. This team, also known as Agile-Squads, focuses on product management, user experience design, native app development, software development and DevOps. Given such dynamic and adaptive requirements, it’s important that the software product development teams have the right platform for developing and running the digital solutions. Some of the key enablers required from the digital platforms to be adaptive and agile are:
- On-Demand Platforms – Fast paced agile development needs digital platform to support development, testing and production workloads that are available on demand, pay per use with low hurdles to provision without long term commitments
- Everything as a Service – One of the key requirements for digital solutions is the ability to choose the right technology components amongst the many choices available today and be able to integrate them into the solution with ease, as and when they are required. This necessitates that the technology is provided by the platform as a service without the development team needing to worry about its maintenance and upkeep through the lifecycle
- Reliable – The digital platform needs to be extremely robust and provide reliability and predictability in operations
- Resilient – While the platforms need to be reliable, but in real world everything fails sometime and what’s needed are platforms that are resilient and can self heal and recover when such events happen
- Scalable – Digital solutions are targeted at consumers and/or connected things and need to be designed ground up to be able to scale to multiple orders of consumption. This demands the underlying platforms that support the solutions to be highly scalable
- Secure – Digital solutions today are delivered through internet technologies. While this helps with distribution but also opens up avenues for security threats and needs a highly secure platform to keep it safe from malicious attacks.
Cloud Native Architectures Bring Digital Platforms To Life
As described in the previous section, digital solutions require on-demand platforms that offer everything as a service, are reliable, resilient, scalable and secure. Over the past decade the evolution of cloud native architectures has made it possible to deliver to these expectations. Cloud native architectures are able to deliver the outcomes required by Digital platforms by delivering these important characteristics:
- Api based/ as-code – It is extremely important to deliver agility in provisioning infrastructure and services by making it api based/ configurable as-code. Today, cloud native applications provide these features out of the box and allow multiple services to be provisioned with ease through multiple options like environment provisioning scripts, container based provisioning or PaaS auto provision solutions
- Layered Abstraction – One of the default requirements for as-a-service models is the concept of layered abstraction. If the software needs to run compute or storage services, it will directly interact with the IaaS layer on Cloud, but then it needs to consume a data service, it will leverage PaaS components like Database as a Service or Search as a service etc. In such cases it is immaterial how the PaaS components are architected of basic building blocks. This layered abstraction helps manage complexity and scale
- Elastic Services – Cloud application architectures have native capability to be elastic and provide horizontal or vertical scalability. This enables dynamic load and performance management to meet variable growth patterns
- Loosely Coupled – To ensure overall solution reliability, it is important to design loosely coupled architectures of independent service components like containerized applications, functions as a service (aka serverless) and the right data services like cache, queue, search, streams, nosql or rdbms
- Fault Tolerant – In cloud native architectures, which are based on highly commoditized distributed systems, it is important to design for failure. The native cloud services provide capabilities like multi DC failover and high availability managed services to enable fault tolerance by design
- Recoverable – While design for failure enables increased MTBF and capabilities for graceful failures, however components do fail sometimes and Cloud native architectures provide monitoring and automation capabilities for self healing to make recovery easy.
- Software Release Automation – One of the most important metric for agile development success is releasing as early and as often, updated code to production, without breaking the code pipeline and production deployment. This is one of the key deliverables for the DevOps teams and Cloud native architecture provide very strong development tooling and integration to automate the code pipelines, a process more commonly referred to as Continuous Integration and Continuous Delivery
- DevSecOps – DevSecOps is a new integrated practice gaining traction that is attempting to make security an inline process along with development rather than a traditional audit gate post development by making it integral to the DevOps cycle. This is possible because of the same cloud native attributes of fine grained and api-enabled security controls available in digital platforms that can be leveraged for programmatic security policy definition and compliance.
In today’s emergent era, digital solutions are enabling businesses to transform to stay relevant. These digital solution use the power of UX, AI, IoT, Bots and create new Digital Ecosystems to reimagine business and industries. This needs highly empowered agile teams to adapt and iterate, to create market relevant solutions. Given the dynamically changing requirements and need to innovate to meet customer needs and beat competition, these solutions need adaptive digital platforms that offer everything as a service, are reliable, resilient, scalable and secure, to deploy the solutions.
Cloud native architectures have evolved over the past decade to meet the demands of an adaptive digital platform. They achieve the same through api based interfaces that can be configured as code and provide abstract service layers that are elastic. The different services available on-demand can be used to create loosely coupled architectures that are fault tolerant and recoverable. In addition the cloud native architectures enable agility through software release automation and security right from design leveraging DevSecOps principles.