One of the key questions by many of our customers today are asking is “what’s the difference between traditional applications and cloud native applications”? We have heard of many terms such as applications that “born in the cloud”” or cloud native. What actually are cloud native applications?
A simple explanation can be related to which is the term cattle vs pets. What exactly are these if compared to applications?
Traditional (Pets)
What comes to mind when you compare you pet dog/cat compared to a cattle?
To make it simple, what happens when your pet gets sick? You have to nurture it, take it to the vet and make sure they are well again. A pet is considered unique and also attached feelings to your pet.
This relates to how our applications are designed from top layer down to infrastructure today. A traditional web, app, database layer inside a virtual machine. And applications designed to be closely coupled with each components. This creates a customized application and tedious to maneuver and change.
Key Attributes
- Unique
- Indispensable
- Hand-fed, hand-crafted
- Examples: mainframes, HA pairs (LB, firewall, etc.), master/slave databases
Cloud Native (Cattle)
What comes to mind when you compare you pet dog/cat compared to a cattle?
So what happens when one of your cattle gets sick, well quite simply you make a hamburger out of it and another cattle will replace it. Detaching any individual reliance and easily replaceable.
This defer greatly from how most of our applications are designed from top layer down to infrastructure today. This is different from the traditional web, app and database virtual machine. Moving towards a container based infrastructure to ensure automation and failures are handled at the infra layer. For the applications architecture, this will need the design of microservices (where each components are independent from each other) and allows different containers to be spinoff depending on services. A great example would be Grab/Facebook. Have you ever experienced major downtime just to add new features? : )
Key Attributes
- 100% automated
- Designed to handle failure
- Load balanced & multi-master
- LB: svc discovery, DNS, H/W LB
- Examples: web server arrays, multi-master data stores (Cassandra). Hadoop clusters
After reading the difference, the first reaction would be of course everyone would want a cloud native architecture instead. However it is important to note that cloud native design comes at a costs of complexity and many additional considerations towards the design and coding. Hence depending on the criticality and also stage of the applications (for example POC), some applications are still more efficient being in traditional monolithic way instead of going into microservices. Hope this helps on understanding the basic terms of cloud native vs traditional