IaaS vs. PaaS vs. CaaS How to choose? :
The technology of network hosting is developing quickly, so many choices, users can easily feel overwhelmed and even begin to question whether the service now used is the best choice for current business and demand. This article analyzes the differences from the background of the following services:
Infrastructure as a service (IaaS)
Platform as a service (PaaS)
Container as a service (CaaS)
After reading this article, you should have a good understanding of the following content:
What does each service actually mean?
Why is this service important to you?
What kind of solution is most meaningful to you?
Of course, these should be based on your actual situation to consider.
Dedicated server/bare Metal
Web hosting services are based on data centers that are crammed with servers, switches, routers, storage arrays, and other network devices. The Paas/iaas/caas we're going to talk about is the top stuff, they add a layer of abstraction to make management easier, and automate tasks that have been slow to run or have to be done manually.
The dedicated server, known as bare metal, has his pros and cons.
Advantage
Performance-you are using the computer directly, without the overhead of any additional abstraction layers, such as virtualization;
Reliability-more error-prone without abstraction and virtualization;
Resource Usage-your process does not compete with other virtual machines or processes, competing for resources such as CPU, memory, and bandwidth.
Defects
Management difficulty: Bare metal does not have the concept of AMI cargo mirroring, so it cannot be copied quickly;
Price: In most cases the utility bare metal needs to pay for the hardware in advance and pay for the rental of the machine. Stopping these machines will not save you money, you need to do a good job of budgeting;
Bare metal environment, all processes and applications are running on the same operating system. For extensibility reasons, it is common to run only one task on a single server, such as a Web server and a database server.
Virtualization: Making things simple
Obviously the impact of these shortcomings over the advantages, virtualization has become a very natural choice.
What is virtualization?
In short, virtualization separates the physical machines into smaller virtual servers, and if your physical machine has 2 dual-core CPUs and 16G of RAM, you can divide the virtual machines into 8 1 CPUs and 16GB RAM.
Advantage
Virtual machines can be cloned;
For security and disaster preparedness, you can back up virtual machine images
Defects
The use of virtualization means increased overhead and potential performance degradation;
In general, the common virtual technology has xen,kvm,vmware and Hyper-V, and so on, these virtual machine images are not universal;
Using a virtual machine is still a manual task and requires time and expertise.
from virtualization to the qualitative change in IaaS
What is IaaS?
Virtualize and manage other people's hardware resources through APIs;
Programmatic access to compute, storage, and network resources and configuration;
Request a new virtual machine when you need it, stop it when you need it, and pay only for the resources you use;
Treat data center resources as generic resources.
Based on these features, Amazon introduced AWS Services and its EC2 products in 2006.
Why is this evolution so important?
Before when you wanted to load an online business, you had to do a lot of planning to make sure that there were data centers and enough servers and storage space to host your business growth, enough bandwidth to support your user traffic. It is not easy to make this plan, especially for businesses that are uncertain about the early, future and development routes.
1. Developers are no longer constrained by hardware resources:
Can quickly put ideas into practice;
If successful, the service can easily grow with it;
If it fails, there is no extra cost to stop the virtual machine.
2. Data centers become more automated:
The birth of IaaS is a very important milestone, but with the development of technology, people are also wondering if there is a simpler way to use virtual resources. "I want a SQL service, and you give me a virtual machine?" "This thinking has spawned PAAs and container technology, and interestingly, many PAAs providers are running on IaaS, such as the most popular is Heroku running on AWS. At the same time, the underlying technology that PAAs relies on is the standard deliverable of CaaS.
PAAs simplifies the deployment and management of applications, but also hides the implementation details from the developer, such as managing servers, load balancing, DNS, and so on.
PAAs reduces the time developers will apply from idea to implementation, automating processes that would otherwise need to be manual, and allowing developers to focus on the development of their applications, and from these perspectives, the creation of PAAs is a major step forward, like the shift from bare metal to IaaS.
PAAs difficult to build
There are several main components under PAAs:
Build the system: compile the code into a ready-to-run format and store it for later use;
Application Management database: track git fixes, build versions, and apply metadata;
Cluster Scheduler: the use of multiple servers as a large computer, in this pool of computing resources to run the built-up applications, and maintain the detection of failure jobs;
load Balancing: reasonable drainage of intranet and external network traffic;
DNS Automation: When you create or modify an app, the record is automatically updated;
The most important point: isolate applications between users by Freebsdjails,solaris zones or Linux container.
The last point is also an important reason for the explosive growth of Docker. The Linux kernel has been supporting container for some time, but only some large companies or PAAs providers have automated them. For example, Docker's predecessor DotCloud, when its underlying container technology Docker open source, immediately in the community has been widely concerned. Docker not only simplifies the processing of Linux container, but also provides a standardized image format.
This is a powerful feature because many companies are challenged by the explosive growth of their users: they want to get out of the long release cycle to achieve continuous deployment, they want to adopt a software-oriented architecture or microservices architecture, they want to implement automatic deployment and testing of new code, and as much as possible when the traffic surges. But the problem is that there is no resources or the necessary experience to provide this functionality to the development team, so they outsource these requirements to the PAAs platform. Unfortunately, when you do this, you give up a lot of control and spend a lot of money, but are tied to a PAAs provider.
The best option is to run a PAAs in your own data center or cloud account where you have full control, and your team can deploy the app directly to create a true devops culture. Docker, and its drive to standardize the ecosystem are making a big leap forward to make it possible.
Container Hosting Platform/caas
So what is CaaS? First of all, the features of PAAs in the previous paragraph are CAAS: Automated building Systems, cluster scheduling, load balancing, automatic DNS, service discovery, and so on, which means you can use containers on CaaS to host complex, distributed, multi-tiered applications.
Docker mirroring replaces the Janky buildpacks, makes it easy to build and test, ensures that they work before deployment, and is no longer limited to the integration capabilities provided by the PAAs vendor, which can be run on any application that can be built into a docker image.
Because of the portability of Docker, your app is easier to migrate across CAAS platforms. You're no longer obsessed with building a solution for a complex problem, or wasting your time learning a vendor's automated deployment tools.
But there are a few things to keep in mind about choosing the right Docker hosting platform:
Now that you have some CAAS suppliers, you may not know which one to choose. But as long as your application is docker, it's easy to test them; how simple is it? Read the bird cloud user documentation You'll know: http://docs.alauda.cn/tutorial/introduction.html;
The solution for a hosting provider like Triton or ECS will still bind you, and Docker's most exciting advantage lies in its portability;
The entire management system for many CaaS solutions runs on their own hardware, and only one agent is connected to their API on your server. So if their hardware goes down, your server cluster will be stopped, and the finches are clustered into multiple IaaS platforms such as AWS, Azure, Kingsoft, and provide cross-cloud deployment, migration, and disaster recovery services to ensure your service is uninterrupted in the event of an IaaS outage;
The solutions that allow you to run the entire system behind a firewall are complex and have a lot of fragmentation tasks that require a team to manage and upgrade;
And those that are relatively simple, can run behind the firewall of the solution, and sometimes less attention to high availability;
Is it worth from PAAs to CaaS?
If you already use PAAs, should you take the time to learn about Docker? Will your team agree with what you think? Should you take the time to learn a new container hosting platform?
The answer is yes, because the PAAs provider is changing to CaaS, don't resist this wave of containers, and adapt to it!
For example, a standard 2X Heroku instance, which provides a normal CPU and 1 GB of RAM, costs 320 yuan/month;
While in the Spirit Sparrow cloud, the Docker container that runs 1 CPU,1GB RAM requires only 58 yuan/month.
Each developer in the team can have a test environment that is the same as the production environment locally, test their code, and build it. As long as the test passes, it is guaranteed to pass through the production environment, which is a huge efficiency boost.
IaaS vs. PaaS vs. CaaS How to choose?