Hey guys welcome to Alibaba sera courses and today we're going to talk about some service and the cloud resource orchestration tool whose name is Terraform. And before we go inside of this tool let's firstly come to one topic, let's firstly figure out what is cloudy resource orchestration. So let's move on. Okay, when talking about the orchestration, maybe some of you doesn't know what is orchestration. So firstly let's start with the issues if we don't use the service orchestration. So from this picture we can say in the traditional way, how can we manage all the resources from the infrastructure to the platform to application? And here we can say for each of the layers and we have to manage it manually, right? For the firm infrastructure we should manage the Alibaba Cloud, the AWS, the openstack and also in the platform layer. And we should manage all the databases, and the cash service and the vmware, any of the application. And maybe we will use the docker container, the kubernetes or some other tools to manage all of the resources. But for all of these tools you should manage it manually in the traditional way. So there are some pian point if we use the traditional way to manage all of these items. First thing is that during the management, if you want to provision a new resource from the platform it will take long time, right? Because all of the operations, you should do it manually. So it will take a long time for each of the provisions, like if you want to apply a virtual machine and also a database instance and also some maintainer. You should wait for the maintainer to apply the resource or to create the corresponding resource one by one. This is very slow, right? And the next one is that duplicated work means that this is the point of the maintainer. Because as a maintainer actually there will be one situation that most of his work will be duplicated means we can see this picture shown in the below. 60% of the time it works every time because most of the works for the maintainer, for the operator of infrastructure and platform. And most of his job is duplicated. This is also low efficiency mode, right? And the next one is the manual mistakes. Because no matter how carefully you are doing the operation as long as you do it in manual mode, you will make mistakes, right? So this one we cannot just forbidden by some of the rules or some other places. So in this way, you cannot avoid any of the mistakes to happen. And the next point is that there's no change tracking because all of the operations is done by manual, right, by manually. So there's no not centralized automatically mechanism to track all the changes. If someone has changed something by himself and without informing anyone else these changes will be forgotten. So no one will know who and when and what has been changed. So this is also a very big risk. So this is all of the pain point if we manage the platform without orchestration. So considering all of the pain point that we have faced in the traditional way. And we will choose to use the orchestration tools to manage all of the element in the network, from the infrastructure to the platform to application. So here we can say from infrastructure to the runtime and to the application, we want to and we are going to make everything automatically automated everything. So this is the target that we are going to build this working mode. So there are one principle that we need to follow to achieve this target is that we must manage the infrastructure as code. Just see this definition, what is infrastructure at the code? Here we can see techniques, practices, and tools from software development applied to creating reusable, maintainable, extensible, and testable infrastructure. Just like how you manage your application and how you will manage your infrastructure. Here we can say instead of manage each of the environment independently. Just as the first slide is showing, we prefer to manage all the things, all the infrastructure, all the platforms, centralizedly with code. Which means that you can manage all the things in a very good way instead of everything in a manual way. So from this picture we can see that the principle that now we have known that, how can we manage the application? We will manage the source code and the interpreter and the desired application state. We will manage the application in a very good way. So in the same way we will manage the infrastructure also with code. Just like we will manage the configuration of the infrastructure with JSON or some other configuration file format. And also we will call the cloud service API to create and manage the lifecycle for all of the cloud resources. Instead of just use the GI to create everything manually. So with the configuration file and the API coding and then we can get the desired infrastructure state instead of just I'll manage everything. Okay, so if we want to use the orchestration to manage all of the platforms. So from here we can know something about the tools to do service orchestration here. I just pick up some of the typical members in the orchestration tool families to do a comparison. They are the first one is the Terraform and the second one is the CloudFormation. And the third one is the CHEF and the last one is the puppet. And here the first thing we need to compare is that for the first two tools, the Terraform and the CloudFormation. Actually the main function for these two tools is to manage the infrastructure like the cloud resources, the VMs, the storages. And four the next the last two tools, the CHEF and the puppet. They are aiming to manage the software configurations are like the database, the software installation or something like that. All the things above the operating system is managed by the CHEF and the puppet. And all the things that under the operating system will be managed by the Terraform and the CloudFormation. This the difference between the first two and the last two. And then the next point is about the provider. And for the Terraform and CHEF and the puppet for the three, they can support multi-software and the multi-providers. Which means that for example, for the Terraform, it can support multi-cloud environment, like the AWS or Alibaba Cloud or Azure from Microsoft. And also for the CHEF for the puppet, it can support to manage or to install the variety of the software that the database might circle. And all of the packages on the [INAUDIBLE] it can be managed by these tools. But for CloudFormation it is bound with the AWS. Actually it is the product produced by Amazon AWS. So this is the difference between CloudFormation and then the other three. Okay, and the last point is that for the Terraform and the CHEF and the puppet all of them is open source, is open source software. Even though some of them have the commercial version you can pay for it. But basically, the three have a community version of which is the open source version. But for the CloudFormation because it's produced by Amazon and at least by now it is not open source, it's closed source. So if you want to use that, you must use it on the Mzone database. You cannot use it on your own generic system. So this is the comparison between these four orchestration tools. Okay and after we have know to use the orchestration tools and the next part, which we can know something about the benefit that we can get from the orchestration tools. The first one is the fast and safe. With the orchestration tools, we can just provision and create the cloud resources in very fast and safe way without any manual operations. And the next one is easy to build environment because we manage all of the resources in code mode instead of manual operations. So if we want to build up environment, we just need to run the code just like the code of management, not using the manual operations. So it will be very easy to prepare and to implement the environment. And the next one is to avoid snowflake server. So maybe someone will ask, what is snowflake server? Snowflake server is that if you are managing a bunch of the servers and all of this server, the configuration should be seen. But maybe someday someone has changed one of them without informing others. So this service which has been changed, we call it a snowflake server because the server is the configuration on this single server has been inconsistent with other servers. This one is not what we want. So with the orchestration tool we can manage all of the server configuration in code mode, no one can change this code as he will. So in this way we can avoid the snowflake server. Okay, and the next one is that if we use the orchestration tool, it will be very easy to duplicate the environment. Just like the second point. If we already have one environment and that means that we have the configuration code of this environment, right? So if we want to duplicate this environment, we just run this code one more time, right? And then we got the new environment. That is exactly same as the previous one, right? So this one is very easy. And the next one is, we can use the orchestration tool to verify the infrastructure architecture. Just like the code before your code is running, you can compare it, all right, to check whether there are some mistakes in your code, just like this. If you use the orchestration to manage all the cloud resources and before you actually apply the cloud resources, you can just verify out what will be done if we run this infrastructure code. This one is also the unique feature that the traditional method don't have, right? And the next one is the tracking the infrastructure changes. This one is also same as the code management because if we are managing the code, we will have diversion control, right? Or we will have every change. We will record it just like this code, we can record every changes in the infrastructure by the code. So, in the traditional way out, maybe we just change it. We will not record it, right? So, but in the orchestration mode we just record every changes in the infrastructure and all of the services. So this is very good way. And the last point is happy because someone maybe will ask why happy up. Because if in the traditional way, the operator and the maintainer of the system and most of time they will be unhappy. Because most of their jobs will not produce any values or they have a lot of duplicated works. But with orchestration tools, they can just create a very strong code to manage its own infrastructure or platform. This will make them feel that their job means something, they are not doing the duplicated jobs. So this one is actually is also a very important point is that with orchestration tools, it will make the system operator and maintainer is happy in their work. Okay, so this is a brief introduction about what is the global resource orchestration. Thank you for watching and see you next time.