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

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

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

14075 次点击
所在节点    Python
60 条回复
xiangdong
2017-10-13 15:35:55 +08:00
@lihongjie0209 十分感谢,在好好考虑考虑。
est
2017-10-13 15:36:51 +08:00
很多人的自动化运维思维还停留在上个实际的层次:

1. 运行 A
2. 执行 B

现在都是 状态收敛 作为基本出发点了。什么是状态收敛?

supervisor:
- name: proj_abc
- state: restarted

这三行表示最终状态是 proj_abc 被重启

如果 proj_abc 已经启动了,则重启它的 pid。
万一 pid 不存在呢?还得检查 proj_abc 是否已经启动。没启动则启动
然后得查有无 proj_abc 这个项目,没有的话会依赖复制把这个 proj_abc 项目激活
其次也得查有没有安装 supervisor,没有的话连 supervisor 也要安装上

三句话收敛成一个最终状态。
salmon5
2017-10-13 15:38:18 +08:00
还是老老实实最业务开发吧,自动化运维这个自动化它有很多很多前提,小公司搞不好业务需求也不大,大公司难度大也难搞。
xiangdong
2017-10-13 15:38:42 +08:00
@rocksolid 我的开发经验不算多,多数是在写别人架构好的项目,把功能实现,修改程序 bug,完善业务流程,所以总感觉缺点什么,除此之外就是不断的改 bug,一个人负责四五个和平台相关的程序。
xiangdong
2017-10-13 15:39:29 +08:00
@8355 有道理
xiangdong
2017-10-13 15:40:40 +08:00
@artandlol 嗯。我在考虑考虑。。。
youyoumarco
2017-10-13 16:01:09 +08:00
还是开发吧,几线城市都需要开发,但是运维确不是必须的
defunct9
2017-10-13 16:04:07 +08:00
运维挺好的,快转吧。
rocksolid
2017-10-13 16:17:44 +08:00
@xiangdong 大部分人都是这样的,关键看你工作外自己做了什么
lolizeppelin
2017-10-13 17:46:39 +08:00
呵呵 觉得运维的代码好写转运维?

openstack 就是一套运维代码 你可以试试看好不好学

顺便上面扯 Java 的 好好想想有啥运维工具用 java 写的

居然不用关心包管理都出来了
lixm
2017-10-13 17:56:02 +08:00
@lolizeppelin java 就不能写运维工具么? 我目前就在用 java 写运维工具,基于 mesos 做的 CI/CD,说到 openstack, 现在用的比较多的 ZStack 也是 java 写的,我以前写 Python 的,后来转的 java, 当团队里,水平差异比较大的时候,java 要比 Python 好很多,至少不会相互看不懂代码
artandlol
2017-10-13 18:33:30 +08:00
@est ansible-playbook 应该就是你说的那种状态收敛
感觉都还是半自动化的,不知 DevOps 能否实现完全自动化
DoctorCat
2017-10-13 18:35:57 +08:00
就是去做运维业务开发而已,不用想太多,技术都是相通的。
一般的码农岗位都是 CRUD+前端,运维开发有机会去了解高可用系统架构、网络架构、IDC 建设。
其实,还得看个人。基本的 CRUD+前端+高可用架构方案,都了解差不多了,以后 Web 开发领域做啥不行啊,纯业务导向罢了。
DoctorCat
2017-10-13 18:39:14 +08:00
建议站在技术栈的角度来思考问题提升技术认识和格局,而不是具体的“ XX 开发”岗位
lolizeppelin
2017-10-13 18:47:22 +08:00
bash 还能 socket 编程呢
python 做运维语言优势比 java 大多了,不然为什么 Linux 用 python 来管系统而不是 java?为什么 python 能取代 perl 在系统里的地位?

至于包管理, 按 linux 的规范用就应该用系统包(rpm、dep)来管理,根本就不该用 pip,用 bash 来管就是更加错误

Popen 那个本来就是底层调用有那么多东西要考虑,你不想考虑那么多完全可以用只有几个参数的执行方式.
这个和 python 没任何关系,无论你用什么语言做系统调用都一样

这就好比 openstack 一个组件的配置有几百条,你能说这个组件设计得不好居然有那么多参数可以设置?

动态语言的问题参数的问题其实没那么大,一定阶段确实会不适应,代码架构够好就不是大问题,可以学 openstack 怎么做的

---

“ Python 并没有减轻一些运维负担, 而是把更多的负担交给了开发者, 包括包管理以及语言兼容性.”
在你看来开发和运维是隔离的, 如果运维和开发是一体的?负担在哪有毛线区别?
至于兼容性..哪有那么兼容性..系统管理老老实实用系统自带版本,主流系统上只有 2.6 和 2.7,要兼容的地方根本不多,跨系统的兼容性其他语言好得到哪去?除非一开始上了当用了 python3

---

java 有 java 的优势,但不能因为你们的技术栈是 java 和 java 的部分优势就说 java 在运维上比 python 好

最后,就算要取代 python,目前看也更偏向 go 而不是 java
privil
2017-10-13 18:57:22 +08:00
@lyao ruby 你看看市场占有率啊
@est ansible ……秒全部?开国际玩笑吧,ansible 千台左右就要跪了好么
est
2017-10-13 19:08:34 +08:00
@privil 怎么个跪法?开 accelerator
lolizeppelin
2017-10-13 19:10:41 +08:00
现在不知道 以前看 ansible 代码的时候,那个异步执行的方式看得我蛋痛 233
bobuick
2017-10-13 19:15:10 +08:00
很多说为什么不 java 的同学。我估计 lz 是属于 java 一直在做 crud 的活,纯横向堆框架内的代码是最无趣的了。转下运维蛮好的,让自己看到更多,而不是以为运维就只写脚本
ik
2017-10-13 19:41:03 +08:00
运维确实是背锅侠

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

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

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

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

© 2021 V2EX