我老来说说亚马逊的build-deploy系统# JobHunting - 待字闺中
z*a
1 楼
我老是学文科出身的,所以扯淡从来几天几夜都不累,但是真涉及到CS的具体技术就虚
了:毕竟积累太少太差,如果技术有错,大伙轻拍。
先说说热门的话题之一:亚马逊的Apollo和Brazil系统,也就是他们的build、version
control到deploy一条龙。的确很先进,有亚马逊人去了Google甚至认为Google的类似
系统也不如亚马逊先进(我个人持保留意见,因为不了解Google)。简单来说强在所有组
share同一套build-deploy系统,所以只有一个build team一个apollo team什么的管理
就行了,什么dependency之类的头疼问题非常好解决,而且deployment可以随时deploy
随时rollback,这个真的非常强大。
所以亚马逊其实几乎不需要Test。因为(理论上)可以随时deploy,系统一旦出问题立
刻rollback,然后再重新改code就是。这就造成了亚马逊很多组就把production当test
环境了……听起来很吓人,但是实际操作中会发现,的确没什么大不了的。真正引发大
问题的很多是SDE的误操作,改了数据库然后才有灾难,Code本身很难引发什么真正的
问题。
所以这里想说的是,亚马逊基本上是SDE在test(也只是很简单的test),只需要很少
的SDET。尤其是没有对外的界面、backend的组。
这的确是亚马逊强大的基础之一:首先省了很多雇佣tester的钱,其次是提高了生产效
率,如果想的话code可以很快(一天之内,很多紧急修复)deploy到全世界范围;第三
是即使SDE缺乏经验、经常出错或是没考虑到某些case也不要紧,反正一发现错误
rollback就是。当然,SOA是以上一切的基础,否则都是空谈。
所以亚马逊不在乎员工流失。当然,问题不那么简单:code好写,business logic却非
常复杂,新人就不理解了。举个例子,亚马逊效率很高,实现很快,但是可能应用后很
快发现这business logic有问题,或是跟别的组没有协调好,所以只能再改再重写,而
当时写老code的人都走了,所以新人只能再重新猜究竟是怎样的。这就导致了:亚马逊
的code更新很快,服务很强大也及时,但是其实SDE是很遭罪的,因为毕竟归根结底,
质量还是不行的。
简而言之,亚马逊的开发平台相当先进,使得他可以用缺少经验的程序员维护一个庞大
而高效的系统,从而造成了亚马逊独特的公司文化。
了:毕竟积累太少太差,如果技术有错,大伙轻拍。
先说说热门的话题之一:亚马逊的Apollo和Brazil系统,也就是他们的build、version
control到deploy一条龙。的确很先进,有亚马逊人去了Google甚至认为Google的类似
系统也不如亚马逊先进(我个人持保留意见,因为不了解Google)。简单来说强在所有组
share同一套build-deploy系统,所以只有一个build team一个apollo team什么的管理
就行了,什么dependency之类的头疼问题非常好解决,而且deployment可以随时deploy
随时rollback,这个真的非常强大。
所以亚马逊其实几乎不需要Test。因为(理论上)可以随时deploy,系统一旦出问题立
刻rollback,然后再重新改code就是。这就造成了亚马逊很多组就把production当test
环境了……听起来很吓人,但是实际操作中会发现,的确没什么大不了的。真正引发大
问题的很多是SDE的误操作,改了数据库然后才有灾难,Code本身很难引发什么真正的
问题。
所以这里想说的是,亚马逊基本上是SDE在test(也只是很简单的test),只需要很少
的SDET。尤其是没有对外的界面、backend的组。
这的确是亚马逊强大的基础之一:首先省了很多雇佣tester的钱,其次是提高了生产效
率,如果想的话code可以很快(一天之内,很多紧急修复)deploy到全世界范围;第三
是即使SDE缺乏经验、经常出错或是没考虑到某些case也不要紧,反正一发现错误
rollback就是。当然,SOA是以上一切的基础,否则都是空谈。
所以亚马逊不在乎员工流失。当然,问题不那么简单:code好写,business logic却非
常复杂,新人就不理解了。举个例子,亚马逊效率很高,实现很快,但是可能应用后很
快发现这business logic有问题,或是跟别的组没有协调好,所以只能再改再重写,而
当时写老code的人都走了,所以新人只能再重新猜究竟是怎样的。这就导致了:亚马逊
的code更新很快,服务很强大也及时,但是其实SDE是很遭罪的,因为毕竟归根结底,
质量还是不行的。
简而言之,亚马逊的开发平台相当先进,使得他可以用缺少经验的程序员维护一个庞大
而高效的系统,从而造成了亚马逊独特的公司文化。