Using SDK vs Custom Development. Guide For Software and App Founders
Tags: sdk, tutorial, codenewbie, startup
Published: 2023-02-14 08:30:00

When building own multimedia and communication software there always stands a question. Shall I use a ready-made solution like an SDK or API or shall I develop my own custom component? What approach would be more beneficial in the long run? What do I need to take into account to make the right choice?

So here is an article that clears things out to help you make the decision.

## What is an SDK?

First, let’s figure out clearly what we are talking about. An **SDK is a set of software development tools developers can use as ready-made solutions** building software for specific platforms. SDKs can include one or more APIs along with programming tools and documentation. This means that this will still require developers’ effort to assemble and integrate the component but not write it from scratch. That means less development time and money paid. Some development teams prefer certain SDK’s because they are familiar to them, but it might not be the best choice for the platform. 

## How to pick the right SDK?

Here is a set of parameters to check for each SDK you consider: 

1. API and SDK documentation — whether it is clear and easy to understand for developers. If it’s not, it will lead to a higher cost of integration for an increase in the developer time and effort.

2. Tech stack. That is languages and frameworks used on your platform and whether there is documentation for these. Paid APIs and SDKs provide documentation for the majority of languages and frameworks. It’s not the case with free APIs.

3. Support. How well the company provides technical support in case there are difficulties in setting up the component.

4. Reliability. You want the provider to offer the SLA (service level agreement) is around 99.99%, meaning the system will work 99.99% of the time. 

5. Scalability limits. Some components do not allow for a large number of concurrent users.

6. Security. Video and text-based chat content is of a sensitive nature. For that video APIs must meet the highest data security standards. When you integrate them, you also integrate top-level compliance — something else your app developers won’t need to worry about, that saves a lot of time. Yet it mostly works for paid SDKs only.

7. Сode license of the component. If the SDK you’re using is licensed under GPL2 / GPL3, you’ll be obliged to share the source code of your whole system available on request. That means any developer can ask for the code to your product and use it for free.

8. Regional support — whether service providers work in the country you target. For instance, Twilio works in 50 countries, while Vonage is checked successfully for 80 countries.

## Pros & Cons of SDK for multimedia and engagement features

### Pros
- It saves time for development as it provides the pre-built functionality. Otherwise you’d have to build it from scratch. This, in turn, speeds up time to market for your [MVP](https://forasoft.com/blog/article/what-is-mvp-263).
- It provides a consistent and stable development environment. So it’s easier to keep your software code up to date.
- It facilitates the integration of new features and functionalities into applications.

### Cons
- It limits flexibility and customization options for developers. They will have to work within the constraints of the SDK. For instance, certain AR video editing SDKs won’t let you upload your own face effects. Some whiteboard SDKs don’t allow attaching video files. Or, there’re SDKs that work with sound but don’t have facilities to make a certain audio protocol setup for undistorted sound. 
- It may not provide all the features or functionality that a developer needs for a specific application. For example, adding a formula editor to a whiteboard component. So a paid solution might still require [custom development](https://forasoft.com/services).
- It brings extra monthly costs. If your platform grows faster than you expected you may find yourself spending more on supporting the load of users with an SDK.

## How to know you need to go for custom development

Answer these 3 questions:

1. **How complex is the functionality of the component that your business requires?** Do you want a simple one-on-one text chat or an entire LMS system? What particular features do you expect your product to have? Complexity of the functionality is evaluated on the planning stage, when business requirements are figured. This may vary from a simple one-on-one text chat functionality to a whiteboard component for presentations, custom participant roles or making unique setup for a clear sound quality in a collaboration tool for musicians or application of a particular codec, FPS or streaming protocol. Most engagement SDKs on the market offer basic features: voice calling, text, p2p and group video chat, or streaming. Although there are providers that offer a variety of complex features such as speech-to-text transcription, recording and cloud storage functionality and custom whiteboard components. Each of these components increases the price of the SDK on per usage dramatically.

2. **How many overall or simultaneous users should your system support?** Some multimedia and engagement SDKs have limitations to the number of concurrent rooms and users of the service. There’re limits for calls, conferences, streams and chats. They usually define and limit the number of participants in a chat room or a video call, a number of concurrent watchers of a stream. If you require larger numbers then those the SDK offers you’ll have to scale it up. This takes lots of effort and requires custom development.

3. **Are you ready to overpay the monthly upkeep costs for your system?**
Let’s take an example to see the difference, as features are added.

We have requirements for a simple group meeting of 5 people with video quality 480p. The meeting must run for one hour. Based on our records, the cost of handling this meeting through an SDK is ~ $1,2 per hour. With a custom component that will be $0,69 per hour. 
Also, the project requires a recording feature. It increases the cost of a meeting with SDK to ~$2,4 per hour. For the custom component it’ll only make 7 cents difference — the overall cost will be $0,75 per hour.
Meeting recordings often require cloud storage for multiple users access. That’s another expense item. Check out how to [calculate the size of a video file](https://forasoft.com/blog/article/how-to-estimate-the-server-cost-for-a-video-platform-249).
Based on our inputs, the meeting requires 13,72GB of storage. Now the cost of a meeting with SDK will be ~$3,04 per hour and will only cost $0,81/hour with a custom component.
We can also see the difference for a speech-to-text recognition. $4,96 per hour with an SDK vs $2,25 per hour with a custom component.

So, here is what we get for one meeting. Using an **SDK is twice as expensive to upkeep**. However, it’s not that bad. For 500 meetings a month it will be ~$2480 vs $1125 for our example case. This **monthly overpayment will have to go on for at least 3 years to cover expenses** for custom development. If you are a startup that is testing out a market hypothesis and only building an MVP, then you are not expecting big numbers just yet. And this difference in the upkeep costs will not cover the initial investment to make a custom component. Also, some SDK providers offer discounts and limited free usage for startups.

But if the system is large and you expect, say 5000 meetings a month, the difference in the upkeep costs is dramatic. **Custom development will pay off in half a year and cut down your costs.** The same works for all multimedia components — voice calls, text chats, streaming, video player and others.

To sum up, the choice between custom development and using an SDK involves multiple parameters to evaluate as well as prospects for the system growth. SDKs usually are a good choice for MVPs, if communication services is not the main benefit of the platform, but rather an upgrade to the main USP.