Digital transformation has led to creation of many new use-cases like those of smart homes, smart cities, connected restaurants, smart kitchens, and smart healthcare. These use-cases in turn have led to adoption of new technology trends to fulfil requirements on scalability, performance, security, or user experience.
Cloud-native adoption is one such technology trend that has become mainstream since 2018. According to Gartner’s key trends in PaaS and Platform Architectures in 2019, platform technology is moving from old architecture to Cloud-Native design. Digital use-cases are maturing across various industries.
Today, organizations want to run and design their digital operations to sustain competitive advantage, deploy products faster, and control costs. Cloud native architecture fulfils all these requirements and offers high availability, performance and scope for design innovation, thereby improving customer experience.
The focus has shifted to developing lightweight platforms and this requires architectural components that support Big data acquisition to insight generation, seamless connectivity of myriad of sensors or devices to the cloud, ensuring scalability through microservices, and containerization or writing machine learning algorithms. Cloud native helps transform legacy monolithic tightly coupled architecture to loosely coupled components enabling rapid upgrades, integration, and scale.
Cloud native enables large-scale rapid deployments with large distributed teams and skillsets due to independent components. Most importantly, cloud native architecture provides scalability to the business by supporting large number of dynamic users and therefore directly improving revenue. For example, Amazon Aurora Serverless provides on-demand, auto-scaling configuration for MySQL edition. The database scales dynamically based on the business and application needs.
Legacy applications are based on Service Oriented Architecture (SOA). Today, IoT and connected world solutions are based on microservices architecture. Each microservice is independent of the other in terms of business logic, build, deployment, and update process. This also allows using different technologies for microservices development that is best suited to fulfil the technical requirements.
These characteristics of microservices also make them perfect candidates for container deployments allowing easy abstraction and maintenance. Container orchestration with platforms like Kubernetes, Mesos enable build and deployment of portable applications and run from anywhere without worrying about different environment configurations. This increases deployment flexibility and runtime management. These container hosting systems abstract individual applications from operating system level deployments. Amazon EKS known as Kubernetes as a service offers all features of Amazon ECS along with pod networking and isolation at cluster level. It extracts an additional layer of scheduling and clustering to a container. This makes a single Amazon EKS cluster enough to handle multiple applications or workloads. Similarly, Azure Kubernetes services is an elastic container service, enabling deployment of orchestrated containerized applications with Kubernetes.
Serverless computing is an exciting architectural pattern to build above modern application design. Developers write the server side logic as pieces of code or a microservice for a particular business requirement in response to events. The code of this event driven architecture runs in a stateless container, which is ephemeral in nature and totally managed by a third party. This is known as ‘Function as a service’.
For example, AWS Lambda is a serverless compute service that runs code in response to events and manages underlying compute resources. AWS Lambda functions can be implemented in Javascript, Python, .NET etc. Azure functions is a serverless compute service that lets you run code without managing infrastructure. Platform as a Service applications do not run on event response mechanism. Function as a service is a great option for IoT or Big data event driven workloads and systems that require lot of scaling.
Serverless computing enables operational cost reduction, as providers charge only for the code that is running at a particular instance. Companies do not have to pay for idle functions, codes or resources. Systems built this way are also more adaptable to changes and agile due to independent handling of components. As a whole, developers get great flexibility and can totally focus on writing code to build a great system and run it, leaving server management to the third party service provider.
Thus, serverless frameworks and microservices go hand in hand as the third party serverless platforms or services provider take care of the infrastructure management including deployment, server provisioning, VM instances, OS maintenance, auto-scaling, availability or process management. For example, Azure container instances enables to run a container in Azure without VM provisioning or a higher-level orchestration service. Similarly, a developer can run containerized microservices without infrastructure management using AWS Fargate.
As digital transformation is compelling organizations to rethink their business models, cloud native computing is compelling organizations to rethink their delivery models to meet the needs of digital economy. As seen above, cloud native offers rapid large-scale distributed development and deployment along with cost savings on infrastructure and operations, making them a perfect fit for developing digital platforms and applications.