本篇文章是深入理解Terraform系列的第一部分。在介绍文章中,我们讨论了为什么每家互联网软件公司都应该使用基础设施即代码(IAC)。那么本篇,我们打算讨论下为什么我们选择Terraform 作为我们的IAC 工具。
如果你在网上搜索“instrastructure-as-code”,很容易看到很多受欢迎的工具:
筛选出它们中你应该使用哪个不是很容易。所有这些上述工具都可以用于基础设施即代码。它们都是开源的,背靠庞大的贡献者社区,可以很好配合各种不同的云服务商。它们都提供商业支持,提供良好的文档——在官方文档和社区资源方面(比如博客文章和StackOverflow问答)。
本篇文章,我们会分成几个特定原因来解释为什么我们会选择Terraform作为IAC工具。与所有技术决策一样,这是一个权衡和优先级的问题,虽然您的特定优先级可能与我们的不同,但我们希望分享我们的思维过程将帮助您做出自己的决定。以下是我们考虑的主要权衡因素:
Chef, Puppet, Ansible, and SaltStack 都是配置管理工具,这意味着它们设计初衷都是在现有的服务器上安装和管理软件。CloudFormation 和 Terraform 是配置(provisioning)工具,这意味这它们的设计初衷是配置服务器本身的(以及基础设施的其他部分,比如负载均衡器,数据库,网络配置等),将配置这些服务器的工作留给其他工具。这两类工具互相不排斥的。因为大多数配置管理工具可以在某种程度上多一些配置工作而大多数配置工具也可以在某种程度上做配置管理的工作。但是聚焦于配置管理或者配置意味着,这些工具对于特定类型的任务会更加合适。
想Chef,Puppt,Ansible 这样的配置管理工具默认针对一种可变的基础设施范例。比如,如果你告诉Chef 安装一个新版本的OpenSSL,它就会在你现有的服务器上运行软件更新并且就地生效。随着时间推移,你会更新的更多,每台服务器都会构建一个唯一的修改 历史 。这通常会导致称为配置漂移或者误差的现象,其中每个服务器与所有其他服务器略有不同,导致难以诊断且几乎不可能再现的细微配置错误。
如果你正在使用像Terraform这样的配置工具来部署由Docker 或者 Packer创建的镜像,那么每次"修改"事实上都是一次新服务器的部署(就像是函数式编程中每次变量的修改事实上会返回新的变量)。比如,当我们部署一个新版本的OpenSSL,你会用装有新版本OpenSSL的Packer或者Docker来创建镜像,然后在整组新服务器中部署那个镜像,同时卸载老的镜像。这种方法减少了配置偏差问题的可能性,使得了解服务器上运行了哪些软件变得更加容易,同时可以让你任何时候都可以轻松部署任何版本的软件。当然,也可以强制配置管理工具来做不可变部署。但是对这些工具来说,这不是惯用的方式。不管怎样,使用配置工具都是一种更加自然的方式。
Chef和Ansible鼓励一种程序风格,您可以编写代码,逐步指定如何实现预期状态。 Terraform,CloudFormation,SaltStack和Puppet都鼓励更具说明性的风格,您可以编写指定所需最终状态的代码,IAC工具本身负责确定如何实现该状态。
例如,假设您要部署10台服务器(AWS术语中的“EC2 Instances”)来运行应用程序的v1版本。以下是使用过程方法执行此 *** 作的Ansible模板的简化示例:
表面上看,这两种方法可能看起来相似,当您最初使用Ansible或Terraform执行它们时,它们将产生类似的结果。有趣的是,当您想要进行更改时会发生什么。
例如,假设流量增加,并且您希望将服务器数量增加到15。使用Ansible,您之前编写的过程代码就没法使用了如果您刚刚将服务器数量更新为15并重新启动该代码,那么它将部署15台新服务器,总共25台服务器!因此,您必须了解已部署的内容并编写一个全新的过程脚本来添加5台新服务器:
如果你执行了这个模板,Terraform会意识到它已经创建了10个服务器,因此它需要做的只是创建5个新服务器。实际上,在运行此模板之前,您可以使用Terraform的 plan 命令来预览它将进行的更改:
显然,上述例子是简化的。 Ansible允许您在部署新的EC2实例之前使用标签来搜索现有的EC2实例(例如,使用instance_tags和count_tag参数),但是必须根据每个资源的情况为Ansible管理的每个资源手动找出这种逻辑。 过去的 历史 ,可能会令人惊讶地复杂化(例如,不仅通过标签,还可以通过图像版本,可用区域等查找现有实例)。 这突出了程序IAC工具的两个主要问题:
默认情况下,Chef,Puppet和SaltStack都要求您运行主服务器以存储基础设施的状态并分发更新。 每次要更新基础设施中的某些内容时,都使用客户端(例如,命令行工具)向主服务器发出新命令,主服务器将更新推送到所有其他服务器或那些服务器定期从主服务器中提取最新的更新。
主服务器提供了一些优点。 首先,它是一个单一的中心位置,您可以在其中查看和管理基础设施的状态。 许多配置管理工具甚至为主服务器提供Web界面(例如,Chef Console,Puppet Enterprise Console),以便更容易查看正在发生的事情。 其次,一些主服务器可以在后台连续运行,并强制执行您的配置。 这样,如果有人在服务器上进行手动更改,主服务器可以还原该更改以防止配置偏移。
但是,必须运行主服务器有一些严重的缺点:
Chef,Puppet和SaltStack对无主模式有不同程度的支持,您只需在每个服务器上运行代理软件,通常在一定周期内(例如,每5分钟运行一次的cron作业),并使用它从版本控制(而不是从主服务器)下拉最新更新。 这显着减少了变动的次数,但是,如下一节所述,这仍然留下了许多未答复的问题,尤其是关于如何配置服务器以及首先在其上安装代理软件的问题。
Ansible,CloudFormation,Heat和Terraform默认都是无主的。 或者,更准确一些,它们中的一些可能依赖于主服务器,但它已经是您正在使用的基础设施的一部分,而不是您必须管理的额外部分。 例如,Terraform使用云提供商的API与云提供商进行通信,因此在某种意义上,API服务器是主服务器,除了它们不需要任何额外的基础设施或任何额外的认证机制(即,只使用您的API密钥)。 Ansible的工作方式是通过SSH直接连接到每个服务器,因此,您不必再运行任何额外的基础结构或管理额外的身份验证机制(即只使用SSH密钥)。
Chef,Puppet和SaltStack都要求您在要配置的每台服务器上安装代理软件(例如,Chef Client,Puppet Agent,Salt Minion)。 代理通常在每个服务器的后台运行并负责
安装最新的配置管理更新。
这有一些缺点:
再强调一次,Chef,Puppet和SaltStack都对无代理模式(例如,salt-ssh)有不同程度的支持,但是这些通常感觉它们是作为事后的想法加入的,并不总是支持完整的配置管理工具的功能集。这就是为什么Chef,Puppet和SaltStack的默认或惯用配置几乎总是包含一个代理,通常也包含一个master。
所有这些额外的动态部分都会在您的基础架构中引入大量新的故障模式。 每次凌晨3点收到错误报告时,您都必须弄清楚它是否是应用程序代码,IAC代码,配置管理客户端,主服务器或者服务器中的错误。 客户端与主服务器通信,或者其他服务器与主服务器通信的方式,或者......
Ansible,CloudFormation,Heat和Terraform不要求您安装任何额外的代理。 或者,更准确一些,它们中的一些需要代理,但这些代理通常已作为您正在使用的基础结构的一部分安装。 例如,AWS,Azure,Google Cloud和所有其他云提供商负责在每台物理服务器上安装,管理和验证代理软件。 作为Terraform的用户,您不必担心任何问题:您只需发出命令然后云服务商会在所有你的服务器上为你执行它们。 使用Ansible,您的服务器需要运行SSH守护程序,不管怎么样,这都会普遍运行在大多数服务器上的。
选择任何技术时要考虑的另一个关键因素是成熟度。 下表显示了每个IAC工具的初始发布日期和当前版本号(截至2019年5月)。
同样,这不是一个同类的比较,因为不同的工具有不同的版本控制方案,但一些趋势是明确的。 到目前为止,Terraform是此比较中最年轻的IAC工具。 它仍然是处于1.0.0版本之前,因此无法保证稳定或向后兼容的API,并且错误相对常见(尽管大多数都是次要的)。 这是Terraform最大的弱点:虽然它在短时间内变得非常受欢迎,但使用这种新的尖端工具所付出的代价是它不像其他一些IAC选项那样成熟。
虽然我一直在比较整个博客文章中的IAC工具,但事实是您可能需要使用多种工具来构建您的基础设施。 您看到的每个工具都有优点和缺点,因此您需要为正确的工作选择合适的工具。
以下是我见过的三种常见组合在很多公司都很好用:
配置 + 配置管理
示例:Terraform和Ansible。 您可以使用Terraform部署所有底层基础设施,包括网络拓扑(即VPC,子网,路由表),数据存储(例如,MySQL,Redis),负载均衡器和服务器。 然后,您使用Ansible在这些服务器之上部署您的应用程序。
这是一个简单的方法,因为没有运行额外的基础设施(Terraform和Ansible都是客户端应用程序),并且有很多方法可以使Ansible和Terraform一起工作(例如,Terraform为您的服务器添加特殊标签然后Ansible使用这些标签来查找服务器并对其进行配置。 主要缺点是使用Ansible通常意味着您编写了大量程序式代码,使用可变服务器,因此随着代码库,基础架构和团队的增长,维护可能会变得更加困难。
配置 + 服务器模板
示例:Terraform和Packer。您使用Packer将应用程序打包为虚拟机镜像。然后使用Terraform部署(a)具有这些虚拟机镜像的服务器和(b)基础架构的其余部分,包括网络拓扑(即VPC,子网,路由表),数据存储(例如,MySQL,Redis),和负载均衡器。
这也是一种简单的方法,因为没有运行额外的基础设施(Terraform和Packer都是仅客户端应用程序)。此外,这是一种不可变的基础架构方法,这将使维护更容易。但是,有两个主要缺点。首先,虚拟机可能需要很长时间才能构建和部署,这会降低迭代速度。其次,您可以使用Terraform实施的部署策略是有限的(例如,您无法在Terraform中本地实施蓝绿色部署),因此您要么最终编写大量复杂的部署脚本,要么转向编排工具,如下所述。
配置 + 服务器模板 + 编排
示例:Terraform,Packer,Docker和Kubernetes。 您使用Packer创建安装了Docker和Kubernetes的虚拟机映像。 然后使用Terraform部署(a)服务器集群,每个服务器运行此虚拟机镜像,以及(b)基础架构的其余部分,包括网络拓扑(即VPC,子网,路由表),数据存储( 例如,MySQL,Redis)和负载均衡器。 最后,当服务器集群启动时,它形成一个Kubernetes集群,用于运行和管理Dockerized应用程序。
这种方法的优点是Docker镜像构建相当快,您可以在本地计算机上运行和测试它们,并且您可以利用Kubernetes的所有内置功能,包括各种部署策略,自动修复,自动缩放, 等等。 缺点是增加了复杂性,无论是在运行额外的基础设施方面(Kubernetes集群都很难部署和运营,尽管大多数主要的云提供商现在提供托管的Kubernetes服务,可以减轻部分工作),还是学习、管理和debug额外的抽象层(Kubernetes,Docker,Packer)方面。
课程英文名称:Machine Learning A-Z: Hands-On Python &R In Data Science
百度网盘地址:https://pan.baidu.com/s/1a743NTKFRjsgexMTagWooA?pwd=e39j
课程英文名称:Hands On Natural Language Processing (NLP) using Python
百度网盘地址:https://pan.baidu.com/s/1xARb1TUg6mabDK7992yCTw?pwd=wwfx
课程英文名称:Autonomous Cars The Complete Computer Vision Course 2021
百度网盘地址:https://pan.baidu.com/s/1lQtYTXn3SQB0bDKF5dPItg?pwd=veap
课程英文名称:Practical Reinforcement Learning using Python-8 AI Agents
百度网盘地址:https://pan.baidu.com/s/1Nuz_QVbQ59u2WS1ldh12Gw?pwd=kc6h
课程英文名称:Advanced AI Deep Reinforcement Learning in Python
百度网盘地址:https://pan.baidu.com/s/1OqUpn_LJHyuJax-fdjYKqQ?pwd=fz91
课程英文名称:Artificial Intelligence A-Z Learn How To Build An AI
百度网盘地址:https://pan.baidu.com/s/1sZYm0zioLbFQKhD88VyPYw?pwd=ihkd
课程英文名称:TensorFlow 2.0 Masterclass Hands-On Deep Learning and AI_x000D_
百度网盘地址:https://pan.baidu.com/s/1Jh_qGA8YYXf5Azss9hpE1w?pwd=tp4m
课程英文名称:Complete Python OpenCV Computer Vision Masterclass
百度网盘地址:https://pan.baidu.com/s/1jxXiWwbmLhqxdNBzFuJQEQ?pwd=m157
课程英文名称:Kaggle Masterclass - build a Data Science Portfolio
百度网盘地址:https://pan.baidu.com/s/1U4QxTMAIPUfvbXWN-FlTTA?pwd=0fe8
课程英文名称:Data Science Real World Projects in Python
百度网盘地址:https://pan.baidu.com/s/1WU6seaX9pJZib18bvyNl5Q?pwd=dow9
课程英文名称:Docker Masterclass for Machine Learning and Data Science
百度网盘地址:https://pan.baidu.com/s/1CP_hPvE_c3V34gpUgZOHJQ?pwd=rlay
课程英文名称:Machine Learning Real World projects in Python
百度网盘地址:https://pan.baidu.com/s/1ITzJuTvPiwO9Nl3eE5hp9Q?pwd=bafu
课程英文名称:Text Mining and Natural Language Processing in R
百度网盘地址:https://pan.baidu.com/s/1PMna7ZwJALm-xZ0lvnTClQ?pwd=2xtu
课程英文名称:Unreal Engine C++ Developer Learn C++ and Make Video Games
百度网盘地址:https://pan.baidu.com/s/1zBq0Np1-7HDB8dJAVTImWQ?pwd=hck0
课程英文名称:Unreal Engine 4 Mastery: Create Multiplayer Games with C++
百度网盘地址:https://pan.baidu.com/s/1OertBtvBYK6_fU-B2iJVig?pwd=lsyf
课程英文名称:Game Development with PyGame Real World Games
百度网盘地址:https://pan.baidu.com/s/1ylis2b1RPlj2to6iXP65Sg?pwd=pbqm
课程英文名称:Beginner's Guide to Multiplayer Game Development in Unity
百度网盘地址:https://pan.baidu.com/s/1HKA3Q5P5ClX_j-TsQP2qkA?pwd=cqoj
课程英文名称:3D Web Game Development with JavaScript and Three.js
百度网盘地址:https://pan.baidu.com/s/1edZktIIH_9GKsW6AP5cDFQ?pwd=2ngm
课程英文名称:Building 2D Games in Unity Beginner to Advanced
百度网盘地址:https://pan.baidu.com/s/1GTN-KLQrz8nKI-UdzudeUA?pwd=n43e
课程英文名称:Learn 10 Games using Python - 2021
百度网盘地址:https://pan.baidu.com/s/1WuD09sjBSRnTNac6_kCUZA?pwd=by38
课程英文名称:Unity Networking From Scratch for (Unity 5 to Unity 2020)
百度网盘地址:https://pan.baidu.com/s/1fFhyiYdr58pXPT4B2VChmg?pwd=edp6
课程英文名称:React, Next.js and Django A Rapid Guide - Advanced
百度网盘地址:https://pan.baidu.com/s/1YPFZXXFqc06zjqns8BR54A?pwd=jvaq
课程英文名称:Complete WordPress Theme &Plugin Development Course
百度网盘地址:https://pan.baidu.com/s/1Q4DUTkIoS00rGylxhjUPWw?pwd=cspb
课程英文名称:HTML, CSS &Python Django Full Stack for Web Development
百度网盘地址:https://pan.baidu.com/s/1ZCviF6t56vodfx5C8jRXfQ?pwd=84g3
课程英文名称:The Complete Angular Course Beginner to Advanced
百度网盘地址:https://pan.baidu.com/s/1bpMkMRJlq6UkwfWJHjHncQ?pwd=w1u0
课程英文名称:HTML CSS Complete Guide Build a Website Like a Boss
百度网盘地址:https://pan.baidu.com/s/1SZKAtZYb9J3nAFQQqVa7mg?pwd=1slu
课程英文名称:Complete Bootstrap 5 Course From Scratch With 3 Projects
百度网盘地址:https://pan.baidu.com/s/1Yf6cA9xnOE-EiXZYmLzGTw?pwd=ptgk
课程英文名称:Django Ecommerce Project with Bootstrap Django Development
百度网盘地址:https://pan.baidu.com/s/1Rg2FMJvaO2G5HiZkkGOXzQ?pwd=vq1i
课程英文名称:Online Store E-Commerce Website in PHP &MySQL From Scratch!
百度网盘地址:https://pan.baidu.com/s/12CXZjuP7zJrMh5M3cu6oGg?pwd=ratg
课程英文名称:Build a Shopping Cart App with React, Node, and Stripe
百度网盘地址:https://pan.baidu.com/s/17y2GdstwmMIjoaLIiBBmCA?pwd=h6wk
课程英文名称:Complete Progressive Web App Bootcamp
百度网盘地址:https://pan.baidu.com/s/1xtyrAKj0eEH2X5vvVzU3vw?pwd=brf3
课程英文名称:Full Stack Development With Spring Boot And MongoDB
百度网盘地址:https://pan.baidu.com/s/1X3RhFnYUgB8dk9dIGCh9dw?pwd=51bp
课程英文名称:Vue.js Learning the basics by building a movie web app
百度网盘地址:https://pan.baidu.com/s/1FZ5YUHyam6O_iAjVo5Q3kQ?pwd=kbx5
课程英文名称:Wordpress Plugin Development with JQuery (2021)
百度网盘地址:https://pan.baidu.com/s/1NP8SZc5D3Ol_Ej_Kb42QyQ?pwd=otdq
课程英文名称:Working with WebSockets in Go (Golang)
百度网盘地址:https://pan.baidu.com/s/1QVnl3ksqOp1PgDwGrj5Crw?pwd=btbs
课程英文名称:Hands On Spring Boot Course - Build a FinTech App
百度网盘地址:https://pan.baidu.com/s/1muMB5UJymzS1iulppUVRlA?pwd=yeq8
课程英文名称:Learn Python 3 programming Become job ready using Pycharm
百度网盘地址:https://pan.baidu.com/s/1txKZEKsvRE5Wpgjpwst3dA?pwd=qyn7
课程英文名称:Master Microservices with Spring Boot and Spring Cloud
百度网盘地址:https://pan.baidu.com/s/1us3cXyexxlEOsZYC1jbsJw?pwd=j9hr
课程英文名称:Qt 6 Core Beginners with C++
百度网盘地址:https://pan.baidu.com/s/12G7om16msseMSm8s-ptMkA?pwd=wmfu
课程英文名称:Modern JavaScript From Scratch With Examples and Projects
百度网盘地址:https://pan.baidu.com/s/10HqjcZ4xg-Eu5avUCyLGdw?pwd=h66y
课程英文名称:NodeJs Build The Complete E-Commerce Web API
百度网盘地址:https://pan.baidu.com/s/1a6zAkzG78jqtUYFF8gWzoQ?pwd=h3kk
课程英文名称:Python Algo Trading Market Neutral Hedge Fund Strategy
百度网盘地址:https://pan.baidu.com/s/1lJyLzFY3AHBCJC-2b2sjxQ?pwd=6v05
课程英文名称:Java Persistence Hibernate and JPA Fundamentals
百度网盘地址:https://pan.baidu.com/s/1oEpuIcDEwavxR2hIYQ574g?pwd=p6ao
课程英文名称:PHP for Beginners PHP Crash Course 2021
百度网盘地址:https://pan.baidu.com/s/14WE7zJFDFhKVn-QrIqT51A?pwd=j54m
课程英文名称:Python GUI Programming With TKinter - Build 10 GUI Projects
百度网盘地址:https://pan.baidu.com/s/1x_4NVexDSy3I--gq-4j9CA?pwd=kk7t
课程英文名称:Advanced Scala and Functional Programming
百度网盘地址:https://pan.baidu.com/s/1n0_36W59P8dxTtBz7aYaLg?pwd=fapn
课程英文名称:Perl Programming for Beginners
百度网盘地址:https://pan.baidu.com/s/1iBLncqtwaAGYinOjexG6XA?pwd=2rtc
课程英文名称:Spring Boot Actuator - Build an Admin Dashboard
百度网盘地址:https://pan.baidu.com/s/1FyKjmwJJ_RfxdxyHTEvhGA?pwd=5jiu
课程英文名称:The Complete Java Development Bootcamp
百度网盘地址:https://pan.baidu.com/s/1NBx_iPjVwvbgoZABBMnn9A?pwd=i411
课程英文名称:The Complete R Programming for Data Science - 7 courses in 1
百度网盘地址:https://pan.baidu.com/s/1Knq2dM7-S5gM72cYHtjj2w?pwd=020p
课程英文名称:Master NestJS - The JavaScript Node.js Framework
百度网盘地址:https://pan.baidu.com/s/1t2sHoN1d6vTu0Ni7BmJZGw?pwd=1wd2
课程英文名称:Excel Automation Using Python
百度网盘地址:https://pan.baidu.com/s/1ULngfsy0aFUo3c8zFw9j4w?pwd=e5vs
课程英文名称:Scala Programming For Beginners Complete Guide
百度网盘地址:https://pan.baidu.com/s/1A7ilgnpHFXbKtBV5tKG2ow?pwd=sczs
课程英文名称:R 4.0 Programming for Data Science - Beginners to Pro
百度网盘地址:https://pan.baidu.com/s/19xzkNuNvmZKxFUta30XScw?pwd=6os7
课程英文名称:Core Java Programming Language Tutorial for Beginners
百度网盘地址:https://pan.baidu.com/s/1nwzW93BeNcCYIk4hBLqkCw?pwd=x5fg
课程英文名称:Java Design Patterns - The Complete Masterclass
百度网盘地址:https://pan.baidu.com/s/1jUmxyKNSzArT2l6NKZE50A?pwd=qwo0
课程英文名称:Java for Beginners -Learn all the Basics of Java
百度网盘地址:https://pan.baidu.com/s/1mk9qTdF0jLPjRmDwoSfbhg?pwd=hc3d
课程英文名称:JAVA GUI Programming with Swing
百度网盘地址:https://pan.baidu.com/s/1onnq-VQcGvE8iZXZDjORmg?pwd=fznf
课程英文名称:JavaScript Game Development Create a Zombie Horde Game
百度网盘地址:https://pan.baidu.com/s/1SfGZgrv1HFnVyn6tundisQ?pwd=0zp3
课程英文名称:How to write clean Kotlin and Android code!
百度网盘地址:https://pan.baidu.com/s/1v-gObBOOyYIpTDUwUH7Z8Q?pwd=4bw6
课程英文名称:Kafka Streams with Spring Cloud Stream
百度网盘地址:https://pan.baidu.com/s/1rwYCFQgHj5rDBjNuKW2cTg?pwd=7iqv
课程英文名称:Preprocessing Data with NumPy
百度网盘地址:https://pan.baidu.com/s/1Hful2ipRautv0QBX_pzdiw?pwd=2stf
课程英文名称:Programming in SAS for beginners
百度网盘地址:https://pan.baidu.com/s/116xkjD8ERK7SlcSGTYMQaQ?pwd=59jh
课程英文名称:Ansible Beginner to Pro
百度网盘地址:https://pan.baidu.com/s/1x8NY3zn1JekK0EBUwdWCmA?pwd=bpd3
课程英文名称:Linux Command Line basics to Advance
百度网盘地址:https://pan.baidu.com/s/11wFquu7qZNoyR-fX_-c7Ww?pwd=hdtu
课程英文名称:Automated Software Testing with Python
百度网盘地址:https://pan.baidu.com/s/1qIv3le1IDR-ihta9oXm3kw?pwd=fo4n
课程英文名称:The Software Testing Bootcamp
百度网盘地址:https://pan.baidu.com/s/1zofYoXZYdRlcp3TLjZJOwQ?pwd=huyo
课程英文名称:Learn Ethical Hacking Advance Level Using Kali Linux
百度网盘地址:https://pan.baidu.com/s/1uo5k5WcvSl2z33OwpdySqw?pwd=8e1n
课程英文名称:Visual Studio Code Crash Course 2019
百度网盘地址:https://pan.baidu.com/s/1DcTSWYvXylgftm7_rKTy3Q?pwd=op9f
课程英文名称:Apache Tomcat Server from Beginners to Advanced
百度网盘地址:https://pan.baidu.com/s/1J6ls7nDaX8KxaeENHEzjvw?pwd=brf9
课程英文名称:Learn Blockchain By Building Your Own In JavaScript
百度网盘地址:https://pan.baidu.com/s/1O_MWf7efq7sKskU_ydVXhg?pwd=y5u5
课程英文名称:Learn MATLAB
百度网盘地址:https://pan.baidu.com/s/1arrJWhv03wova1CykgZntQ?pwd=xftx
课程英文名称:Learn MATLAB Programming Skills While Solving Problems
百度网盘地址:https://pan.baidu.com/s/1qtnPjdlQ8pN3vPQ0M5SH7w?pwd=4vuc
课程英文名称:Complete Remote Sensing Image Analysis with ENVI Software
百度网盘地址:https://pan.baidu.com/s/1mLCMegAqvx4GgKzQiQ9-Nw?pwd=u9f7
课程英文名称:MicroPython Programming Hardware in MicroPython
百度网盘地址:https://pan.baidu.com/s/1NPYTbEGWKtbx_XYs4Zeucw?pwd=zde1
课程英文名称:QGIS plugin development with Python
百度网盘地址:https://pan.baidu.com/s/1Eg5MHctQFhjo1WhVWRmYAA?pwd=08tu
课程英文名称:A Hacker's Guide to Internet Safety and Cybersecurity
百度网盘地址:https://pan.baidu.com/s/1uWSzOQJKIma8RRUt4TsgdA?pwd=yeta
课程英文名称:Advanced Python for IoT Based Data Analysis
百度网盘地址:https://pan.baidu.com/s/1wIrWGy9LcdjqJpLUP6pLuw?pwd=bvni
课程英文名称:Advanced Web scraping (Images, Charts, Dynamic with Ajax)
百度网盘地址:https://pan.baidu.com/s/1FzkLpahJDQ1-b6s31mw0QA?pwd=xyou
课程英文名称:Complete Git and Github Beginner to Expert
百度网盘地址:https://pan.baidu.com/s/1qW_GwSFCAtxH8SxnEr_Tgg?pwd=nc17
课程英文名称:Internet of Things (IOT) - Full Course for Learners
百度网盘地址:https://pan.baidu.com/s/1oyscQoaCnCtAI4pE_wCiRg?pwd=4u6k
课程英文名称:IoT Internet of Things Crash Course
百度网盘地址:https://pan.baidu.com/s/1mruQswoWxfCh-cV5nxCdMg?pwd=wf7w
课程英文名称:Practical Java Unit Testing with JUnit 5
百度网盘地址:https://pan.baidu.com/s/10ssJ6O8fzeE15IBF1tp0Ug?pwd=u6tg
课程英文名称:Product Management Crash Course
百度网盘地址:https://pan.baidu.com/s/1wcnRlqhWBmicIEs2svvlrw?pwd=uqcm
课程英文名称:Python for IoT Tutorials
百度网盘地址:https://pan.baidu.com/s/1qlXtoiErvWZov5-Ml-YUpQ?pwd=1pwq
课程英文名称:Spatial Analysis &Geospatial Data Science in Python
百度网盘地址:https://pan.baidu.com/s/1ZE3z7C95a_RZe18FG3pQvw?pwd=ja1i
课程英文名称:Docker and Kubernetes The Complete Guide
百度网盘地址:https://pan.baidu.com/s/1eDPO_UKqcISY8DdgQm53vA?pwd=00q4
课程英文名称:Kubernetes Microservices
百度网盘地址:https://pan.baidu.com/s/17tu3SleLRFTz4XE2cOCHrA?pwd=5fc9
课程英文名称:Kubernetes and Docker Recipes for Experts (2-in-1 Course)
百度网盘地址:https://pan.baidu.com/s/1hTzXWzoyInsNj9sthSMcfw?pwd=m9vs
课程英文名称:Cloud Computing and the Cyber Security Challenges
百度网盘地址:https://pan.baidu.com/s/1wA7o_eYDk38A82owizzI2w?pwd=d29y
课程英文名称:Cloud Computing and Virtualization An Introduction
百度网盘地址:https://pan.baidu.com/s/1lrak60XOGEqMOI6lXYf6TQ?pwd=ns0j
课程英文名称:Deploy Infra in the Cloud using Terraform
百度网盘地址:https://pan.baidu.com/s/1_DC6BvNgeUhAxvUKwJwZGA?pwd=7rr1
课程英文名称:Hands-On Guide to Argo Workflows on Kubernetes
百度网盘地址:https://pan.baidu.com/s/12z8edprKpUBO4tWkRXGDyw?pwd=ejc4
课程英文名称:Microservices with Spring Cloud
百度网盘地址:https://pan.baidu.com/s/1Ax0XuNFiC0k8uKoAlYYieg?pwd=dwbj
课程英文名称:Data Structures and Algorithms for Beginners
百度网盘地址:https://pan.baidu.com/s/1ieJDWs3gWBrSYkgflvnyKQ?pwd=9eqx
课程英文名称:Practical Database Course for Beginners : 6 courses in 1
百度网盘地址:https://pan.baidu.com/s/1fERQTfilJjjh_AkbFtP9vw?pwd=3wl5
课程英文名称:Graph Database Neo4j with Spring Boot
百度网盘地址:https://pan.baidu.com/s/19OIBkPPvoSfPiFIjB5g4rg?pwd=jgzo
课程英文名称:PostgreSQL Tutorial for Beginners - Learn PostgreSQL
百度网盘地址:https://pan.baidu.com/s/1OlYJaeR8Xp5wPalc0rRvBw?pwd=i118
课程英文名称:Python for Excel: Use xlwings for Data Science and Finance
百度网盘地址:https://pan.baidu.com/s/14_AOQtVygoMemuW-UhqKUg?pwd=n3gt
课程英文名称:SQL for Data Analysis &Data Science
百度网盘地址:https://pan.baidu.com/s/1zCd1vdBzUDsa88E4AWEoXg?pwd=cdfc
课程英文名称:Tableau Expert - Top Visualization Techniques in Tableau 10
百度网盘地址:https://pan.baidu.com/s/1a6_M2wtjE3JuyBdDNAqApQ?pwd=wxmk
课程英文名称:Algorithms for Cryptography
百度网盘地址:https://pan.baidu.com/s/1mGaJ-EKbKdW6StaJbhFbuQ?pwd=p7eg
课程英文名称:SQL Database Migration
百度网盘地址:https://pan.baidu.com/s/10chjjjRTaWLkxmT8Mjix9g?pwd=q89h
课程英文名称:Introduction to Design and Analysis of Algorithms
百度网盘地址:https://pan.baidu.com/s/1JyCuBIbaxwNuQEhshXOQQA?pwd=3pa9
课程英文名称:Microsoft SQL Server Backup and Recovery Course
百度网盘地址:https://pan.baidu.com/s/11RtTZwuWWSxtjbAW1-Ii-w?pwd=yllw
课程英文名称:The Complete Nodejs MySQL Login System
百度网盘地址:https://pan.baidu.com/s/1CEgz-NfdF0UTUrzGQ8UFEQ?pwd=celn
课程英文名称:Time and space complexity analysis (big-O notation)
百度网盘地址:https://pan.baidu.com/s/1yiLXMK4MsrFUiV5OmQDypg?pwd=6xta
课程英文名称:Time Series Analysis and Forecasting Model in Power BI
百度网盘地址:https://pan.baidu.com/s/1ZE6TpX98x_zbtNM3ZT9tew?pwd=88cr
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)