vlambda博客
学习文章列表

浅谈自动化运维中 : 编程语言的选择

以下这段话来自百度百科“

随着信息时代的持续发展,IT运维已经成为IT服务中重要的组成部分。面对越来越复杂的业务,面对越来越多样化的用户需求,不断扩展的IT应用需要越来越合理的模式来保障IT服务能灵活便捷、安全稳定地持续保障,这种模式中的保障因素就是IT运维。从初期的几台服务器发展到庞大的数据中心,单靠人工已经无法满足在技术、业务、管理等方面的要求,那么标准化、自动化、架构优化、过程优化等降低IT服务成本的因素越来越被人们所重视。” 

作为开场白。


Python云时代的钥匙


我从2005年到2018年,长达13年一直使用JAVA作为的primary工具来处理我一切需要自动化的复杂需求。但是时代变了,我其实需求没变,但未来是云,云的阶梯python是第一步。


Python的确是我见过最简单,容易上手的语言,简洁得不能再简洁的语法,非常利于新人。而且python已经拥有惊人庞大的类库。在云时代的各种技术里面,你总逃不开python。


我初次使用python实现了一个log分析工具,大概6小时的时间,实现如下功能:

list summary:汇总每种ORA错误,并按预定的集中severity排序。

list ORA-XXXX,ORA-XXXX:按时间显示你想观察的错误

draw ORA-XXX,ORA-XXX:用散点图展示错误的发生概况

浅谈自动化运维中 : 编程语言的选择

python的图表居然只需要几行

浅谈自动化运维中 : 编程语言的选择

 

编程中主要利用python的图表,数据结构,文件IO,多线程。整个学习过程平滑顺利,主要靠baidu解决。


但是随着我想慢慢实现更多的功能,代码量开始增加。我发现了两个问题:


  1. 采用换行来控制语句块的作用范围,而不是像其他语言一样严格要求使用括号,例如{}。当代码的长度达到一定的复杂度后,不得不将显示器立起来观看。当然也可能是我代码习惯差导致~~

    浅谈自动化运维中 : 编程语言的选择

  2. 变量无须定义类型。看似方便的功能。到后期,我必须得写一个叫getVarType的函数来搞明白,我之前是在怎么考虑的这个变量。

  3. 用户的服务器普遍都是python2,何时才能默认python3,用户的server要安装个python3,需要各种解释解释,算了,还是滚回shell...


有人说python其实是胶水语言,的确说明了它的一些特点,但自动运维领域,就是它的优点。如果你要选择一门语言作为你的工具,那肯定是python。


Go语言,来自google,docker的内核实现

浅谈自动化运维中 : 编程语言的选择


优点和python一样,比python还简洁,利用print在屏幕打出游戏场景和贪吃蛇游戏。代码仅仅180行。

浅谈自动化运维中 : 编程语言的选择


可惜就是,用户的环境连python3都没有,何谈go语言编译器。

国外的环境的确比国内OPEN太多,以前一个在投行的兄弟告诉我,他们70%的shell都改造成go了。


Java目前为止依然大型后台应用的最佳选择之一

浅谈自动化运维中 : 编程语言的选择

无论是做web,还是做后台应用,还是做图形界面,还是做EJB,还是网络通信,各种接口,Java依然是那么的严谨和专业,扩平台,高性能。除了代码略显啰嗦以外,没有缺点。




C# 实现win应用的最佳选择

浅谈自动化运维中 : 编程语言的选择

C#微软的东西,一向不比自家东家的轻量,安装一个学习版的VS STUDIO需要更新半天时间。C#的语法和思想和JAVA非常像,也非常容易学习。但C#不跨平台,这是它天然不适合自动化运维的一个弱点。但C#非常适合做win应用,尤其是一些其他语言实现非常复杂的功能,例如钩子程序,例如抓包。

曾经考虑用Java来写模拟键盘,鼠标动作的测试程序,发现它其实是调用windows的DDL,非常的麻烦,最后用C#,简单明了,一个class全搞定。

同时做tcp抓包也有现成的类库,特别方便。为啥自动化运维要抓包?以前一个用户问我insert batch成功没有, tcp抓出来一看,还是几千条SQL,打回修改。

前年在PUBX最火热的时候,写了一个鼠标压枪宏,非常好用~~



Shell,依然会使用到,特别是会用于调用python

虽然我也长期在用到bash,但shell依旧是我最讨厌的语言之一。艰难的调试,过目就忘的语法。 


C, C++ 

应该用于写大型服务器的后台,大型软件的底层,属于数学系高材生的工具。


Html/CSS/JS

Html其实不算编程语言,它只是web脚本语言。但俗话说,内功靠修炼,外功靠包装,web脚本语言就是你的包装。在自动化运维时代的体验,是漂亮的web界面,还是粗糙的字符界面的好,答案不言而喻。JS,特别是Jquery,Node.js这些类库,非常好用。


个人建议:选择python做为自己的首选工具,如果对编程有浓厚兴趣,建议再学学java,尤其是JDBC,国内大型企业中10个应用9个是JDBC。


新手入门,建议写一个贪吃蛇游戏,从而一次性熟悉基本的控制结构,数据结构,多线程,文件IO(保存进度),再尝试深入。


建议的IDE, python=VS CODE, java=netbean, C#=VS 学习版


最后新手入门,

Python3.0Win10的配置方法

Download python

https://www.python.org/downloads/windows/

 

安装完成后配置环境变量,如图:

   

浅谈自动化运维中 : 编程语言的选择

                        

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。

下载保存到python路径下且解压压缩包

浅谈自动化运维中 : 编程语言的选择



安装


 安装完成后再次配置pip环境变量


 


测试

c:\Python\Python38-32\pip-19.3.1>piplist

Package         Version

----------------------

cycler          0.10.0

kiwisolver      1.1.0

matplotlib      3.1.2

numpy           1.17.4

pip             19.3.1

pyparsing       2.4.5

python-dateutil2.8.1

setuptools      41.2.0

six             1.13.0

 

c:\Python\Python38-32\pip-19.3.1>

 

安装你所需要的类库

例如:建议在VPN网络下安装,或者换成国内的源(自行百度)


pip install numpy #cmd中输入

 


 

IDE建议,建议使用VS CODE(免费)

VSCode(Visual Studio Code)是由微软研发的一款免费、开源的跨平台文本(代码)编辑器,VS CODE的插件安装,也建议在公司网络下进行