Containerizing an application from a monolithic application to container based microservices is a large and wide topic. I like to focus on small topics within the greater goal when looking at cloud architecture. The first is the decision to containerize and how to best achieve a manageable cloud. Of course, the desired end services and application need will drive the ultimate cloud architecture model. First, let’s look at the basic design possibilities.
The first option is a monolithic application. The problems are well known. The size of the application and complexity for the developer soon becomes overwhelming. We will take it for granted this is not desirable.
Next, is a possibility of creating a sort of hybrid cluster. This still has the problem for the developer as the application design becomes too complex. I reviewed the design of a sort “roll-your-own” cluster with a MySQL and node.js in a prior post “to Cluster or not to Cluster”. This process described using the Cluster function within node.js. This is a quick and dirty solution to programmatically rolling-your-own cluster for node.js. There is also the PM2 solution to manage a cluster application on node.js. This provides the solution of maximizing resources to utilize processing power on multiple threads but does not provide any of the solutions for a scalable containerized application.
Next, the type (or flavor) of scaleable container service is open for debate. There is docker swarm, Amazon AWS Elastic Container Service, build-your-own Kubernetes, as well as many others. One promising managed service from AWS is EKS (Elastic Kubernetes Service.) I won’t try to review these options but in a future post simply provide a step by step basic process to look at cloud architecture for a Kubernetes homogeneous solution. This provides for decisions based on cloud or service needs without fixating on AWS solutions. As with any developing, the team of developers can drive the solution to some extent, as there are many flavors of best-practices for cloud containerized services.
There are also many other cloud-based services including GCP (Google Cloud Platform), IBM, etc but Kubernetes on AWS has become a leader. In one recently published report, Kubernetes on AWS has 63% of market share of all container services used today.
My future posts focused on Kubernetes will focus on container imaging from Docker Cloud but Google Cloud container registry is also a good option. There are other options like RKT, but of course, Docker is the most widely used and supported.