자체개발? 혹은 외주개발? 카톡과 같은 메신저 어플을 개발하기 위한 방법: 카톡과 같은 메신저 어플을 개발하기 위해서 자체 개발 or 자체개발 어느 방법이 좋을까? 이를 위해 어떤 판단 기준이 필요한가
모바일 메신저에 대한 뜨거운 관심과 함께 어플 안에 채팅 기능을 도입하려는 트렌드가 최근 급부상하고 있다. 메신저 혹은 메시징 서비스를 기획함에 있어서 어떤 질문을 제일 먼저 해봐야 할까?
기업이 개발을 할때 흔히 경험하는 자체 or 외주개발 (Make or Buy) 의사결정 - 메신저 / 메시징 서비스 프로젝트에는 어떻게 적용될 수 있는가
요즘에는 모바일 메신저가 깔려 있지 않은 스마트 폰을 찾기 어려우며, 최근 출시되는 많은 수의 어플들이 메시지를 내재화 하는 기능을 도입해 이용자들 사이의 대화를 촉진하고 있다. - 대규모의 대화방이 개설되어 있는 라이브 동영상 어플, 채팅 기능이 도입되어 쇼핑을 돕는 모바일 커머스, 그리고 이미 채팅이 핵심 기능이 되어 버린 모바일 게임과 SNS 서비스들 등이 바로 그 예이다. 특히 ‘대화형 인터페이스’라는 관점에서 기존의 서비스들과 결합된 채팅, 메시지 기능을 구현하는 동시에 타이트한 프로젝트 일정을 고려하다 보면 의례 다음과 같은 질문을 하게 된다.
내부에서 직접 개발해야 할까? 혹은 채팅 API/ 메시지 기능 SDK와 같은 외부 솔루션을 가져다 사용해야 할까?
서비스의 목표, 도입하려는 기능 및 사용자 유치 목표에 따른 팀의 리소스 등을 모두 고려하다 보면 의사결정의 복잡도가 기하급수적으로 증가하게 된다. 또한 의사결정을 맡은 리더가 프로젝트의 총 비용 관점 (full cost ownership)에서 전체 프로젝트를 조기에 파악하기 어렵기 때문에 섣부른 의사결정을 불러올 수 도 있다. 당장 비즈니스 모델이 상세하게 결정된 상황이 아니라면 투입되는 개발 및 디자인 리소스를 계산하기 어렵고, 프로젝트 ROI 외에도, 투입되는 리소스의 기회비용을 객관적으로 평가하기 어려워 진다.
다행히도, 몇 가지 의사결정을 위한 체크리스트가 존재한다. 다음에서 어플을 위한 메시징 기능 개발을 위해 고려해야 하는 몇 가지 체크 포인트들을 확인해 보자.
내부에서 직접 개발 혹은 3rd party 솔루션, 어떤 선택이 적합한가?
1. 구현하려 하는 기능 리스트의 정의 및 향후 성장 목표에 대한 분석
제일 우선 고려되어야 하는 것은 서비스/ 프로젝트의 목표(예. 혁신적인 사용자 경험, 그리고 이에 동반되는 서비스 활성화 및 리텐션 개선)를 명확히 해야 한다는 것이다. 또한 서비스의 목표 달성을 위해 필요한 주요 기능을 사업 초기에 일찍이 정의해야 한다. 스마트폰 출시 이후 메신저는 진화를 거듭해 오며, 단순히 1:1 채팅 혹은 그룹 채팅과 같은 채팅 룸의 기본 기능을 넘어서, 읽음 표시, 챗봇, 멀티 미디어 콘텐츠 큐레이션, 빅데이터 분석, 타 서비스의 메신저 내 통합 (integration)과 같은 고부가 기능을 제공하는 방향으로 발전해 왔다. 또한, 향후 프로젝트가 진행되며 추가적인 기능 개발, 커스텀 최적화가 필요할지에 대해 고민해봐야 한다. 마지막으로, 자체적으로 서비스를 개발할 경우 투입된 비용을 충분히 정당화할 수 있을 정도의 스케일로 성장할 수 있을지에 대한 판단이 필요하다.
2. 본격적인 개발에 앞선 기술 요건 검토
첫번째에서 정의된 기능을 충실히 반영하기 위해 구체적인 메시징 서비스의 개발/ 기술 요건에 대해 파악하는 것이 필요하다. 메신저 혹은 메시징 서비스 개발을 위해 검토해야 하는 기술 요건의 영역은 다음과 같이 정리될 수 있다.
- Server operation: Dedicated, IaaS (AWS, Azure, GCE), PaaS (Heroku, GAE)
- Traffic handling: Load Balancing, Auto Scaling, Latency-based DNS routing
- Database: No SQL (HBase, Cassandra, MongoDB), RDB (MySQL, Postgres)
- File storage: Cloud storage, CDN
- Cache: Redis, Memcached
- Chat server: Proprietary, Open source, Commercial solution
- Network layer: WebSocket, HTTP long-polling, TCP socket
- Messaging protocol: 자체 프로토콜, XMPP, MQTT
- Client platform: iOS, Android, Web (JavaScript), .NET, React Native, Ionic
- 프로젝트의 성격/ 산업에 따라 요구되는 보안 정책을 준수하기 위해 추가적으로 마련해야 하는 보안/ encryption 기술
- 기타: Logging, Monitoring, Analytics
3. 자체 개발 혹은 외부 솔루션을 통한 개발 옵션에 대한 적합성 평가
서비스 목표, 필요한 기능 및 기술 요건에 대한 정의를 마친 후에는, 자체적으로 개발을 진행할 것인지, 혹은 외부 솔루션을 이용해 개발을 진행할 것인지에 대해 다음과 같은 체크리스트를 확인해 봐야 한다.
- 제품 출시의 적시성 (Time-to-market): 경쟁자가 얼마나 빠르게 유사제품을 출시할 것인지 혹은 소비자의 기대 수준을 고려한 시장 출시 계획
- 비용 효율성: 자체적으로 시스템을 개발하는 것의 ROI와 규모의 경제를 이루기 위한 최소 모객 규모 등에 대한 파악
- 인재의 가용성: 개발팀과 디자이너 등 충분한 전문성을 가진 인력이 투입 가능하며, 그 리소스가 조직 내 충분한지에 대한 평가
- 실행 및 커뮤니케이션 비용: 자체 솔루션 구축을 위해 필요한 내부 커뮤니케이션 및 실행을 위해 팀을 운영하는데 들어가는 비용/ 노력 vs. 외부 솔루션을 프로젝트 목적에 맞도록 관리하는데 들어가는 외부 커뮤니케이션 비용/ 노력
만약 제품 출시의 속도와 보다 빠른 혁신을 시장에 증명하는 것이 중요할 경우, 그리고 시장 선점 효과가 중요한 과제인 경우 (잘 설계된) 외부 솔루션을 사용하는 것이 속도 측면에서 우위를 제공할 수 있다.
대부분의 스타트업 혹은 기술 기업에게, 개발 리소스는 항상 부족하기 마련이며, 대부분의 개발 리소스 투입은 높은 비용을 유발한다. ‘왓츠앱을 개발하는 비용이 어떻게 되나요?’라는 기사에서 확인할 수 있듯이, 왓츠앱 (혹은 카톡과) 같은 메신저 어플을 개발할 경우 (미국 기준으로) 주요 기능을 구현하기 위해서 2에서 3개월 동안 여섯명에서 여덟명의 엔지니어와 프로젝트( 혹은 프로덕트) 매니저가 투입되어야 하며, 약 3억 7천만원 정도(cost up to $370,000) 의 비용이 발생할 것으로 보고 있다. 개발 리소스를 제외하더라도, 추가적인 서버 및 인프라, 시스템 비용을 고려해야 하며, 향후 유지 보수 및 확장성을 위한 비용과 (챗봇, 검색, 빅데이터 분석 등) 미래에 유망한 트렌드 반영을 위해 추가로 기능 개발에 들여야 하는 비용을 간과 할 수 없다.
만약 당장 투입 가능한 전담 리소스가 없는 경우, 향후 필요한 팀을 전담으로 확보할 때까지 프로젝트의 진행을 미루는게 나을 수 있다. 엔지니어와 디자이너에게 프로젝트에 대한 책임성을 부여하기 전까지 중장기적으로 높은 수준의 경쟁력을 가진 제품을 만들어 내거나, 제품의 수준을 계속 높게 유지하는 것이 불가능할수 있기 때문이다. 또한, 필요한 인력을 채용하더라도 리크루팅, 트레이닝 등을 통해 필요한 전문성을 확보하도록 돕는데 들어가는 비용 또한 적지 않다.
일반적으로 외부 솔루션을 이용할 때 프로젝트 목적에 맞도록 확인하고 필요한 요구사항을 관철하는데 따른 외부 커뮤니케이션 비용이 내부의 팀과 이야기 할때보다 높게 발생한다. 외부 솔루션이 프로젝트의 다른 기능 요소들과도 충돌이 있지는 않은지 면밀히 검토해야 하며 향후 3-5년간은 유지, 보수에 이슈가 없을지 살펴봐야 한다.
하지만, 때로는 내부의 커뮤니케이션이 외부의 그것보다 더 높은 비용을 발생시키는 경우도 있을수 있다. 내부의 ‘채팅 기능’ 개발을 공동으로 진행하는 플랫폼 조직/부서가 있는 아주 큰 회사라 할지라도, 실무 부서의 요구사항에 맞도록 필요한 타이밍에 충분한 지원을 받는 것은 쉽지 않은 일이다. 같은 회사내에 있음에도 오히려 더 높은 비용을 요구하거나, 커스터마이징 측면에서 최적화되지 않은 솔루션을 구매할 것을 강요당하는 등 다양한 이슈가 존재할 수 있다.
4. 메시징 SDK 등 외부 솔루션의 적합성을 평가하는 기준
당신 회사 내부에 적절한 전문성을 갖춘 인력을 충분히 보유하고 있다 하더라도 외부 솔루션 사용이 더 높은 중장기 ROI를 가져다 주기 위해서 다음과 같은 조건이 만족되면 된다.
- 외부 업체가 기술적으로 가장 트렌디한 부문에 투자를 계속 해 나가며, 지속적으로 제품을 업데이트 해 나가는 경우
- 외부 업체가 발생 가능한 이슈들에 대해 독립적이며, 책임성 있는 대응 및 보고체계를 갖추고 있는 경우
- 사용량 및 이용자 기반이 성장함에 따라 필요한 인프라 스케일에 선제적인 투자를 지속해 나가는 업체
- 기존에 이용하던 솔루션/ 혹은 자체적으로 개발한 솔루션이 존재하는 경우, 새로운 시스템으로의 이전이 용이하거나, 업체 차원에서의 지원이 존재하는 경우
센드버드와 같은 채팅 API 업체들이 여기에 속하며, 자체적인 SDK 및 각종 기능 호출을 통해 쉽고 빠르게 고기능성 메시징 서비스를 구현하도록 도와준다는 장점이 있다. 프로젝트/ 서비스 시나리오에 따라 필요한 각종 메시징 기능을 빠르게 테스트 해보고, 필요한 경우 업체에서 제공하는 어드민/ 분석 도구를 이용해 소비자의 메시지를 분석하고 추가적인 기능 개선을 하는 것 또한 가능하다.
‘바퀴를 또다시 발명하지 말것!’ (Don’t reinvent the wheel)
현존하는 메시징 솔루션은 메신저 혹은 메시지 서비스 개발에 필요한 개발 도구 (SDK) 외에도 UI 샘플, 클라우드 인프라 등을 포함하는 통합 솔루션의 성격을 띠는 것이 많다. 따라서, 프로젝트 팀 입장에서는 메시지 외 다른 핵심 기능에 집중 할 수 있을 뿐 아니라 유지, 보수를 위해 추가적으로 들어가는 시간과 비용을 덜어준다는 장점이 있다. 프로젝트의 성공을 담보하는 핵심 기능에 우선으로 자원과 팀을 할애하고, 일부 기능에서는 효율성을 추구하는 것 또한 전략적인 선택이 될 수 있다. 위에서 설명한 접근법이 보다 장기적인 관점에서 당신의 프로젝트에 긍정적인 영향을 줄 수 있길 기대한다.
'개발' 카테고리의 다른 글
검색엔진최적화(SEO) 마케팅 총정리 가이드 (0) | 2019.11.03 |
---|---|
검색엔진 최적화(SEO) 초보자 가이드 (0) | 2019.11.03 |
댓글