Cloud has changed the way we build and run applications. Cloud is not just a platform for hosting and running your application, but it also provides development platform as a service, which is integrated with IT infrastructure so you don’t have to worry about managing infrastructure while using these services provided by Cloud platforms. Cloud platforms provide managed services for NoSQL databases, Workflow services, Middleware messaging systems and many more.
Cloud PaaS Services Vs Open-Source Stack
In Cloud platforms, everything, from storage to NoSQL databases, from Pub/Sub services to massively scalable event ingestor services, available as a manged services in the flavor of PaaS. This provides lot of agility to developer communities and to IT infrastructure teams. Cloud platforms provides PaaS services as the counterpart services against the popular open-source technologies. For an example, instead of running MongoDB database on IaaS VMs, you can leverage DynamoDB on AWS, DocumentDB on Azure and Cloud Bigtable on Google Cloud. Instead of running RabbitMQ on IaaS VMs, you can leverage SNS Topic on AWS and Service Bus Topic on Azure. Instead of running Kafka clusters on IaaS VMs, you can leverage Kinesis on AWS and EventHub on Azure. When compared to running systems on Infrastructure as a Service (IaaS), Platform as a Service (PaaS) provides great operational agility when you develop applications on the Cloud. So Cloud PaaS indeed a great option when it comes to managing infrastructure. Then the next big question would be “Is these Cloud PaaS offerings are better than its counterpart open-source stack when it comes to technology excellence.” Is DynamoDB better than MongoDB.? Is DocumentDB better than MongoDB.? Is Kinesis better than Kafka?. Kafka is a battle-tested technology at LinkedIn and in many larger big data solutions. Can Kinesis offer similar kind of success track as a technology and for success stories in enterprises. IMHO, in many cases, open-source technologies perform better than its counterpart PaaS services provided by various Cloud platforms. But running open-source stack in IaaS VMs may leads to lot of complexities for managing infrastructure.
Open-source technologies are maintained by passionate technologists and it is getting continuous contributions from highly talented developers. Open-source technologies are getting continuous updates based on the real-world problems of developer communities. Who are maintaining the proprietary technologies of Cloud platforms.? Few salaried employees of Cloud vendors, who might be lacking passion comparing to developers working on open-source technologies. Nowadays many great technologies are coming from open-source world as a solution for real-world problems.
Running Open-Source Stack In Containers
PaaS and IaaS services have pros and cons and it was never a perfect solution when you build larger applications. PaaS offer better agility while IaaS offer greater level of freedom to run anything on Cloud. We definitely need a more pragmatic solution for getting operational agility and technology excellence. In this context, I would like to propose a solution — running open-source technology stack on containers. On the container ecosystem, we have great technologies such as Docker and Kubernetes. You can build your applications by composing Microservices running on Docker containers where you can leverage open-source technologies for powering your Microservices. Kubernetes, a container cluster manager can be used for scale out your containers without much management efforts. Containerized apps are easy to mange, test and run where you can use Kubernetes for clustering your containers. Google Cloud provides Kubernetes as a Service through their Managed VM service for running containers, which is a best of both PaaS and IaaS. IMHO, Cloud platforms don’t have to provide everything as a service, but they can provide a great platform for running and scaling containerized apps on the Cloud where they can offer best of both PaaS and IaaS. This will enables us to get greater level of operational agility while getting an opportunity and freedom to run proven open-source technologies on the Cloud. One of the great advantages of developing containerized apps with open-source technologies, is that you can easily run your containers in on-premises environment. This will also enables you to change one Cloud platform to another without any vendor-lock as your containers are leveraging open-source technologies instead of platform specific technologies.