阿里云运维架构实践秘籍
上QQ阅读APP看书,第一时间看更新

3.4 “胶水语言”

“胶水语言”指的是用来连接软件组件的程序设计语言,通常指脚本语言。何为“胶水”?就是这种语言能嵌套或者粘着其他编程语言一起使用。它不仅能自己单独运行,其他开发语言还可以单独调用它。哪里要用,就粘到哪里。而这其中,最著名的要属于Python语言了。已经接触过Python的开发人员都了解“胶水语言”的巨大优势。Python开发的程序工具可以很方便地嵌套到Java、C、PHP、C#等开发语言中进行使用。比如以下案例:

1)Ossutil是基于OSS API的一款OSS文件操作工具,源码通过Python实现,它可以实现对OSS文件的增、删、查、改等相应功能。在Linux运维中,我们可以采用“Shell+Ossutil”方式来对OS层面的文件、文件夹做异地备份。

2)再如大家熟知的Ansible这款工具,源码也是基于Python的。我们可以通过Java来调用Ansible,以实现自动化的一些管理操作等。

Python也是网络攻防的第一黑客语言,它正在成为编程入门教学的第一语言以及云计算系统管理的第一语言。Python程序员最爱说的一句话是:“人生苦短,我用Python。”这句话后面更多隐藏着Python设计的哲学:“优雅、明确、简单”。Python是完全面向对象的,函数、模块、数字、字符串都是对象,不像Java中还有基本类型。所以前面说的一句话:Java中一切皆对象,相比于Python, Python更加适用这句话。

Python的主要优势还是在于代码量小、维护成本低、编程效率高。语言的特性决定了语言的应用场景,即同样一个需求,用不同语言来实现,代码量相差很大。一般情况下,Python代码量是Java的1/5。

在云端实践中,Python一般会运用到以下3种热门场景中。

1.DevOps

说到运维、自动化运维、DevOps, Python一直是热度最高的开发语言。基本上Linux系统都会默认安装Python,加上Python在Linux OS层面有丰富的库,这是运维实现自动化运维而替代人工运维的重要手段。比如,通过Python实现备份、SSH登录、文件操作等,其实跟Shell一样简单。Python直接导入对应的OS库,用简单几行代码就可搞定。若想用Java来实现这些功能是很不容易的事,因为Java不擅长。所以在一些自动化的运维平台中,我们优先选择使用Python。在一些系统类的运维工具中(比如前面所说的Ossutil工具),我们也是优先选择Python。

在从事云端运维的这几年,我面试过很多资深的运维。他们在职业生涯发展到一定阶段、运维领域方面的技术已经学得差不多的时候大多都会遇到同样的瓶颈,就是开发能力的缺失,导致其没办法在自动化运维领域及技术领域做更多的事情,所以很多人希望有机会掌握Python这种技术。但很多运维人员说自己熟悉Python,我却发现最多也就是会使用Python写一些日常运维的基础脚本,如备份、安装配置等。在我看来,这跟熟悉了Python语法,写一个“Hello World”没什么两样。如果没有用Python写够几万行代码,我觉得还是停留在学习Python语法的阶段。但这也是运维一直以来最大的痛点。在日常运维场景下,没有更多需求、复杂场景能让我们写更多的Python代码了,这是我们一直不具备研发能力的客观原因。所以想熟练掌握Python,别无他法,只能从事相关的职位或进行相应的开发。

我当初学习Python,也是因为在DevOps方面有需求。我花费了一个星期的时间学习Python的语法和特性,然后在OSS的客户端工具(Windows中基于OSS的一个类似FTP的工具,能同步Windows文件目录到OSS中)上面做二次开发,增加新的功能。通过这个项目,我熟练掌握了Python语法、特性、多线程编程。后来,阿里云官方最初的ECS CLI工具,也是我带着一个Python开发人员写出来的。业务场景的需求、开发进度的压力促使我掌握了这门技术,而且越来越熟练。

2.网络爬虫

网络爬虫是Python擅长的强势领域。Python所具备的爬虫框架Scrapy、HTTP工具包urlib2、HTML解析工具Beautiful Soup,让其在爬虫方面非常高效、快捷。所以在数据分析、数据挖掘这方面,很多公司都会选择使用Python, Python在这方面有先天的语言优势。对于很多初学者来说,要想快速掌握Python,通过爬虫来做业务场景的演示是不错的选择。现在很多网站甚至业务中的主要数据来源都是通过爬虫来获取的。

3.人工智能

Python已经是数据分析和人工智能的第一语言,早就成为Web开发、游戏脚本、计算机视觉、物联网管理和机器人开发的主流语言之一,随着Python用户的增长,它还有机会在更多领域登顶。

在未来,云计算是基础设施,人工智能才是科技的未来。而Python之所以会成为人工智能首选编程语言,主要是出于以下几个原因:

(1)开发效率高

Python开发的效率非常高,即用少量代码就可以做很多事。因为人工智能涉及大量的研究,如果用Java的话,也许要写200KB的代码来测试及验证新的假说。但用Python,用户的每一个想法几乎都可以迅速通过二三十行代码来实现。

(2)强大的第三方库

Python有非常强大的第三方库。基本上想通过计算机实现的任何功能都能在Python官方库找到对应的支持模块,这可以有效地避免重复“造轮子”,这也是Python在DevOps领域运用广泛的原因。因为Python具备强大的OS层的第三方库,能让我们非常高效地实现操作系统层面的任何操作。而Python在人工智能领域提供了像Scikit-learn这样的好框架,集成了经典的机器学习算法,这些算法是和Python科学包(NumPY、SciPY、Matplotlib)紧密联系在一起的。所以Python在人工智能方面扮演着重要的角色,Python中的机器学习实现了人工智能这一领域中的大多数需求。

(3)灵活性强

Python具有可移植性、可扩展性、可嵌入性等特点。对于人工智能来说,其灵活性的应用是非常重要的。