brunch

매거진 플렉스웹

You can make anything
by writing

C.S.Lewis

by 한상훈 Mar 02. 2023

IT 개발 견적은 어떻게 결정될까?

웹사이트, 앱, 플랫폼, 임베디드, 키오스크 등 IT 프로젝트 외주 가격

이번 글에선 외주를 통해 IT 제품을 외주 개발하실 때 어떤 부분이 어떻게 가격 결정에 미치는지 알려드리도록 하겠습니다. 작성의 편의를 위해 독자 분을 사장님이라는 호칭으로 표기했습니다.


이제 막 용기를 가진 사장님들의 모습


대부분의 사장님들은 용기있게 시작하시지만 사실 이 분야에 대해서는 잘 아시는게 없으실 겁니다. 


하지만 시작이 반이라고 글을 천천히 보면서 따라오시면 기준이 되는 많은 내용을 가져가실 수 있을 겁니다.


기간

사장님께서 필요로 하시는 완성 기한이 있을 것입니다. 또는 기간은 따로 정하지 않고, 어느 정도 걸릴지 알고 싶어 문의하시는 단계일 수도 있습니다. 만약 특정한 완성 기한이 있는 경우라면 금액의 협의가 가능합니다. 이유는 대부분의 대형 개발사는 프로젝트가 없이 쉬는 경우가 없기 때문에 프로젝트를 진행하면 바로 착수하는 경우가 드뭅니다. 그러다 보니 기한의 여유가 있다면 바로 착수가 필요 없을만한 시점에 여러 개발사에 문의를 남겨 견적을 받으시는 게 좋습니다. 기간의 여유가 있는 프로젝트면 개발사 입장에서 큰 금액을 요청할 이유가 적습니다. 촉박한 일정으로 제작해야 하는 경우 대부분 개발진의 야근 수당 및 납기를 못 맞출 리스크에 대비해 가격을 크게 올리게 됩니다. 


기능

많은 사장님들이 어려워하시는 부분이 기능에 대한 부분입니다. 정확히 어떤 수준의 제품을 만들고 싶다는 것을 명확히 하지 않으시는 경우가 많은데, 마치 컴퓨터 견적을 내는 것과 비슷합니다. 고사양의 게임을 하거나 영상 작업을 하려면 컴퓨터 가격이 몇 배가 올라가는 것처럼 기능이 붙기 시작하면 가격이 배수로 커지는 구간이 생깁니다. 


가격이 배수로 커지는 구간은 크게 다음과 같습니다. 


랜딩 페이지(10개 이하의 정적인 웹사이트)

프리랜서 또는 매우 작은 개발사의 경우 100만 원 전후(템플릿 코드 사용)

상위 개발사로 가면 제공되는 디자인 수준에 따라 500 ~ 2,000만 원을 기준으로 제작(별도의 디자인 팀이 BI 작업, 디자인 시스템 설계 등이 착수됨)

디자인 어워드 수준의 제품이 나오는 개발사인 경우 2,000만 원 이상의 견적도 발생


쇼핑몰 또는 콘텐츠 관리가 가능한 웹사이트(CMS 또는 커스텀 관리 시스템이 포함)

프리랜서 또는 작은 개발사의 경우 500만 원 이하로 워드프레스를 비롯한 CMS로 제작됨.

다뤄지는 데이터 사이즈가 크거나 많은 경우 캐싱 서버, 콘텐츠 최적화 등의 작업이 들어가면 CMS 도구를 사용해도 천만 원이 넘는 경우가 많음.

쇼핑몰의 경우 카페 24, 식스샵 등의 쇼핑몰 빌더를 사용해서 개발 대행을 하는 경우 디자인 비용과 셋업 비용을 별도로 받아 진행하기도 함.

CMS 도구를 사용할 수 없이 기존에 사용 중인 서버와 상호작용하거나 기능이 계속 붙어야 하는 스타트업 제품인 경우라면 가격이 최소 천만 원에서 억 단위까지 커질 수 있음.


모바일 애플리케이션 개발

신규 스타트업 제품을 만들어야 하는 경우라면 모바일 애플리케이션만 만들어서 작동하기는 쉽지 않고, 패키지 형태로 웹사이트와 관리 시스템을 만들어야 하기 때문에 최소 수천만 원 선에서 가격이 시작.

기존의 홈페이지나 시스템이 갖춰진 상태에서 모바일 애플리케이션이 개발되는 경우라면 보통 1억 이내에서 개발이 대부분 가능하지만 모바일 애플리케이션에서 다뤄지는 동작이 플랫폼과 기기 버전에 영향을 받는 등 여러 개발 이슈가 있는 경우라면 1억 이상 발생됨.

하이브리드 형태로 만드는 것과 네이티브 개발 간의 비용 차이가 발생. 하이브리드는 하나의 소스코드로 안드로이드와 iOS를 호환하기 때문에 보편적으로 기간과 비용이 저렴해지지만 플랫폼 별 복잡한 동작이 발생될 여지가 있는 경우라면 네이티브로 개발해야 안전함. 대신 비용은 최소 1.5배, 2배 이상 발생하는 경우가 많음.

예를 들어 상호작용하는 관리자도 없고, 오직 모바일 앱만 나오는 경우(특별한 서버도 없는 단순 게임이나 편의성 애플리케이션)에는 적게는 몇 백만 원 수준으로 개발이 가능함.




디자인

사장님마다 원하시는 디자인 수준이 다르고, 어떤 디자인이 좋다 나쁘다에 대한 기준이 달라 좋은 디자인과 나쁜 디자인에 따라 가격이 달라진다고 말씀드리긴 어렵습니다. 개발사 입장에서 디자인 가격은 크게 뷰포트와 인터렉션 난이도에 따라 결정됩니다.


예를 들어 반응형 디자인을 제공하는 경우라면 2개 또는 3개의 화면을 기준으로 디자인 시안을 만듭니다. 2개인 경우, 모바일 화면과 웹사이트 화면의 해상도에 맞는 디자인 시안을 만듭니다. 3개를 만든다고 하면 태블릿 사이즈에 맞춘 디자인을 만듭니다. 당연히 2개의 시안을 만드는 경우와 3개의 시안을 만드는 경우 비용이 달라지고, 3개와 4개 또는 그 이상의 기준에 따라 만들게 되면 비용이 달라집니다.


출처: https://kinsta.com/blog/responsive-web-design/


디자인 시안이 증가한다는 것은 모든 화면에서 어색한 부분이 없는 제품이 나오는 것을 뜻하지만 반대로 개발 비용이 증가합니다. 예를 들어 2개의 화면 사이즈(뷰포트)를 기준으로 제품을 만드는 경우 이를 위한 소스코드는 5개의 디자인을 호환하는 것보다 적을 것입니다. 또한 시안의 개수가 늘어남에 따라 하나의 수정을 할 때 연관된 코드상 수정이 발생합니다. 결과적으로 시안이 증가하면 디자인 기간, 프런트 개발 기간 증가, 프런트 개발 난이도 증가, 유지 보수 시 발생될 비용이 증가합니다. 


인터렉션은 일반적인 개발 외주에서는 크게 고려 대상은 아닙니다. 인터렉션이라고 하면 화면의 구성요소가 동적으로 움직이며 멋진 효과를 만들어내는 것을 뜻합니다. 일반적인 외주에서는 인터렉션 레벨까지 가지 않지만 업계에서 인정받는 최상위권 외주 개발사나 디자인 어워드 수상 수준의 제품을 원하신다면 인터렉션이 포함된 수준으로 개발이 진행됩니다. 제가 조사한 바에 따르면 쇼핑몰이나 기업 소개를 위한 웹사이트 제작 비용은 최소 5천만 원 이상 나오고, 대기 기간도 업체에 따라 다르지만 적게는 1~2달, 길게는 1년 이상 대기해야 하는 경우도 있습니다.



스타트업 제품

보편적인 웹사이트를 만드는 것과는 별개로 스타트업 수준의 제품을 만드는 것은 별개의 이야기가 되곤 합니다. 이유는 스타트업 제품은 디자인, 개발도 중요하지만 기획에 대한 비용이 개발사에게 전가됩니다. 대부분 스타트업 제품을 문의하시는 사장님들의 경우 개발에 대한 이해도가 낮기 때문에 어느 정도 복잡도로 기획을 해야 하고, 기능 하나하나가 전체 로직에 얼마나 영향을 주는지 모르시기 때문에 개발사와 갈등이 생길 여지가 큽니다.


쉬운 예를 들어보면 인스타그램이나 유튜브에 있는 팔로잉 기능이 좋은 예입니다. 개발을 잘 모르시는 분들은 팔로잉 기능 개발은 매우 간단한 것이라 생각합니다. 그러나 팔로잉 기능은 고객의 숫자에 따라 극적으로 성능이 바뀌기 때문에 처음 설계를 어떻게 하느냐에 따라 향후 서비스 운영 비용과 서비스 속도에 직결하게 됩니다. 


서비스가 10,000명 이내의 적은 숫자의 사용자가 있다면 복잡한 로직 없는 데이터베이스와 백엔드 구성으로도 나쁘지 않게 동작을 만들 수 있습니다. 그러나 사용자의 숫자가 증가해 10만 명, 100만 명이 된다면 동일한 데이터베이스 구성으로는 감당할 수 없습니다. 이와 비슷한 개발 형태의 좋아요 카운트 및 체크, 팔로잉 게시글 우선 노출 알고리즘 등이 있습니다. 


즉 간단해 보이는 기능 하나도 개발 기간이나 난이도, 비즈니스 모델과 직결되고 이를 기획팀과 개발팀이 상시 소통하면서 진행한다는 것은 쉬운 일이 아니기 때문에 대부분의 개발사에서는 스타트업 제품을 개발할 때 여러 보호 장치를 마련합니다. 가령 금액을 굉장히 크게 부르거나, 고객사가 충분한 개발 지식과 소통이 가능한지 체크하거나, 잠재적으로 문제가 될 수 있는 부분을 계약서 단계에서 명시하여 보호합니다.




블록체인 제품

쉬어가는 느낌으로 블록체인 제품의 가격 구성을 설명드리겠습니다. 보통 블록체인 제품이라고 하면 가장 많이 제작되는 것이 토큰 개발 및 배포(코인 X)와 NFT 그리고 컨트렉트 개발입니다. 보통 코인을 만든다라고 생각하시는 분들이 많은데 코인과 토큰은 다른 개념입니다. 

대부분 신규 발행을 해서 코인을 팔아보겠다고 하시는 분들은 코인을 만드실 수 없고, 토큰을 만들어 파시게 됩니다. 토큰을 만드는 것은 굉장히 쉽지만 보통 토큰을 팔아 서비스를 만드시려고 하시는 분들은 여러 토큰 내 장치(락업 기준 등)나 투자자 보호를 위한 내용, 그리고 발행에 필요한 일련의 절차들과 홈페이지 등을 모두 원하시기 때문에 가격이 억 단위로 가는 경우가 많습니다. 특히 토큰 발행과 관련해서는 여러 질 나쁜 업체들이 돈만 받고 사라지는 경우나 사기를 치는 경우도 많기 때문에 검증된 회사와 진행하시는 것이 필요합니다. 


NFT의 경우 지금은 시들시들하지만 작년까지만 해도 개발 시장에서 큰 수요가 있었습니다. 가격대는 적게는 몇백만 원선에서 시작해 크게는 1억 원까지 가는 경우가 많습니다. 다만 NFT 중에서도 여러 기능을 포함하거나 민팅시 금액이 굉장히 크고, 여러 보안 취약점을 이용한 공격을 방지하는 수준으로 개발 레벨을 높이게 되면 1억 이상의 개발비를 요구하는 업체도 많습니다. 


컨트렉트 개발의 경우 보통 저렴하게 진행되는 경우는 없습니다. 블록체인 특징상 문제가 생겼을 때 개발사에서 책임져야 하는 부분이 심각하게 커지게 됩니다. 이유는 블록체인 상에 올라간 컨트렉트는 수정이 불가능하기 때문에 여러 단계의 테스트와 검증을 필요로 하게 됩니다. 예를 들어 이더리움 생태계에 올라간 컨트렉트라면 개발 레벨에서 테스트는 고 엘리 네트워크를 사용해 진행하겠지만, 실제에서도 동일할지 테스트하기 위해 메인넷에 올린다면 올릴 때 비용, 테스트 시 발생하는 트렌젝션마다 적게는 몇 천 원에서 몇 만 원, 크게는 몇 십만 원씩 테스트 동작에 사용하게 됩니다. 


또한 컨트렉트는 개발 범위가 커지게 되면 샤딩 처리를 하게 됩니다. 하나의 큰 컨트렉트가 아닌 부모와 자식 관계의 컨트렉트나 동등한 관계를 가진 컨트렉트, 상호 작용하는 컨트렉트 등으로 복잡도가 올라갑니다. 이유는 블록체인 노드상에 올라갈 수 있는 컨트렉트의 사이즈는 제한이 있습니다. 소스코드가 무한히 커질 수 없기 때문에 이를 적절한 수준에서 처리해야 하고, 하나의 컨트렉트로 관리가 되지 않는다면 컨트렉트를 2개 이상으로 분리해야 합니다.


그러나 이와 같은 개발은 보안상의 리스크를 만들게 됩니다. 컨트렉트 간 권한 양도를 위한 코드는 결과적으로 취약점이 될 수 있고, 이 취약점을 파고들어 공격이 들어오는 경우에 대비한 테스트, 그리고 처리되는 데이터의 사이즈가 커졌을 때에 대한 테스트 등을 추가로 진행합니다. 


마지막으로 컨트렉트 개발은 보통 자사의 토큰 생태계를 갖춘 회사에서 요청하는 경우가 많은데, 블록체인 개발에 대한 이해가 적은 기획자의 기획이 반영되기 시작하면 개발 비용과 난이도가 급상승하는 경우가 생깁니다. 그렇기 때문에 컨트렉트 개발을 맡기실 때는 실력 있는 블록체인 개발자가 최소한 1명 이상 기획팀과 소통하며 진행을 해야 프로젝트 완성도와 잠재적인 비용 문제를 해소할 수 있습니다.


성능과 확장성

현명한 사장님들이라면 제품의 단계와 목적을 명확히 나눠서 견적을 요청하시는 게 좋습니다. 가령 "이 제품은 앞으로 1년 정도 사용을 할 것이고, 이후에는 사업 진행 정도에 따라 크게 확장하겠다."와 같은 계획이 필요합니다. 만약 "일단 만들어보고, 잘되면 더 붙이는 식으로 하죠."와 같이 명확한 성능 개선과 확장성 기준이 없다면 처음 제작할 때부터 확장을 고려해서 설계하고 개발해야 하기 때문에 비용이 크게 상승합니다.


제 경험에 따르면 대부분의 제품은 확장을 고려해 개발하고, 설계해서 만들지만 개발되는 과정에서 사장님들이 여러 기능 추가나 변경 등을 원하시는 경우가 많습니다. 기능 추가와 변경은 잠재적인 버그를 만들고, 완성도를 크게 낮춥니다. 특히 확장성을 고려해 만든다는 것은 구성요소 하나하나의 재활용성을 염두하고 개발하는 것을 뜻합니다. 그렇기 때문에 기능이 추가되거나 변경되면 재활용성과 관련된 모든 부분이 영향을 받게 됩니다.


이를 위해서 확장성이 있는 제품을 원하신다면 스타트업 제품의 원론이라 불리는 최소 기능 제품(MVP) 형태로 개발을 진행하시고, 개발이 완료된 이후에 다음으로 업그레이드하는 것이 훨씬 나은 선택입니다. 대부분의 제품은 첫 술에 만족할 제품이 나오지 않고, 또한 처음 제품을 외주 하시는 경우라면 기획상 놓치는 부분이 많기 때문에 완성도 높은 제품을 개발사에서 제공했더라도 기획 단계의 아쉬움으로 추가 개발을 원하시는 경우가 대부분입니다. 



기술

개발사마다 제공되는 기술이 천차만별입니다. 그리고 기술에 따라 최소 금액 기준도 크게 달라집니다. 추천드리는 방식은 정적인 웹사이트나 보편적인 애플리케이션은 어떤 기술 스택으로 개발돼도 큰 차이는 없습니다. 이를테면 웹사이트를 PHP로 만들거나, 리액트로 만들거나, 워드프레스로 만들거나 비용의 차이가 거의 없다면 무엇을 해도 상관없습니다. 그러나 기능상 업그레이드가 필요한 제품이라면 비교적 최신 기술을 사용하는 것을 추천드립니다. 이유는 향후에 해당 서비스로 사업을 진행하셔야 할 때, 너무 옛날 기술로 개발된 소스코드는 개발자를 구하기도 어렵기 때문입니다.


모바일 애플리케이션의 경우 사용되는 기술이 정해져 있는 편이고, 차이가 있다면 사용되는 라이브러리나 언어에서 자바인가 코틀린인가, 하이브리드인가 네이티브인가 정도로 볼 수 있습니다. 안드로이드 앱을 만드신다면 이왕이면 코틀린으로 쓴 코드가 좋고, 하이브리드라면 비교적 많은 개발사가 유지보수가 가능한 리액트 네이티브가 좋습니다. 마찬가지로 iOS로 오브젝트 c를 사용하기보다는 최근 언어인 스위프트로 작성이 가능하면 이점이 있습니다.


유지 보수

유지 보수는 제작만큼 중요한 부분입니다. 템플릿을 그대로 떠서 오는 제품이 아니라면 대부분의 IT 제품은 예상치 못한 버그가 향후 생길 수 있습니다. 특히 완전히 새로운 제품을 만든다면 더욱 그럴 것입니다. 이를 위해 유지 보수에 대한 부분이 계약서에 명시됩니다. 이 부분은 개발사마다 조건과 제공 범위가 차이가 있고, 추가로 유지보수가 필요한 기간에 대해서는 개발사와 논의하시면 보통 1달에 담당 인력을 몇 명 배치하고, 어느 정도 범위를 커버해 주는지로 계약을 진행하실 수 있습니다. 


운영 비용

굉장히 중요한 부분이지만 맨 마지막에 서술한 것은 위의 내용이 모두 완료되어야 정확한 운영 비용 계산이 가능합니다. 그러나 대부분의 운영 비용은 정적 비용과 동적 비용으로 나뉘고, 그중에서 동적 비용이 정적 비용을 크게 상회하기 때문에 정확한 측정은 어렵습니다. 


정적 비용에 해당하는 비용은 다음과 같습니다.


최소 서버 호스팅 비용(매월 최소 몇 만 원 ~ 몇 십만 원)

최소 데이터 베이스 비용

도메인 구입 및 연간 비용

서드파티 API 월간 사용 비용


동적 비용은 다음과 같습니다.

사용량에 따른 서버 인스턴스 증가 비용

데이터 베이스 사용량 및 스케일 업, 스케일 아웃에 대한 비용

CDN 비용(사용자 및 관리자가 업로드한 사진, 동영상 등을 캐싱하고 전송하는데 들어간 비용)

기타 클라우드 서비스 비용


이러한 항목이 보통 발생하며 대부분의 서비스는 최소 몇만 원에서 큰 서비스의 경우 달에 몇 백만 원 정도의 비용이 발생합니다. 


서비스

마지막으로 제작되고 테스트되는 서비스 단계의 차이가 있습니다. 예를 들어 네이버와 같은 거대 플랫폼은 개발자들이 변경한 소스코드가 메인 서버에 올라오기까지 5개 이상의 단계가 있다고 알고 있습니다. 여기서 말하는 단계는 테스팅하는 단계로 개발과 메인 서버 사이의 테스팅 레벨을 포함한 단계를 뜻합니다.


대부분의 작은 웹사이트는 1개의 단계로 개발됩니다. 로컬 환경 또는 개발 서버에서 개발을 진행하고, 개발이 완료되면 정식 서버만 남기고 개발 서버는 운영하지 않습니다. 즉 1개의 서버 운영 비용만 발생합니다. 반면 복잡도가 올라가면 상시 개발 서버 1개와 운영 서버 1개를 나눠서 개발합니다. 그러면 운영 비용은 당연히 더 나오게 됩니다.


테스팅해야 하는 기능이 많아진다면 개발 및 테스팅 서버가 별도로 추가됩니다. 이는 서비스의 유지 보수와 버그 발생 시 대응을 위한 것입니다. 그래서 중간 테스팅 서버나 단계에 따라 dev, alpha, beta, gamma, staging, production 등으로 테스팅 레벨을 나누고, 개발자와 테스팅 팀은 해당 레벨을 한 단계씩 올려가면서 개발 및 운영을 하게 됩니다. 결과적으로 큰 프로젝트에서는 중간 단계가 많아지고 유지 비용도 증가하게 됩니다.




여기까지가 개발사에서 가격, 기간, 수준을 정하는 기준을 설명드렸습니다. IT 외주 프로젝트는 인테리어 외주나 간판 외주 등과 달리 눈으로 볼 수 없고, 내부적으로 어떻게 만들어지는지 알지 못하기 때문에 프로젝트를 론칭하는 것뿐만 아니라 여러 리스크나 유지에 대한 고민도 함께 해주셔야 합니다. 정확히는 견고한 비즈니스 모델을 설계하는 것이 필요해 보이고, 가능하다면 IT 전문가와 함께 프로젝트를 진행하셔서 좋은 제품을 좋은 개발사와 만드시길 바랍니다.




개발 견적 의뢰하기:



매거진의 이전글 내가 사랑하는 사람들
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari