MONOLITHIC COMPUTING:
In Traditional era of cloud computing, Develops used to follow Monolithic architecture. The word Monolithic meaning in the English dictionary is something which is very large, united, and difficult to understand. In Monolithic architecture, different layers such as User Interface layer, Business logic layer, and Data interaction layer submitted in a single form of package. Monolithic based application started to create problems and bugs by the time.For example, if any bug used to occur in the application, the entire application needed to stop, After fixing of bugs, it had to recompile in order to run again. Because the size of the application were so large therefore, it took a lot of time to recompile and also in running and connecting with users. It was so complex that develops had to get into the entire application for fixing a single small bug. When adding any feature to the application, it gives error and creates bugs due to the complexities of monolithic architecture. It was very hard to handle or fix bugs for any another developer. However, adopting of new technologies was also one of important flaw of monolithic computing.
Cloud Computing Basics |
MICROSERVICES ARCHITECTURE:
Microservices architecture is based on the concept that an application is break down into different small parts and running them independently. These small parts are themselves act as applications. These small applications are communicated with each other which was extremely helpful for the developer, as it was much easier to organize application now. Develops only debug that specific part of application without disturbing the entire application such as by implementing a new technologies over a single part of application was perfectly fine and independent to other parts of the application.
Running, down time, or connectivity time in microservices architecture is much lesser than Monolithic architecture. For instance, if there are in 10% of the application parts then the remaining application would work fine as all parts are independent to each other. The advantages of microservices architecture can be summarized in three points:
- Better organizing
- Decoupling
- Better performance
WHAT IS CLOUD?
A fews years ago, if some has asked me this question, I would have definitely answered that Cloud is something on the sky where rain comes from. Word cloud refers to internet, and more precisely to some datacentres full of servers that is connected to the Internet. Cloud comprises of three branches:
- PUBLIC CLOUD
Companies like Google or Amazon has a huge area for servers who provides a lot of public services, such as Hosting and Google drive.
- PRIVATE CLOUD
The internal data servers of a specific organization is known as private cloud. Which is only accessible to that organization. For instance, Banks are based on private clouds as they can not share their important data with general public.
- HYBRID CLOUD
The combination of both public cloud and private cloud is known as Hybrid cloud. Banks are not completely, neither private nor public. Banks allow general people to access a certain amount of data while, other data of banks remains protected and private in the private clouds.
WHAT IS CLOUD NATIVE?
Cloud Native Computing Foundation (CNCF) is an organization which manages the standards and develops a community for Cloud Native Computing Technology. Which says that Cloud Native Computing an application which is quite scalable on build on modern standards. These applications are deployed with the feature of scalability.
Cloud Native Computing comprises of following:
-DevOps
-Agile Methodology
-Microservices-Oriented
-Cloud Computing Platforms
-Containerize Application
-Orchestration System
-Continuity Integration
DevOps
DevOps is clear from its name which means that Dev stands for development team and Ops stands for operations team. developer or a team of developer is group who design, code or program our application. When the program gets ready and deployable, operation teams, then, are responsible to deploy the application on the servers.
In the diagram above, left side represents the responsibilities of a developer and the right circle shows the responsibility of operational team. Firstly, the Developers plan the project, that:
What features should an application contain?
On which language application will be designed?
How the priorities will be set?
Secondly, they will now create/code the application and starts to program and code the entire application. When the application's coding or the programming of a single microservice gets completed, they will build/verify it. Build means, they prepare application in deployable or executable form. After the phase of building application, develops test/package the application and check if it is working fine or still have any bug. Now finally, develops will release and hand over the application to the operation team for deployment.
Operation team deploys the application on the server so that users can access the application. Then, it is operated/configured on the servers by the operation team. And finally, it now monitored so that no bugs can disturb application while running. This phase is known as continuous phase as this process again repeats and enter into planning phase for another microservice/feature of the application as shown in the figure. In cloud native computing all these phases are done by a single developers unlike the traditional era of distributed teams, including development and operational workings as well.
AGILE METHODOLOGY
Before agile methodology, there was a model called waterfall model. In waterfall model, application could not comes in the deployment phase or remain inaccessible for the users until a lot of bulky work of coding of entire application has done. Which was a lot time and resources consuming technique.
Therefore, Agile development technique was introduced. Agile development focuses on working on small parts of application independently such that application remain incremental and iterative. In agile development, it is very fruitful that even before delivering the other part of application, we started to get the feedbacks from the users. Application can be modified according to the user's feedback which is indeed a lot time and resources saving thing.
Agile development circle comprises of:
- Taking feedback from our early adopters an initial developed part of our application
- If we get positive feedback we release it into the market, otherwise send it towards the modification and integration phase until we get best results. This iteration continues to either adjust or release in the market.
MICROSERVICES-ORIENTED
When an application is split into different small parts, that each part or microservice or feature of the application run independently is known as Microservices-oriented application. The small parts of the application, when gets any bug, they do not affect the working of the entire application for the user. Microservices based application comprises of:
- Making application in smaller independent part/features/microservices.
- Developing a pipeline (known as APIs) for communication.
- They can be organized very easily as they are small and manageable applications by small teams.
- It is easy to understand it's architecture when upgrading application.
- New technologies can be easily associated with any of microservice of the application without disturbing other parts of the application.
- Complexity level reduces in the Microservices-orientated application and speed up the development and modification phases.
- It allows you to scale more efficiently.
However, as there a lot of benefits of using microservices based architecture there are a few disadvantages. It becomes harder to manage and maintain communication between small parts of the application as there could be hundreds of small parts of the application. Fixing a bug is not much harder task to do in microservices based application but finding that bug among all small parts of the application is harder.
CLOUD COMPUTING PLATFORMS
Cloud Computing platforms are the organization who have installed servers and providing user, space as per their need. As we discussed about public clouds, they are also known cloud computing platforms providers. Therefore, we don't need to install entire server, Cloud computing provides us the services exactly as per the user's requirements. Hence, users get free from maintaining, operating, and facing down time. Cloud computing also provide us Content delivery Network (CDN) or Edge server. Which makes is a lot faster to access data on the cloud or server. Edge servers are basically the data centers of the organizations distributed all over the world.
Cloud may be limited to:
- A single organization (Enterprise clouds)
- Be available to many organization (Public clouds)
- A combination of both (Hybrid clouds)
Today, there are many large cloud computing platforms providers around the globe, like, Amazon AWS, Google cloud, Microsoft Azure, and IBM cloud etc.
CONTAINERIZATION
A contain is a runtime instance of an image. An image is something like a briefcase which contains the code of the application, runtime, libraries, environmental variables, a lot of configurations, and all stuff which are very important for running an application. When we make container from an image, we call it Containerization. Docker is the most widely used tool for containerization.
Containerization has following amazing advantages:
- - Light-weight application
- - Flexible
- - Interchangeable
- - Portable
- - Scalable
- - Stackable
All containerized applications are communicated with each other very easily using Docker.
ORCHESTRATION
After containerization, it is not so easy to deploy and face the challenges to maintain the load of application for which we have created the copies of the application. However, maintaining of the instance level of the application as per the requirements and the sharing of confidential data from application to another is also important.
All the above tasks are need to be done automatically and efficiently, which is known as Orchestration. Orchestration is done using a very useful tool known as Kubernetes. Which provides efficient scaling, configuration, copies of applications, transferring configuration, and all other important tasks of Orchestration.
CONTINUOUS INTEGRITY OR CONTINUOUS DEVELOPMENT (CI/CD)
Continuous Integrity provides the automated working of the following tasks:
- Providing automated tests for the application
- Deliver the code in the shared repository/Github for you
-Build that code and deploy on that server where it is accessed by the users
- It also known as CI pipeline which transfers application from your computer to the server.
- A tool known as Jenkins is used in Continuous Integrity or the Continuous development.
0 Comments
Your comments and interesting view make our day!