想转 Python 自动化运维,好转吗?

2017-10-13 09:39:35 +08:00
 xiangdong

做了三年的 java 开发,但是都是从别人手里接过来继续完善,改改 bug,现在也在从头做一个项目,开到详细设计阶段;但是感觉自己的 java 技术可能有点落后,在考虑明年转做 python 自动化运维,和运维相关的工作,因为这三年除了开发之外的工作就是实施,运维,linux,solaris 操作系统都会一些。

13962 次点击
所在节点    Python
60 条回复
lgpqdwjh
2017-10-13 09:50:59 +08:00
就目前的招聘市场来看,java 求生比运维要强很多, 为什么我这么说?

谈谈 python 自动化,一般公司其实并不需要, 因为已经快 2018 年了, 众多服务已经打包好了, 所以目前比较吃香的运维职业系属 “开发运维”、“存储运维”、 “平台支撑运维” 等,这些都需要一定的编码能力并且要对运维流程、管理非常了解才能非常好的支持到开发或者说非常好的完成厂里的指标。

那么,既然都是编码,java 可以落后, 做运维就不一定会领先别人?

从学习的角度来讲,我建议是要多学多看,不要被职业所限制。

当然如果你确信你要做运维,好转(只要你肯努力,肯实践)。
Tinet
2017-10-13 10:16:53 +08:00
千万不要入运维的坑,吃力不讨好的职业
lixm
2017-10-13 10:20:49 +08:00
为什么不用 java 做自动化运维呢?
zgbgx1
2017-10-13 10:21:04 +08:00
为什么 不好好做 java 了,待遇应该更好吧
topbandit
2017-10-13 10:27:29 +08:00
大多数人都会说,运维是背锅侠
xiangdong
2017-10-13 10:28:22 +08:00
@lixm java 自动化运维我还没了解过。。。
xiangdong
2017-10-13 10:29:12 +08:00
@zgbgx1 没什么大的项目经验,感觉自己很落后了。也在想利用业余时间学一门新语言,所以这么考虑的
xiangdong
2017-10-13 10:29:30 +08:00
@topbandit 那倒是。哈哈哈哈
xiangdong
2017-10-13 10:31:46 +08:00
@lgpqdwjh 谢谢,我也不确定自己现在是不是开发运维,就是有开发,也有运维的工作,我们也有自己的平台。主要语言就是 java,shell 写的少。
HarrisonZ
2017-10-13 10:40:43 +08:00
运维自动化路很窄,市场需求小。还是做开发吧。如果真的想搞相关的就去研究 PaaS,golang,k8s,容器技术,这些才是未来,然后求职就只有云厂商或者有意做专有云的公司
xiangdong
2017-10-13 10:55:48 +08:00
@HarrisonZ 嗯。我再好好考虑考虑。
8355
2017-10-13 11:49:04 +08:00
简单说个比例 一个公司 30 个开发 可能只有一两个运维 管理不了几台服务器 你还不如做一个可以运维的开发 一般规模的公司对于这样的人都是按小领导培养 毕竟服务器不能随便给一个人是吧.
8355
2017-10-13 11:51:20 +08:00
还有就是以你 3 年工作经验来说 linux 你又了解多少. 如果非常了解 只是需要学 python 帮你实现自动化运维的话, 那应该学 但你如果 linux 也不是很熟悉 一边学 python 一边还要研究 linux 进度慢不说 还痛苦
unbeau
2017-10-13 11:51:59 +08:00
运维是大坑
lihongjie0209
2017-10-13 12:01:11 +08:00
最近打算写一些脚本来做自动化服务, 大概说说我的感受.

1. 首先排除 Bash, 功能太弱, 可读性太差.
2. Python,
- 首先 Python 的版本问题.
在 Centos6 中 Python 是 2.6 的, 如果你想使用 Python 的一些新的特性, 最起码应该是 Python2.7 加一些向后兼容的性的库, 比如 future 库, 不然你会在 byte/str/Unicode 之间备受折磨.
so, 使用 Python 的第一个条件是使用 Bash 来维护 Python 版本, 你不可能每台服务器都手动装 Python.
- 其次, 包管理.
同样的, 你想让自己的生活好一点, 那么你就需要使用一些第三方的库来简化一些原生的脚本, 那么你就涉及到了使用 pip 来管理 Python 的第三方包.
so, 使用 Python 的第二个条件是使用 Bash 来维护 Python 的第三方包.
当然你可以说: 我只用 Python 的原生库, 不需要第三方依赖, 减少维护工作. 当然你可以,但是恭喜你, 你开始重复造轮子了, 而且这些轮子都不能复用, 所以你每次都只能把以前的代码 Copy 过来, 写出了真正的"脚本". 比如你想写一个小爬虫, 那么你是用 requests+BeautifulSoup/Lxml 还是原生的 urllib + dom 解析库呢. 从这个例子中可以总结出来: Python 并没有简化运维这项工作.
- 最后 Python 语言本身的问题.
Python 语法确实接近自然语言, 而且提供一些方便的内置函数, 写个 Demo 确实很漂亮, 可是当你一旦开始写真正的项目, 你就会发现动态语言带来的问题, 前几天打算写一个 Python 脚本调用 Bash 命令, 下面是这个函数的参数列表:

```
class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=(), *, encoding=None, errors=None)
```
请数一下这个参数列表有多少参数, 请告诉我这叫优雅? 参数列表一旦变长, 参数间的组合就有很多可能, 而且还有许多开关参数(布尔值), 导致文档中的许多描述都是: 如果这个参数 XXXX 或者那个参数 XXXX 就会 XXXX. 稍微有点工程代码规矩的人都会避免参数列表超过 3 个, 不然会导致调用者难以使用.
当然我发现有一些在这个函数上的封装函数, 看起来不错, 刚打算使用,发现是 Python3 之后的特性, 我停下写脚本, 开始考虑我这个脚本是否需要兼容 Python2, 如果需要兼容 Python2, 那么我就需要把我服务器的版本升级到 Python2.7, 然后我就需要维护一个 bash 脚本管理 Python 仅仅是为了一些新特性.

总结: Python 并没有减轻一些运维负担, 而是把更多的负担交给了开发者, 包括包管理以及语言兼容性.

3. java
java 作为运维目前还在考虑中, 但是可以知道的是开发者并不需要关心包管理以及语言兼容性的问题.
artandlol
2017-10-13 13:47:43 +08:00
大部分是从运维转研发
你却想从研发转运维
运维比较吃香的还是自动化,DBA,微服务。
就是研发运维了
rocksolid
2017-10-13 13:54:47 +08:00
没有大的项目经验有什么关系,只要基础好照样很多公司要啊,大厂自动化运维要求很高,小公司不需要自动化运维,这转的没太大意义
bomb77
2017-10-13 14:16:41 +08:00
不好,
想学 python 就学,想搞自动化就弄弄看,java 写的好好的干嘛不写了
lyao
2017-10-13 15:15:22 +08:00
自动化运维比较系统的还得是以 Chef 为代表的 Ruby 家族. 你有开发基础, 从 Chef 入手会更快一些. 等掌握了 Chef 之后再看 Python 家族. 这样不仅可以补 Chef 的短板, 还可以为后面的 Big Data / AI 做准备. 时代变了, 运维也可以挑战百万年薪咯, 不过也可能是购买力严重缩水造成的 ORZ
est
2017-10-13 15:31:40 +08:00
这么多楼了没有一个人说 ansible ?

把 chef puppet salt expect pssh fabric capistrano mina 这些秒得渣都不剩。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/397254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX