Special Report - 오프쇼어(Offshore) 아웃소싱 리뷰
상태바
Special Report - 오프쇼어(Offshore) 아웃소싱 리뷰
  • 승인 2005.03.22 00:00
  • 댓글 0
이 기사를 공유합니다

인도 파트니와 함께 한 '비교적 즐거운 경험'

11시간 시차가 가장 큰 장애 … 프로젝트 전담팀 둬야

우리는 지금까지, 애플리케이션 개발 아웃소싱이 얼마나 멋지고(혹은 끔찍하고) 저렴한지(혹은 비싼지)에 대해 분석가, 업체, 무역그룹 및 기자들로부터 많은 말들을 들어 왔다. 하지만 자체적으로 여기에 대해 좀더 조사가 필요하다는 판단하에 최고의 오프쇼어 업체들을 초대해서 가상 회사인 NWC의 생산 환경에서 맞춤 서비스 애플리케이션을 개발하도록 하고, 아웃소싱을 내부 개발에 대한 하나의 대안으로 추천할지 여부를 판단하는 리뷰 프로세스를 이용하기로 했다.

우리는 티어 1 아웃소싱 업체들의 글로벌 목록을 만들고, 액스모 소프트웨어(Axmor Software), 인포시스 테크놀로지스(InfoSys Technologies), 파트니 시스템즈(Patni Systems), 타타 그룹(Tata Group) 및 와이프로 테크놀로지스(WiPro Technologies)에게 타이트한 스케줄로 이 일을 하도록 요청했다. 하지만 우리가 정한 시간대에 맞춰 프로젝트를 하려던 곳은 파트니뿐이었다. 때문에 애초 작정했던 것처럼 경쟁을 시킬 수는 없었지만, 계속 진행하기로 했다. 프로세스를 문서화하고 우리가 부딪쳤던 문제들을 소개하는 일도 그만한 가치가 있는 일이기 때문이다.

프로젝트 세부 사항
NWC는 위스콘신주 그린베이에 본사가 있고 뉴욕 시러큐스에 생산 설비를 갖춘 작은 제조업체다. 우리의 고객주문 시스템에서는 사용자들이 시러큐스에서 만들어진 ‘제품(widgets)’을 살 수 있게 해준다. 우리가 만든 제품은 상상의 산물일지는 모르지만, 비즈니스를 돌리는 데 필요한 모든 시스템은 진짜다. 내부적으로 우리는 품목 배달을 추적하고, 우리 제품이 언제 어떻게 배송되는지를 추적할 수 있다. 하지만 지원 인력이 고객용의 주문을 모두 추적하거나, 주문 상태를 점검할 수 있는 메커니즘은 갖춰지지 않았다.
우리의 주문 입력 시스템은 JSP(JavaServer Pages)를 이용한 오라클을 기반으로 하고 있으며, 배송/주문 추적 시스템은 ASP닷넷(ASP.Net)을 이용한 마이크로소프트 SQL 서버를 기반으로 하고 있다. 우리는 파트니에게 이 두 가지 시스템을 이용해 모든 주문과 배송 상태, 그리고 정해진 고객에게 어떻게 배송됐는지를 보여주는 소프트웨어를 개발해줄 것을 요청했다.
먼저 필요조건 문서를 만들고, 이 회사로 하여금 프로젝트에 입찰을 하도록 했다. 우리가 제안한 시간은 약 6주였으며, 시스템이 오라클과 SQL 서버 모두에 액세스를 하려면 몇 개의 JSP가 필요할 것이었다. 이 프로젝트에서는 개발자들이 결코 본 적이 없는 데이터베이스로 액세스 및 업데이트를 하기 위한 코드를 만들어야 하며, 웹 개발 환경에 따라 결정된 개발 툴을 사용하게 되는데, 여기에는 오라클의 아파치 버전과 톰캣 자바 애플리케이션 서버가 통합돼 있다.
실제 프로젝트에서 발생하는 변화를 시뮬레이팅하기 위해, 최종 타깃은 오라클9ias였다. 프로젝트가 도전적이긴 했지만, 우리는 복잡한 시스템을 요구하지는 않았는데, 그 주된 이유는 타이트한 마감시간 때문이었다.

초창기 문제
우리의 요청에 대한 파트니의 응답에는 그 제안서를 비롯해 우리 회사와 파트니가 책임진 품목에 대한 배송 시간대에 대한 세부 사항들이 포함돼 있었다. 파트니의 1인당 1시간 노동량과 비용 견적금액은 공개하지 않기로 했는데, 그 이유는 이 업체가 유일한 참가자였고, 그러한 정보를 공개함으로써 경쟁력이 떨어질 수 있다는 우려 때문이었다.
대략적으로 추산하자면, 원래의 견적가는 개발자 연봉의 절반 수준이었다. 이 돈에는 분석, 설계 및 이행이 포함돼 있다. 우리는 이 가격에 대해 어떠한 협상작업도 하지 않았지만, 여러분은 그래서는 안된다. 아웃소서들은 어디까지나 돈을 벌기 위해 하는 일이고, 여러분은 돈을 아끼기 위해 하는 일이기 때문이다.
우리 쪽의 총 비용이 파트니의 견적가를 넘는다는 사실이 바로 드러나게 됐는데, 이는 우리가 그쪽 개발자들에게 우리 시스템으로의 액세스를 주고, 원격 액세스 문제를 장애관리하며, 데이터베이스에 액세스하는 방법에 대한 매뉴얼을 주고, 별도의 테스트 환경을 만들어 내부 프로젝트와 새 애플리케이션을 분리시키며, 우리의 테스트 데이터베이스와 웹사이트를 이 테스트 환경에 복제해야 했기 때문이다.
우리는 또한 파트니가 우리보다 훨씬 더 큰 고객을 상대하는 데도 익숙하다는 사실을 깨달았다. 파트니는 일할 준비를 갖추고 우리가 VPN으로 액세스를 주기만을 기다리고 있었다. 하지만 지저분한 우리의 VPN에 비해 파트니는 시스코 VPN 장비로 구성돼 있다. 물론 어떤 아웃소서를 이용하든 같은 문제에 봉착했을 것이며, 이런 호환성 문제를 해결할 수도 있었겠지만, 마감 시간이 임박하고 파트니 팀은 우리를 기다리고 있었다. 고맙게도 파트니가 우리 VPN을 이용하기로 하는 데 동의하고, 액세스를 얻는 방법을 결정하는 데는 하루 남짓밖에 걸리지 않았다.
개발자들이 필요한 기계로만 액세스할 수 있도록 권한을 구성하는 데는 몇 시간이면 되리라 생각했지만, 파트니가 VPN을 통해 마이크로소프트 SQL 서버로 접속할 수 없다는 사실을 알게 됐다. 해결책을 찾느라 이틀을 보낸 끝에 우리 VPN에서는 원격 사용자가 ODBC용 SQL 서버 기계로의 로그인 권한을 갖고 있어야 VPN을 통해 접속이 가능하다는 사실을 겨우 알 수 있었다. 이로 인해 우리의 VPN 제품에 의기소침해졌지만, 파트니의 인내심으로 용기를 얻을 수 있었다. 모두 해서 NWC 직원은 실질적인 코딩 작업 개시를 두 주 가까이 연기시켰으며, 그럼에도 불구하고 파트니는 한 주 늦게 제품을 제공했다. 이는 곧 코드 첫 라인에서부터 현장검수(acceptance testing) 수령 테스팅까지 5주가 걸렸다는 얘기다.

시간 對 돈
이러한 개발 아웃소싱이 주는 혜택은 우리로서는 최소한의 수준이다. 두 사람밖에 안 되는 직원으로 우리는 오리지널 데이터베이스와 웹 페이지의 개발과 배치를 책임지고 있으며, 아마도 파트니가 한 것과 같은 시간 내에 애플리케이션을 만들 수도 있었을 것이다. 이는 우리가 이미 소프트웨어 아키텍처를 잘 알고 있고 자체 테스트 시스템을 구성해본 적이 있기 때문이다. 간단히 말해 우리의 작은 조직에서는 시간 절약은 거의 없었지만 IT 직원한 명 몫의 임금은 아낀 셈이다.
겉으로 많아 보이는 이러한 비용의 상당 부분은 프로젝트의 규모와 고정 경비가 차지한다. 우리는 두 주 동안 파트니의 프로젝트 매니저를 현장에 두었다. 이는 이처럼 작은 프로젝트 규모로 볼 때는 긴 시간이지만, 큰 프로젝트와 큰 조직에서는 이런 경비가 작게 늘어나는 비용에 금새 흡수돼버린다. 프로젝트용으로, 통화료는 말할 것도 없고 호텔 경비와 인도 항공비도 금새 불어나겠지만, 실질적인 배치 비용은 그보다 훨씬 더 빨리 늘어날 것이다.
보다 규모가 큰 조직에서는 반면에 많은 미팅과 리뷰를 피할 수가 있으며(분석, 설계 및 코드 리뷰는 파트니 직원이 처리한다), 이는 곧 내부에서 같은 소프트웨어를 개발할 때보다 비용이 크게 줄어든다는 얘기다. 아웃소싱의 총 절감효과와 총 경비를 직접 대조시켜봐야 하겠지만, 보통 조직의 규모가 크고 프로젝트에 참여하는 인원이 많을수록, 아웃소서를 통해 줄일 수 있는 비용 규모도 늘어난다.
나아가 우리 시스템으로의 액세스를 허용하고 현장 검수를 수행해야 하긴 했지만, 우리는 전체 개발 프로세스에는 참여하지 않았다. 이것이 바로 아웃소싱이 편하다는 이유다. 조직에서 타이트한 제어가 필요하다면, 아웃소서가 승인을 기다리는 동안 내부의 IT 직원이 프로젝트의 각 부분을 검토해야 하기 때문에 비용이 올라갈 것이다. 하지만 필요조건들은 간단히 하고 아웃소서로 하여금 이행의 세부사항을 책임지게 하는 조직들은 큰 절감효과를 볼 수 있다.
우리는 처음 제안서와 분석 결과, 아키텍처적인 개관, 설계 문서 및 테스트 스크립트를 검토해 보았으며, 프로세스를 중단시킬 필요없이 개발 프로세스의 각 단계로 들어가 볼 수 있었다.

장애물 넘기
아웃소싱되는 애플리케이션 개발 프로젝트에는 내부적으로 개발되는 것보다 문제가 더 많은 경우가 많다. 작업을 하는 사람들이 내부의 개발자들 만큼 접근이 쉽지가 않기 때문이다. 우리로서 최고의 장애는 약 11시간이나 나는 시차로, 이로 인해 근무시간 이후에도 회의통화를 해야 하고, 대부분의 문제가 하루는 기다려야 해결이 됐다.
하지만 이러한 접근성의 부재는 이것만 따로 떼어놓고 본다면 보너스가 될 수도 있다. 예를 들어 이 일을 할 수 있는 직원에게 다른 의무가 있어서 예산을 초과하고 일정에 맞추지 못한 프로젝트가 얼마나 많은가? 지구 반바퀴를 돌아가야 있는 개발자를 긴박하게 진행돼야 하는 장기적인 프로젝트에 동원하기는 힘들다.
일을 진행하면서 부딪칠 수 있는 몇 가지 장애물을 해결해줄 수 있는 필수 항목들을 몇 가지 소개한다.

>> 프로젝트 전담 팀 계약에서 이 조건을 가장 먼저 내걸라. 직원이 자격을 갖춘 사람인지, 그리고 계약 기간 동안(최소한 업체로부터 코드를 수령할 때까지) 이용 가능한지 확인하라. 우리 프로젝트에서는 오프쇼어 업체 쪽에 세 명의 개발자와 한 명의 프로젝트 관리자, 그리고 두 명의 영업팀 사람들이 있었다. 우리는 동부 연안에 있는 영업 사원이 처음 계약과 협상을 도왔는데, 이는 그가 같은 시간대역에 가깝게 있었기 때문이었다.

>> 책임감 있는 프로젝트 매니저 그는 일을 함께 조율해가는 책임을 맡게 될 것이다. 우리 프로젝트는 간단했지만 설계 승인과 사용자 권한 할당 등으로 인해 개발팀 투입을 세 번이나 지연시켜야 했다. 이 프로젝트를 제 시간에 진행시키고, 시기 적절하게 업체에서 필요로 하는 것을 가져다 줄 수 있는 전담 직원을 한 사람 반드시 두어야 한다.

>> 합의 우리는 파트니의 개발 직원에게 제공 가능한 것들을 결정하도록 맡겼는데, 그 이유는 특별히 정해진 목록을 주지 않았을 때 이 회사에서 무엇을 만들어낼 수 있는지가 궁금했기 때문이다. 우리가 정한 것이라고는 ‘분석하고 설계하고 코딩하라’는 것뿐이었다. 파트니가 코딩의 기준에 대해 물었을 때, 우리는 알아서 하라고 말하고는 어떻게 했는지를 역시 확인했다. 아웃소싱 업체에서 당신 회사의 코딩 기준을 알고 있는지, 그리고 이것을 지키는 데 동의하는지 여부를 확인하라.
결과적으로 우리가 받은 것은 프로젝트를 내부적으로 진행시켰을 때 기대할 수 있는 것과 같았으며, 이름 변환용으로는 변경된 헝가리어 주석이 있느 자바 코드가, 각 메쏘드용으로는 커멘트 헤더가 있었다. 다양한 이름은 유용했으며, 예상하다시피 코드의 문서화에 도움을 줬다.

우리가 왜 코드 기준을 정하지 않았던 이유는 다시는 아웃소싱을 하지 않겠다는 이유로 코드 품질 불량과 유지보수를 꼽은 조직이 놀랄 만큼 많았기 때문이었다. 이 점에서는 분명히 오프쇼어 조직에 따라 크게 차이가 날 것이기에, 특별히 이 부문을 오픈시켜 둔 것이다. 파트니의 경우는 우리가 자체적으로 한 것과 거의 차이가 없었지만, 각자 자신의 업체들을 조사해 보아야 한다. 미국이나 유럽의 레퍼런스를 요청해보라. 그런 다음 이런 레퍼런스에서 코드 품질이 어땠는지, 특정 코딩 기준을 준수했는지, 분석과 설계는 어떤지, 전달과 응답은 제 시간해 했는지 등에 대해 물어보라.
소스 코드의 장기적인 유지보수에 대해 업체와 의논하는 것도 좋은 생각이다. 우리 개발자들은 자바로 작업을 했고, 장기 계약을 하려는 의도는 없었기 때문에, 이렇게 하지는 않았다. 하지만 오프쇼어 업체가 유지보수에도 참여하기를 원한다면, 보다 나은 가격으로 장기 계약을 성사시킬 수 있는 첫째 날에 협상을 하는 게 좋다.

최종 성과물
아웃소서로부터 성과물을 받아야 한다는 사실을 기억하라. 아웃소서는 VPN을 통해 액세스가 가능한 네트워크에서 기계를 테스트할 필요가 있을 것이다. 아웃소서는 회사의 데이터베이스로 액세스를 하거나, 최소한 데이터베이스 카피를 테스트해야 할 것이다. 그리고 네트워크로 로그인을 해야 한다. 이 모든 것은 단순히 시작을 위한 작업에 불과하다. 프로젝트 과정에서 책임감 있는 업체라면 각 단계나 중요한 시점마다(사용자 요구조건 분석, 기능성 설계, 솔루션 설계, 코딩) 승낙이 떨어지기를 기다렸다가 다음 단계로 넘어갈 것이다.
최종 결과물에는 기능성 테스트 스크립트와 성능 테스트 스크립트(성능이 계약 조건에 포함돼 있을 경우), 요구했던 설치 툴, 그리고 현장 지원이 포함돼야 한다. 마감이 임박하고 애플리케이션이 설치돼 있을 경우 누군가 도와줄 있는 사람이 곁에 있을 때 문제는 훨씬 더 빨리 해결될 것이다.
마지막으로 생각해보아야 할 것은 회사측에서의 지원이다. 회사 직원(특히 프로젝트 매니저)는 이것이 9시에 시작해서 5시에 끝날 일이 아니라는 사실을 알아야 한다. 인도는 미국과 9~13시간의 시차가 나는 곳이다. 우리는 밤 11시와 새벽 5시에도 전화를 해야 했다. 프로그레스 추적을 위한 회의 통화는 화요일과 목요일 오전 7시였으며, 그리 끔찍한 시간은 아니었지만 간과해서는 안될 부분이다.
시차로 인해 또한 테스트도 늦어질 수 있다. 업체와 미리 계약을 해두지 안는다면, 테스트를 하는 도중에 끝이 나 버릴 수도 있다. 계획을 짤 때는 이 점을 반드시 염두에 두고, 소요시간을 보다 길게 잡거나, 아니면 테스트 단계에서의 24×7 지원을 협상해 두라.

그때그때 달라요
그렇다면 우리는 지금 오프쇼어 개발을 권장하고 있는 셈일까? 그 대답은 최신 SAN 하드웨어를 추천할 때처럼 그리 분명하게 나오지 않는다. 테스트를 해야 할 속도와 공급이 없다면, 많은 경우의 수에 따라 대답은 달라질 수 있다.
규모가 큰 조직들에게는 이름 있는 업체를 선택하고, 마감일을 합리적으로 정하고, 회사측에서 적절한 지원을 제공할 경우 오프쇼어 개발이 경쟁력 있는 대안이 될 수 있다. 적절한 사전 준비를 하고 프로젝트 매니저(프로젝트 규모에 따라 팀)를 배정할 의사가 있다면 오프쇼어 아웃소싱은 내부적으로 하는 것보다 더 적은 비용이 들겠지만, 돈을 절약하는 게 아니더라도 써드파티는 분명 다른 일일 업무를 해야 하는 내부 직원들이 하는 것보다 더 빨리 해낼 수 있을 것이다.
파트니에는 고객만족도 설문조사로 마무리되는 좋은 문서 프랙티스가 있다. 회사가 프로젝트를 종료할 수 있게 답을 해달라는 요청을 받고, 우리는 기록을 다시 보고 프로젝트 과정에서 일어났던 모든 일에 대해 생각해 본 다음 전체적으로 이 회사가 우리의 기대치를 넘어섰다는 결론에 도달할 수 있었다. 물론 언제나 객관적이고자 노력하지만, 오프쇼어 아웃소서들이 내놓는 작업 품질에 대해서는 너무도 안좋은 말을 많이 들었기 때문에, 솔직히 우리는 미국의 아웃소싱 회사에게 하는 것보다 기대를 덜 했었다. 시작부터 잘 정리된 3단계 아키텍처와, 전담 통역관으로 직원 하나를 쓸 필요 없이 따라갈 수 있는 소스 코드는 우리를 매우 기쁘게 해주었다.
오프쇼어 업체는 ‘싸다’는 인식이 보편적이라, 가격에는 약간 실망을 했다. 알고보니 싸다는 것은 상대적이었으며, 작은 조직에서는 아웃소싱이 내부 개발보다 훨씬 더 비싸질 수도 있었다. 조직에서 아무리 작은 프로젝트라도 잘 풀지를 못한다면, 아웃소싱되는 전체 프로젝트에 대해서보다도 플래닝 미팅에 참석할 사람에게 더 많은 돈을 들여야 할 수 있다. 이 프로세스는 결코 공짜가 아니기 때문에 아웃소싱과 내부 개발 비용을 비교할 때는 반드시 이런 요소들도 포함을 시켜야 한다.
우리 측에서 필요한 것을 제대로 갖추지 못해 일정이 늦어지 것을 파트니에서 기꺼이 기다려 준 것도 또한 좋았던 경험이었다. 예를 들어 기능성 사양이 제출됐을 때 우리는 일주일 일정으로 무역쇼에 나가 있었으며, 파트니는 우리측 대표 한 사람만을 원했지만, 우리는 이것도 제대로 지켜주지 못했으며 이틀을 미루었다. 파트니는 우리의 변경된 스케줄을 받아들이고, 이 점을 감안해 새로 업데이트된 것을 제출하면서도 마감 시간에 맞춰주었다. 비록 기술자들이긴 하지만 우리도 잡지의 마감 시간을 지켜야 했으며, 파트니는 기꺼이 우리의 요구를 들어주었다.


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.