A cloud native application is an application developed using cloud-based technologies, fully hosted and managed in the cloud.
Cloud based applications are usually applications which have been re-architected to run properly on a cloud operating system whereas cloud native applications have been hosted in the cloud from the very beginning.
They run in cloud end-to-end, meaning that they have been written, tested, and deployed in the cloud, using technologies and services that are cloud-based and not just re-hosted, subsequently, to a cloud computing environment.
Three main characteristics:
They're not limited to certain public cloud infrastructures
They scale better since they tap into the cloud platform's elasticity
They're built using a set of cloud-specific DevOps methodologies, technologies, and architectural approaches: decoupled systems, serverless, lightweight containers, infrastructure as code, microservices, orchestration.
Six Reasons to build cloud native applications:
Managing the infrastructure gets easier
Resilient to failure
Release your application faster
Reduce costs
Scale up, fast
Provide a better user experience