Evolution until Container-Based Web Application (Introduction to Docker)
The development of web applications have passed number of eras by reducing complexity of its implementation. In this article, we are going to discuss about them in a detailed manner along with the comparison. Let’s begin with the first generation.
The First Generation of Web Application Development
At the beginning, the development team had to maintain their applications on the cloud by having number of physical server for each and every applications on their organization.
Let’s say if you have web application, database and web server, then you need to have three different physical hardware boxes as your servers to maintain each of this components. Refer following diagram.
- Maintenance cost,
- Have to consider different operating systems,
- Wastage (Because, we might not use entire capacity of server).
The Second Generation of Web Application Development (Hypervisors)
In this generation, we had only one single physical server which installed the hypervisor on top of that. Then, we could deploy virtual machines for web applications with their own operating systems and applications.
- We have to still maintain the multiple operating systems. Then, it will take the licensing costs, regular patching and keep recent upgrades.
- Maintenance of VM ware again costs the time.
The Third Generation of Web Application Development (Containers) 😃
In the container-based development solves major problems related with the above 2 generations. Because, it consists with one single physical server which installed single operating system on top of that. Then. we are capable of to develop many applications as much as needed with its own containers/dockers.
So, you could get a wrong idea by comparing above diagrams. That is Docker engine is equal to hypervisor. But it is not. Because, docker is really smaller than hypervisor since it does not consume its own operating systems and VMs. Also, it’s been said that VM Ware is a hypervisor while Docker is a container.
Let’s talk more about the Docker because of now a days it is a trending to deploy many of cloud-based web application development.
⭐️Docker is an open source product which is licensed by Apache 2.0 and operated by Docker Incorporation. Dot cloud is a cloud platform who initiated Docker as a separated project.
⭐️When we use docker-based environment, we do not have multiple operating systems, VMs. Then, it saves spaces and hence it can create the more containers.
⭐️Also, since we are in a top of operating system, the applications can be developed and deployed easily.
⭐️There are some interesting terms are associated with the dockers knows as Docker Engine, Orchestration, Registry and Open Container Initiative (OCI). Let’s discuss about them one by one.
- Around the docker engine, all the registries, orchestration processes and security concerns are built.
- That means, docker engine can be treated as a core of docker.
- This is the place where we can store the docker images.
Note: Docker image is an immutable (unchangeable) file which has a source code, libraries, dependencies, tools and other files to run the corresponding application.
- What we can do with the docker images?
We can customize these docker images and put them back to the docker registry. Docker hop is the largest registry you can search for the docker registries.
- Your organization can have both public and private registry repositories to deal with the docker images. If it is private registry anyone can pull your registry. But granted people can commit on your repository.
The major problem to have public registry is your management may not like to have it as a public registry. Then what you can do is requesting license and have own docker registry which is back by professionals of Docker Inc.
- The process of getting all the core modules, services and containers to hit for a common goal.
- It defines about the containers, where it goes, what it does and its dependencies and so on.
- Kubernet has become the largest cloud platform which initiate the orchestration process with containers.
🚄Open Container Initiative (OCI)
- This is the mutual agreement between the Docker Inc and some leaders in container-based application industry.
- They specify about the specifications, governance and Open Container Standards for the container-based development.
There is other thing that we need to discuss about and most frequent question that you will face during Software Engineering Interviews.
Development of Container-Less Applications 👏
There are multiple problems are associated with the container-based applications. Let’s discuss one by one.
- Web containers can have more than one applications. So, if you need to configure or update or restart one of those applications, then others should need to go offline which s not really good.
- When we use same configurations in different ways in our applications, then it will be hard to maintain them.
- When we deploy our container applications on the cloud, there is no way to restart them.
To address these problems, the developers come with a new solution called “Container-less applications”.
In container-less applications what happened is we have own web container embedded with our applications. That means your application starts to work on the container themselves when you start to run your application. Then it solves some problems like restarting at any time of your applications, easy configurations and so on. There are frameworks which can be used to develop the container-less applications.
ex: Springboot, SPARK, Drop Wizard
What area the differences among Web Server, Web Container and Application Server?
✊Web Server is used to handle http requests but not any Java SS (Server Socket) Specification.
✊Web Container is capable of to handle a part of Java SS Specification.
✊Application Server can handle full spectrum of Java SS Specification.
I hope you get a clear idea about the evolution of the web application development from the very beginning with the help of the diagram. The article intend to give you basic ideas exist behind the microservices which are really valuable in the web application development. From next article onwards, we are going to discuss about really important areas of microservices. Until then,
Stay Safe !!!