안녕하세요 코드인디자인입니다
오늘은 저희 고객사 중 2번의 외주개발 실패로 인해 수천만원의 매몰 비용이 발생한 고객사의 사례를 소개해드리겠습니다.
외주비용을 아껴보려다가 오히려 더 많은 비용이 발생했다.
코드인디자인의 A고객사의 사례를 소개시켜드리겠습니다.
수천만원대의 외주개발비용이 부담스러운 나머지 여러 업체와의 비교견적을 통해 가장 저렴한 업체와 계약을 맺게 되었습니다.
처음엔 잘 진행되는것처럼 보였으나 완성된 결과물을 봤을때, 수 많은 버그와 이슈가 발생했습니다. 버그를 찾고 수정하고 테스트하는 과정을 반복하는 과정에서 A고객사 팀장님께서 이미 많이 지쳐있으셨습니다.
또한 개발언어도 요새 잘 사용하지 않는 언어로 개발이 되어있어, 유지보수 할 개발자를 찾는것도 쉬운일이 아니었습니다.
두번째 외주개발
그렇게 첫번째 외주개발에 실패하고, 두번째 외주개발사를 찾았습니다. 이번에는 React.js
, Next.js
, Node.js
와 같은 대중적인 언어와 라이브러리를 사용하는 개발사를 찾았습니다.
마찬가지로 순탄하게 진행되는 듯 하였으나, 마찬가지로 비용을 아끼려다보니 연차가 낮은 개발자와 함께하게 되었고 결국 수많은 잔존 이슈와 함께 해결되지 않은 이슈가 산더미 같이 발생했습니다.
심각한 이슈 발생
서버는 배포할때마다 정지가 되고 있엇습니다.
기존 SEO점수를 받아놓은 페이지들의 점수가 갑자기 내려갔습니다.
알 수 없는 기타 에러들이 반복해서 발견되었습니다.
외주사의 담당 개발자들이 모두 퇴사하였습니다.
코드인디자인을 만나다
이 고객사에서 이런 해결되지 않은 문제를 가진채로 저희에게 문의를 주셨습니다.
블로그, 대표소개글, 홈페이지 구성등을 꼼꼼히 살펴보시고 이슈들을 잘 해결해줄것이라는 믿음이 생겨 문의를 주셨다고 했습니다.
그렇게 미팅을 진행하게 되었고, 그동안의 외주개발 히스토리와 해결해야할 잔존이슈들에 대해 이야기하는 시간을 가졌습니다.
구현 전략 제시
우선 가장 심각하다고 느껴지는 이슈들을 하나씩 해결해드렸습니다.
SEO 문제
검색엔진에 웹사이트의 컨텐츠들이 잘 노출되어야하는데, 기존에 오랜시간을 들여 SEO점수를 높게 받아놓은 페이지들이 구조변경으로 인해 전부 누락되고 있는 상황이었습니다.
이 문제를 해결하기 위해 고객사의 인프라, 서버, 프론트엔드 개발구조를 전부 파악하는 시간을 가졌습니다.
이미 2번의 외주개발실패로 인해, 외주사에 대한 신뢰가 많이 무너진 상황이실 듯 하여, 문제진단 및 해결전략 제시는 계약전 무상으로 진행해드렸습니다.
그렇게 아래와 같이 구조를 전부 파악하여 설명을 드렸습니다.
여러 외주사를 거치다보니 인프라 구조가 복잡하게 얽혀있는 상황이었습니다. 웹사이트에 접속했을때 A -> B -> C
경로를 거쳐서 최종적으로 웹사이트가 유저들에게 Serving 되고 있는 상황이었습니다.
뿐만아니라, 데이터베이스가 서버에 같이 묶여있어서 데이터 소실 위험이 매우 큰 상태로 유지되고 있었습니다. 만약, 서버가 다운 되거나 유실되면 데이터도 같이 삭제 되는 매우 위험한 구조로 구성되어있었습니다.
이 상황이 지속된다면 추후 유지 보수 하기도 어려울 뿐더러, 예상치 못한 이슈가 발생할 확률이 많다고 생각했습니다. 그리하여, 저희가 주력으로 하고 있는 깔끔한 개발구조로 전부 변경해드렸습니다. (React.js, Next.js, AWS Elastic Beanstalk)
무중단 배포 설정 (CI/CD)
무중단 배포란 개발자가 업데이트한 코드를 실제 서버에 반영할때 서버를 내리지 않고 업데이트하는 방식입니다.
이 방식을 사용하면 유저는 24시간 내내 웹사이트에 문제 없이 접속할 수 있게 되며, 지속적인 업데이트를 진행할 수 있습니다.
개발환경, 운영환경 분리
개발자가 업데이트한 코드를 운영환경에 바로 업데이트하는것이 아니라, 개발환경에 먼저 업데이트하고 고객사의 충분한 검토를 거친 다음, 문제가 없다는 판단이 들면 그때 운영환경에 배포하는 방식으로 구조를 변경하였습니다.
최신 버전 업데이트
next.js가 현재 14버전까지 나온 상황에 아직도 9버전을 사용하고 계셔서 next.js 버전을 업데이트하고 프로젝트 전체를 새로운 버전에 맞게 수정해드렸습니다.
이전 버전을 계속 유지하면 잠재적으로 많은 버그를 야기합니다.
현재 이런 방식을 적용하여, 해당 고객사는 안정적으로 프로젝트를 관리하고 있으며 이전보다 이슈 발생 빈도가 적어졌습니다.