Why Cloud Native apps?
A Cloud Native application is one that takes full advantage of Cloud characteristics. A Cloud Native app exploits programmable Cloud infrastructure; leverages the elasticity of the Cloud to scale up and down; is made up of distributed components; is resilient to failure of any component; provides information to monitor behavior; and is deployable across different Cloud providers.
By 2020, 83% of enterprise workloads will be in the Cloud [1]. The percentage of applications using containers is around 40%, a survey found this year [2]. Many world-renowned companies have no datacenter and rely entirely on public Cloud. Therefore, building Cloud Native apps is an imperative for almost any organization. The following guidance is for organizations who want to start on the journey.
Cloud Native Strategy
The key themes of Cloud Native Strategy and its components are shown below.
Figure 1: Elements of Cloud Native Strategy
App Strategy
Business Alignment: From your current applications landscape, choose a few applications that need rapid functional change and scalability – e.g. consumer-facing applications are good choices. These are initial candidates for going Cloud Native. If you are building a totally new application, build it as Cloud Native from the start.
Assess Business and IT readiness for adopting new structures/practices, and committing to the investments required. Based on organizational-unit readiness and capability fit, run a few pilots for going Cloud Native. Define success criteria for pilots based on business outcomes. Following on the pilots, quickly drive adoption and motivate teams to develop all business-critical systems-of-engagement as Cloud Native apps.
Architecture: Adopt “12-factor app” principles and Microservices Architecture. The 12 factors represent characteristics of Cloud Native apps. Microservices Architecture is an approach to decompose business functionality into independent, single-responsibility (micro) services. Together, they provide a powerful method to design Cloud Native apps. Adopt APIs to promote service provider/consumer mindset. This will drive wider adoption in time.
A Cloud Native app should be Cloud-agnostic. This puts a constraint on the use of any provider-specific code. Architect the services to use platforms that are widely available across platform providers in order to ensure portability.
Architect services for “observability” - the ability of a service to externalize its internal state. Choose what to observe based on KPIs to be met by the service. Observability is a key aspect of “designing for failure”, the idea that a system composed of many services can fail in unpredictable ways and therefore we need to address this at the design stage.
Adoption: Learn to use containers – even a monolithic application can be deployed to begin with. Build CI/CD tool chains and adopt Agile/DevOps practices to enable fast release cycles with better predictability of success. Use Domain Driven Design to ensure services are designed in conformance with Microservices Architecture. Embed security aspects into design and code (DevSecOps).
Aim to automate all testing. Induce all types of failures – node, network, service etc. – during testing (Chaos Testing) and ensure apps can recover from such failure. Use methods such as “canary testing” and “blue/green deployment” to reduce risk when releasing new features.
Take a tool-based approach to cover all aspects of observability – monitoring, logging & aggregation, tracing, alerts & visualization. Drive standardization, follow “observability as code” practices, and create feedback loop from observations to the application team.
Build automated dashboards for sharing information within and across teams.
Platform Strategy
Foundation: A container is a way to package code, configurations and dependencies into a single, independent unit that can be deployed. Microservices are particularly suitable for container-style deployment. Choose an appropriate container framework as the core of your platform strategy.
Select other PaaS components for event-streaming, caching, persistence, integration etc. as appropriate. Choose from open source or managed-services versions per organizational comfort – open source requires more effort to manage, while managed-services platforms are easier to use but decreases portability. Either way, think about building platform management capability from the start.
Set-Up: Set up the chosen platforms in the Cloud. Integrate platform usage into application code through “infrastructure as code” tools & scripts, allowing the services to manage their own resources. Build a dedicated platform team to manage PaaS components as Cloud Native adoption matures. Task the platform team with building the layers of abstraction necessary for maintaining application portability. The team can be centralized or federated depending on the organization’s culture.
On-Boarding: Pilot a few apps for initial deployment on PaaS. There is a learning curve for gaining the expertise and comfort required to manage PaaS components. Focus on encoding the learning into automation scripts, tools, templates, and dashboards. Automation will greatly simplify app on-boarding for application teams, allowing them to focus on business logic and not worry about platform integration. Adopt automation as a way-of-life – it will help avoid common mistakes, allow for best practices to spread quickly, and create a “feed-forward” mindset.
Operating Strategy
Team & Culture: It is said the apps you build mirror the organization you have. Drive change in mindset and practices in line with Agile/DevOps. Create upskilling plans that include training, coaching and mentoring. Provide easy access to training material, tools and other resources. Find ways to measure and track learning outcomes – e.g. certifications. Create incentives for people to learn new skills and embrace new behaviors.
Maturity: Use change management to help people accept the coming changes and remove bottlenecks. Define and measure KPIs for Cloud Native adoption at an organizational level and drive improvement – example KPIs are commit-to-deploy time, deployment frequency, request throughput, error rate, traffic, latency, saturation etc. Embed and encourage continual feedback and feed-forward behavior into each value chain of Cloud Native adoption – planning, delivery and operations. Use tools as a key enabler – e.g. to create dashboards.
Governance: Conduct strategic assessments when appropriate to realign with current priorities and adjust goals, KPIs, resources where appropriate. Define policies and procedures for on-boarding new apps, selection of platforms, taking build vs. buy decisions, scoping or de-scoping of projects etc. Also, allow for addressing of urgent/exceptional situations.
Create governance processes in line with respective areas of concern/competence for stakeholders – e.g. business stakeholders should decide on scoping or de-scoping of projects whereas IT architects should decide which platforms to use. Conduct regular reviews of projects to ensure conformance to Cloud Native Architecture.
References
[1] - https://hostingtribunal.com/blog/cloud-adoption-statistics/
Bhagya Mohan Konwar
Managing Consultant, Wipro Modern Application Services (MAS) Consulting
Bhagya is a senior member of Wipro’s MAS consulting team. He brings in the architecture and design experience of more than 20 years. Bhagya is a keen observer of how technology is changing businesses. His insights have helped customers gain a business advantage by transforming their application landscapes. He is also a certified TOGAF practitioner who helps customers build their own architecture capability.
Wipro automates enquiry gathering to project closure process of WCCLG and streamlines project pipeline tracking via Oracle Sales Cloud
Wipro partnered with a global specialist in energy management and automation to put together a centralized, multi-level governance model for IT systems.
Wipro enables securing the banking infrastructure by providing end to end network security and Privileged Event Monitoring for one of the largest banks in the United States of America
© 2022 Wipro Limited |
|
© 2022 Wipro Limited |
Pharmaceutical & Life Sciences