设为首页收藏本站

爱吱声

 找回密码
 注册
搜索
查看: 9491|回复: 61
打印 上一主题 下一主题

[信息技术] offshore的笨蛋们

[复制链接]
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    跳转到指定楼层
    楼主
    发表于 2012-7-26 01:18:37 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 老兵帅客 于 2012-7-25 12:20 编辑 2 O  Y5 v3 p4 e2 u4 Z8 d# i% h6 K
    6 R, q& M9 x- h# a" U
    刚刚解决了一个performance issue,事情是这样的,我们的一个项目所使用的一个web service是由我们公司印度分公司的员工,我们称之为offshore team,完成的,这个东西在测试服务器上工作没问题,但是发布到生产机以后遇到了严重的performance issue,因为客户的访问请求居然需要六到八分钟才能完成,届时客户界面那边早就time out了。客户要求offshore team解决这个问题,他们找了半天找不到原因,没办法这件事就交给我们来解决了。
    1 O: M8 U& F$ H% E9 n2 g! z% U& |* {& h( }" T, |
    我找来代码,发现里面居然没有任何log语句,因此你无法通过log信息来发现问题出在哪里,这程序是怎么写的和测试的?没辙,咱自己来给它加上所需要的log语句吧,然后安排重新发布到生产机上去。说到这里有人可能会问,你怎么不先在测试机上测试而直接上生产机了呢,回答是这程序在测试机上没问题,而在生产机上有问题,那唯一的可能就是数据量导致的问题,因此发布到测试机没用,还是直接上生产机吧。7 e- y# p- _! o# T! P, @
    # ?8 E/ n1 w8 q' d- x1 ?  h2 ^
    发布到生产机上,安排客户进行测试,发现问题出在了JDBC语句上,这句话用字段值来搜索所需要的记录集合,数据库表里面对应字段类型是varchar2,而我们的offshore家伙们的对应JDBC PrepareStatement语句居然是setLong,这样每个记录都需要做一次数据类型的转换,这么干数据量小的时候没事,一旦大到了一定程度,这性能能不完蛋嘛。, }7 C3 P5 T& x

    - F8 x2 H, K5 J' Z" H. }发现了问题,解决方案也就简单了,在java程序里面预先转换好数据类型,然后把setLong改成setString,再把程序重新发布到生产机上去再测试,这回好了,从原来的需要六到八分钟减少到不到一秒钟,完事了。! B3 s; W9 F' ~5 O+ `
    & g8 \  X0 A/ I! \) P9 x
    offshore team这帮家伙水平也忒次了,居然不懂得要尽可能减少数据转换次数这个基本常识,从而导致了这次的性能问题。出了问题自己还没办法解决,只好求助加拿大这边的人来帮忙,这样的out sourcing有什么实际意义呢。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    沙发
     楼主| 发表于 2012-7-26 03:01:43 | 显示全部楼层
    MacArthur 发表于 2012-7-25 13:49
    : w, W" z3 X$ T& G4 X; FOutSourcing唯一用处就是给那些愚蠢自大的Business Leader们一个机会,来显示显示他们也“懂得IT潮流”。。 ...

    * S9 |, ^  Y& W6 p9 a5 a2 `- j  w他们的主要用处是在统计报表上面告诉高层,我们通过out sourcing节省了多少多少开支,现实中就算了。
    ; @7 T! y, `0 Z( E3 U: A* }  k
    1 V/ t  h' p7 f9 Z我们的客户已经明确表示,在以后的项目中不再考虑offshore的人员了,原因就是他们的表现太差,仅靠本地人员来救驾,那还不如直接用本地人员算了。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    板凳
     楼主| 发表于 2012-7-26 03:02:04 | 显示全部楼层
    机器猫 发表于 2012-7-25 13:24 , X2 {. |( Y$ l3 a3 w
    我现在也成天干给offshore team擦屁股的事。
    " u% Z% }0 Z- [9 u6 W
    嗯,同病相怜啊
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    地板
     楼主| 发表于 2012-7-26 10:02:41 | 显示全部楼层
    明月回春 发表于 2012-7-25 19:53 ; @  ^' h2 G& k' V2 b/ m7 G
    其实软件这个行当不适合外包,尤其是offshore的那种。除去成本与能力之类原因,软件产品本身的质量控制没有 ...

    : R( d- @7 k) X  i/ F* S# q6 j说的很对,问题是我们的offshore team出来的东西连华丽都没有,就剩下垃圾了。
    . e& }8 O1 C& k* }  k1 X% {6 _! r# `
    9 X) R; n. p" ^我们这个项目一共用了三个web service,原来打算都让那边的人来做,结果有一个半年做不出来,被我们这边的一个家伙一个礼拜搞定,还一个被我彻底重写了,就剩下现在这个貌似还行的,现在发现还是不灵啊。我今天收拾的这个有多复杂呢,实在是很简单,就是一个用JDBC写的sql select语句啊,连这都搞不定,算什么呢。

    点评

    其实也不是所有的offshore都这么菜。这件事之所以“典型” 是因为菜的有点不可思议,对吧。据我观察,我们公司现在offshore出来的质量,不必HQ的差。  发表于 2012-8-10 09:10
    谁知道那边是怎么招的人  发表于 2012-7-26 18:34
    呵呵,成本压得太低了吧?这都用了什么样的人来搞的啊。  发表于 2012-7-26 13:00
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    5#
     楼主| 发表于 2012-7-26 10:04:36 | 显示全部楼层
    库布其 发表于 2012-7-25 20:14 ; z8 k& x% S# y2 x# `3 n  b0 G7 V
    成本上来说,offshore team 主打 + 本地人员擦屁股 < 本地人员全部搞定 就可以。5 }8 V& f) r( }: P2 D. E
    6 \8 q% s' c( e) _
    各种个案都有。我算是在 ...

    3 \7 ?; Y  k: P7 |国内的软件工程师要比印度的强多了,但是问题在于两点,一个是时差问题,正好是背靠背,再一个就是语言问题,我们要求直接能电话谈工作,这个就很难了。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    6#
     楼主| 发表于 2012-7-26 10:05:25 | 显示全部楼层
    假如十八 发表于 2012-7-25 21:02
    ) m) w1 L, b: S写过几次sql的半吊子路过。。。
    8 p$ k. y& v7 f% P  V" w
    数据库专家啊,崇拜。。。。。。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    7#
     楼主| 发表于 2012-7-26 10:29:31 | 显示全部楼层
    hotlemontea 发表于 2012-7-25 21:28
    ; k. w: t) g8 b5 [3 D  z很多美国公司已经开始insource回来了吧

    5 A( z9 W) w8 [' O, W3 f$ |美国不清楚,加拿大已经在往回收了。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    8#
     楼主| 发表于 2012-7-26 18:35:21 | 显示全部楼层
    四处张望 发表于 2012-7-25 21:25
    % o$ I6 L0 W. j, B- X我做了十几年了,帮主说得sysobjects我都不知道是啥

    2 ~  M  D$ a9 s3 Y1 `- L) I0 d俺也不知道
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    9#
     楼主| 发表于 2012-7-26 18:37:48 | 显示全部楼层
    草蜢 发表于 2012-7-25 23:21 $ D, c0 K. y5 i% Z# ^/ H/ D
    Whatever happened to load test in Staging environment?

    ' z7 B, i% B- G2 R' Z测试服务器最多只有三百万条记录,因此没事,但是到了生产机,那里有七千万条记录,就完蛋了。

    点评

    是啊。数据规模完全不同了  发表于 2012-7-26 20:49
    哦。原来如此  发表于 2012-7-26 19:08
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    10#
     楼主| 发表于 2012-7-26 18:40:01 | 显示全部楼层
    库布其 发表于 2012-7-25 23:58 ' ~9 c  O7 z; F# b, T4 c3 M
    时差有利有弊。* Q2 O$ D$ g1 H% a9 ~- p
    我就说个利吧。全球都有用户,出了事情总会有人第一时间接手开始搞,等这头该休息了,一 ...
    : C3 }" M3 K% t, L7 H/ @
    不是那么讲的,软件out sourcing做得最厉害的是北美,你和它背靠背了,时差就成为严重的问题。
    1 f' r) V# f, H" l$ q) M  b: G/ m% s
    1 F( y* S' P# I, {/ x语言问题更严重,我们这里的人来自各大洲,什么口音都有,我不相信国内的技术人能够普遍做到和这些人无困难电话沟通。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    11#
     楼主| 发表于 2012-7-26 19:13:18 | 显示全部楼层
    四处张望 发表于 2012-7-26 06:05
    * D0 h" K( S9 R* [7千万就挺利害了,一般性能测试不会用那么大数据量。
    * _" b( C. C, |7 T7 s" z7 X8 h; O" A# v4 f
    是啊,所以出问题了呢。关键在于,数据库的那个字段是varchar2,程序里面为什么要用long呢,应该是string才对啊。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    12#
     楼主| 发表于 2012-7-26 20:46:01 | 显示全部楼层
    四处张望 发表于 2012-7-26 06:45 3 w9 m' S: V* Z1 I6 e$ t  F4 }3 C
    其实我会猜他们原来是想用long类型,但是数据库设计那里或者搞错了,或者看错了。 ...

    # q$ X3 r; t6 I2 ^( F. d+ R+ P$ r0 G这个我问过了,数据库那里一直就是varchar2,那就不应该在java这边使用long,因此这个错误纯属程序员做事不仔细,没考虑数据类型转换的成本。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    13#
     楼主| 发表于 2012-7-26 20:47:51 | 显示全部楼层
    四处张望 发表于 2012-7-26 06:48
    * P1 U' u7 i0 o. D+ G5 _7 d& [( X主要问题是性能的问题并不是随便测测就能测出来的,老兵这个例子是上了7千万,我是很少见到哪里性能测试 ...

    + t; R$ `# E2 [  Q# R我觉得这个问题其实是code review那边出了问题,否则不应该看不出来数据类型不匹配的问题来的。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    14#
     楼主| 发表于 2012-7-26 20:48:27 | 显示全部楼层
    晨池 发表于 2012-7-26 07:08
    ( `# Q& B) `3 P) R/ q. P* ~是啊,我也是后来才看到这个贴的,跑了三百万的确实也够意思了。这个里面也只能说良好的编程习惯太重要了 ...

    & j3 `% o5 ~1 w: d/ L( C3 S对,规范的编程习惯很重要的。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    15#
     楼主| 发表于 2012-7-27 11:10:22 | 显示全部楼层
    四处张望 发表于 2012-7-26 21:57
    & p1 V# p1 B6 `1 t这里出问题我倒觉得不算太奇怪,问题是为何找不出问题.
    $ O: q4 Q8 ]/ v& q% R
    不奇怪,连做个如此简单的web service都如此吃力,哪里还有能力做深层次分析。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    16#
     楼主| 发表于 2012-7-27 16:25:04 | 显示全部楼层
    空气精灵 发表于 2012-7-26 22:52 2 S* O, k, V; r; y4 k
    这个实在不可思议,程序里的数据类型参照DB里的设,这是非常非常非常基本的啊。除非是曾有人改过数据库结 ...
    ' j, G4 F* ]! E3 B
    数据库没改过,神奇吧。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    17#
     楼主| 发表于 2012-7-27 16:25:30 | 显示全部楼层
    我是人间惆怅客 发表于 2012-7-27 01:32
    $ U9 o6 {! g$ O) R6 G; T7 G6 P0 {/ qsysobjects 是 sql server 里的系统表,记录的是 用户表、视图等对象的定义数据。 ...
    * L8 P6 s+ I2 ]8 Z  y
    俺们这里不用sql server,用oracle
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    18#
     楼主| 发表于 2012-7-27 16:25:57 | 显示全部楼层
    四处张望 发表于 2012-7-26 23:03 9 c/ j, [* X6 @( f4 o8 W* K: o# E
    我真见过不管的,因为功能上的确可以跑。
    0 `  ?. C% d. R) U/ a8 m3 {
    是可以跑,就是性能会成问题。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    19#
     楼主| 发表于 2012-8-10 18:07:43 | 显示全部楼层
    nimenkanne 发表于 2012-8-9 20:12 4 c% e' O. K: T9 B$ G! s! A; |
    offsource不能多用,其实应该把费时费人工 但是不核心的东西offsource
    / T5 C6 _( W, Y& a; [全部都offsource估计是不行 ...
    ) d8 B" T: v' T* f7 Z5 U, {5 x
    这里的关键是outsourcing的工钱给多少,很多忒克扣了,能招来的人水平不可能好;可是如果给好了的话,那还有利可图嘛,这是个矛盾。
  • TA的每日心情
    开心
    2023-1-5 00:48
  • 签到天数: 2591 天

    [LV.Master]无

    20#
     楼主| 发表于 2012-8-10 18:09:11 | 显示全部楼层
    profer 发表于 2012-8-10 00:55
    3 m- m. x% [- s+ O5 l读书还是刷盘子?假如有两个机会,一个是外包做数据库应用30w,一个是去淘宝做数据库调优15w,你会选哪个? ...
    8 I4 u: B' o  t0 t6 z
    中国的软件outsourcing实际上很少的,主要是语言不行,就剩下coding这段,那机会就很少了。

    手机版|小黑屋|Archiver|网站错误报告|爱吱声   

    GMT+8, 2024-9-25 20:13 , Processed in 0.077584 second(s), 27 queries , Gzip On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表