2017년 6월 2일 금요일

What is cloud native application?

In the previous article, I understood the concept of cloud computing.

Then there will be some questions.
Cloud computing will evolve as a SaaS model. But is that easy?
It has evolved from IaaS to PaaS through virtualization technology.
So, what other skills do you need to develop from PaaS to SaaS?

To solve these questions, you first need to understand the Cloud Native Application.

The figure below shows the type of application and the stage of development.




  • Native Application

With the introduction of personal computers, all programs had to run on a PC.
So the applications that were initially created were packaged and distributed to fit the PC environment.
Therefore, the same application is classified as Linux for Window.
In addition, the same Window application was packaged and distributed differently to Window7, Window10, and so on.
The application that was packaged and deployed is Native Application.


  • Web Application

Web applications appeared in the PC environment with the introduction of the Internet.
The web application is installed and running on a remote server,
PC is a type of service provided from server through internet.
Therefore, it was not necessary to distribute the application according to the environment of the PC.
And upgrading the application was easy.
However, there is a disadvantage in that it can not be used when the Internet can not be used and the execution speed becomes slow when the Internet speed is slow.
The application user receives the service of the server unilaterally.
It is more passive than Native Application.


  • Cloud Native Application

Cloud Native Application is the emerging form of cloud computing environment.
Cloud-native applications are applications that run in the SaaS model environment.
So it is similar to web application in that it is served over the Internet.
However, Cloud Native Application can be installed by users themselves.
You can also control the service.



You can see that the three types of applications above have emerged around the world in almost every 20 years.
It is understandable that the current process is changing from web application to CNA (Cloud Native Applcation).

The current business environment has increased uncertainty.
To drive business success in this uncertain environment, applications must also meet the following requirements:




  • Speed

I think the quickest way to overcome business uncertainty is to deploy and recall services.
In addition, damage due to incorrect distribution can be minimized by immediate release of the new version.


  • Safety

A failure occurring in one service should not be transferred to another service.
Also, faults must be quickly restored.
So users should not be aware of the failure.


  • Scalability

Do not waste resources by overestimating service usage.
Also, quality of service should not be made with poor usage prediction.
To this end, it should be possible to expand the service horizontally.
It should also be able to dynamically apply this.


  • Diversity

Users should be provided with access to various channels.
As many users as possible should be given service opportunities.



Let's see what characteristics a CNA should have to have the elements for such a business success.




  • Services

Each service is loosely coupled to one another and is run and managed through the Web API.


  • Handling Failures

You should be able to control if a failure occurs.


  • Horizontal Scalability

It should be designed to be horizontally expandable.


  • Asynchronous Processing

Service requests must be processed asynchronously, and queues must be used to separate functions.


  • Stateless Model

All data must be separate from the application code and be available to multiple users at the same time.


  • Minimize Human Intervention

Rapid and repetitive deployment (Deploy) requires minimal user intervention.
If a fault occurs, the fault must be detected.
You should be able to remove the lost instance and quickly create a new instance.





댓글 1개: