浅谈自动化运维中 : 编程语言的选择
Posted 西区O记重案实录
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈自动化运维中 : 编程语言的选择相关的知识,希望对你有一定的参考价值。
以下这段话来自百度百科“
随着信息时代的持续发展,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解决。
但是随着我想慢慢实现更多的功能,代码量开始增加。我发现了两个问题:
采用换行来控制语句块的作用范围,而不是像其他语言一样严格要求使用括号,例如{}。当代码的长度达到一定的复杂度后,不得不将显示器立起来观看。当然也可能是我代码习惯差导致~~
变量无须定义类型。看似方便的功能。到后期,我必须得写一个叫getVarType的函数来搞明白,我之前是在怎么考虑的这个变量。
用户的服务器普遍都是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.0在Win10的配置方法
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的插件安装,也建议在公司网络下进行
以上是关于浅谈自动化运维中 : 编程语言的选择的主要内容,如果未能解决你的问题,请参考以下文章