Introduction

On premise applications have been the norm till the last decade wherein public cloud services were still emerging and there were concerns on Data security and high availability particularly among sectors like Banking and Healthcare who need to protect customer and transaction data. In a world without cloud, companies invested heavily on software and infrastructure that were on their premises. But as cloud made its way into the IT industry, on-premise applications are increasingly becoming obsolete. Three ways of using the cloud – Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS) have emerged successful in the past decade. In the on-premise model, organizations usually manage everything from Applications to Networking and this takes a toll on the company’s resources, operations and revenue. Organizations have to maintain the software, infrastructure and platform all under one roof and this takes up space as well. The need to improve the business value has given rise to the idea of sharing management with others. The above mentioned models are the result of that. Among these three, Platform as a Service (PaaS) allows organizations to manage applications and the associated data but entrusts runtime, middleware, O/S, Virtualization, Servers, Storage and Networking services to third parties. PaaS vendors provide software and hardware tools over the internet to develop applications. Outsourcing the management of these services would involve the organizations negotiating with various vendors which would take a lot of time and resources. In this blog, we will discuss trending Cloud PaaS alternatives to popular licensed components.

Database

In a world without PaaS database, developers managed the databases of their applications. The Database as a service or DBaaS model has transferred the responsibility of managing the databases to the cloud provider. This model has improved the productivity and increased the agility of organizations. Database services provide a framework for the developers to operate their database. These services simplify complex database operations so that the developers and database administrators can be more productive.

Azure Cosmos DB: Cosmos DB is a NoSQL database that is fully managed by the cloud provider. This is a good candidate for organizations that wish to develop their applications faster and have high availability, enterprise-level security and scalability. Organizations can scale up the application automatically based on the business needs and match capacity with demand. This service is integrated with key Azure services such as Azure Functions, Azure Kubernetes Service, and IOT Hub etc. which means cloud-native application development is easy.

AWS’s Dynamo DB: Amazon’s DynamoDB is a document and key-value based database that is fully managed so that developers can build innovative internet-scale applications. It is durable with built-in security and backup. With the ability to support 20 million requests per second and high level of scalability, DynamoDB supports the workloads of the world’s fastest growing businesses. Calculating capacity per workload and choosing provisionally or on demand capacity modes will help organizations cut costs. The database service encrypts all the data by default and gives access to all your tables. Creating backups of a high amount of data will not compromise the performance and you can always recover without any downtime.

Google’s Spanner: Google’s Cloud Spanner is an SQL database with virtually unlimited horizontal scalability and 99.999% SLA. It is a clustered relational database management system (RDBMS) that uses hardware-assisted time synchronization to achieve data consistency. Its cross-table transaction support enables transactions across multiple tables and which speeds up fetching of data. But Spanner does not have a local development environment and unsupported sequences.

Google Cloud Datastore: A highly scalable NoSQL database, Datastore provides ease of storing and moving data as you wish. Replication and sharding are automated which translates to high availability and scalability based on the application’s load. Properties such as SQL-like queries and ACID transactions can be done in this service. It makes use of dual regional storing options to increase data availability. When the data hit fails, it provides backup data, processes them, and ensures availability. Datastore doesn’t support partial operations on data. It either completes the transaction fully or treats everything else as a failure. This database service differs from RDBMS in three ways:

  1. Automatic scaling
  2. Queries are based on previously built indices
  3. Does not need entities to possess the same set of principles

Amazon RDS: A cost-efficient way to set up and operate relational database, Amazon RDS provides resizability and automation of database setup, backups, and provisioning. This allows you to put more thought into your application’s performance, security, and availability during development. Amazon RDS Management Console ensures that there is no need to provision for infrastructure and you can upscale your database with minimal management. Controlling network access to your database is easy and with Amazon Virtual Private Cloud you can isolate your database instances.

Azure SQL Database: Automated and AI-powered features in Azure SQL database will help you optimize your performance. It is a fully managed database where backup and provisioning is automated. Its serverless computing services and hyperscalability impart great flexibility and responsiveness. Azure SQL is based on the Microsoft SQL Server database engine which allows the usage of advanced query processing features like intelligent query processing. Azure SQL Database has two deployment models – Single database model and Elastic pool model. It also has three different purchase models – vCore-based purchasing model, DTU-based purchasing model and serverless model. There are advanced monitoring and troubleshooting features to inform you of the workloads and help you plan for the future.

Serverless Computing

In serverless computing services, infrastructure management tasks are handled by the cloud provider. Developers need not worry about the infrastructure on which they are developing their application. Organizations can pay only for the computation services and need not pay for a fixed number of servers. These are some of the serverless computing platforms that have rendered owning physical hardware to run servers pointless.

Microsoft’s Azure Functions: Azure Function has two levels of language support – Generally available level (GA) and the Preview level. GA level provides language support for production and the preview level, though not yet released, is supposed to be compatible with the GA level. Azure supports C#, JavaScript, Python, and Java versions 8 and 11. One of the perks of having Azure is it supports direct deployment from .zip file packages. This uses Application Performance Management (APM) to manage dependencies. While storage handling might get challenging with advanced programming, Azure Functions offers 40 TB to 500 TB worth of offline data storage transfer. Orchestration and automation of tasks can be carried out with Azure Logic and Durable Functions so that other cloud services can be easily integrated. Azure supports automatic scaling and concurrency in multiple functions and also has Azure Application Insights to monitor functions.

Amazon’s AWS Lambda: AWS Lambda’s Runtime API allows the usage of any programming language to develop customized functions. Like Azure, Lambda packages can be deployed by creating .zip file packages. The execution environment has lots of libraries like AWS SDK that can introduce new functions and packages. AWS Lambda provides 75 GB storage for functions, 1000 concurrent executions, and layer storages by default. This restriction extends to all the function layers, deployment packages, container images etc. A manual request AWS console is required to increase the storage by several terabytes. You can create your own IAM policies and assign roles based on user behavior. AWS Lambda restricts the total concurrent executions to 1000 and allows you to control concurrency at the individual function level and the account level. AWS Lambda supports dynamic scalability that is subject to individual account level concurrent execution limits. This platform reports metrics to Amazon CloudWatch to monitor functions. Automatically integrating with Amazon CloudWatch Logs, it also allows you to make use of AWS X-Ray to monitor functions.

Google Cloud Functions: Supports Java, Python, Node.js, Golang, and C#. The selected runtime model decides the environment executions of cloud functions. The language chosen and the runtime module determine the basis for the handling and monitoring of dependencies. Google’s Cloud Storage provides full control over the storage enterprise-grade level access control. It also provides a unified security policy based on your needs. Integration with Cloud Composer configures the functions into Directed Acrylic Graphs (DAGs). Google Cloud Functions get up to 80 concurrency executions and the execution time is usually from 1 to 9 minutes. This platform too has automatic scalability and the speed of scaling up and maximum scalability depends on the duration of functions and traffic limits respectively. Google Stackdriver is the service that monitors Cloud Functions. This service has tools for reporting errors and reminding us of execution times and memory usage.

Containers and Hosting Platforms

Containers as a Service (CaaS): Containers are packages of software that contain all dependencies in order to run on any host systems. Containers as a service (CaaS) allow developers to organize and manage containers on the cloud. Containerized applications are easily deployable, highly scalable and available. The usage of containers makes CaaS different from PaaS. While PaaS deploys limited code stacks, CaaS can deploy several stacks per container. CaaS works best for teams that are aiming to establish continuous deployment. Containers enable high level customization and control due to container runtimes that offer configuration and virtualization of the OS. This means that Containers can help developers build highly customized applications as opposed to the ones developed using PaaS model that are generic and standard. Owing to its ability to deploy several stacks per container makes it a better fit for developing microservices since each container deployed can have its own encapsulated OS and language stack. Google Kubernetes and Docker Swarm are the most popular CaaS orchestration plaforms in the market.

AWS Elastic Beanstalk: AWS Elastic Beanstalk helps organizations deploy and scale web applications quickly and automatically. It supports applications languages such as Java, PHP, Node.js, Python, Ruby, Go, and Docker and takes care of capacity provisioning, load balancing, auto-scaling, and monitoring and all you have to do is upload your code. The AWS resources that power your application are under your control and you can access them anytime you want. Since Elastic Beanstalk manages the infrastructure and application stack, you can focus on programming and improve your productivity.

Azure App Services: Azure App Services is a fully managed platform to operate and monitor tasks. This service helps in hosting web applications, REST APIs, and mobile backends. It also allows the development, deployment and scaling up of applications created on popular frameworks and languages such as .NET, .NET Core, and Java. Using App Services, developers can containerize their applications and migrate their Docker skills directly. However, developers cannot mix Linux and Windows applications in one resource group.

Google App Engine: It is a fully managed serverless platform that helps developers build highly scalable applications based on business needs. Languages that are supported are Node.js, Java, Ruby, C#, Go, Python and PHP. It enables customization of runtimes which allows developers to bring libraries and frameworks. In order to make the most out of App Engine, it is best to use Cloud Datastore since it is an RDBMS based database. Google’s power analytics and monitoring tools such as Cloud Monitoring, Cloud Logging, Cloud Debugger and Error Reporting can be used apart from third-party vendors to diagnose issues and solve them. App Engine is a pay-per-use service which means that companies have to pay only for the resources they use.

Ready to become an organization that churns out high quality scalable software frequently? Learn how Aspire Systems can help you adopt PaaS alternatives to boost your productivity.

Sriram Sundaresan