Learn how to Build Your Rock-Solid Enterprise Video Solution – Pt 2
You got your metadata, your storage and your multiple video formats in order, and are on your way to create a rock-solid video application. Now we would like to introduce you to a few more things to consider. Let’s use this second part to talk content structure, workflows and scalability for your video application, all needed to get to the next level.
Video is everywhere, and there are numbers to prove it. Cisco predicts video will be 80% of all IP traffic in 2019. People now spend more time with video on the internet than social networks, with over 40% of the viewing happening on mobile. We all know it’s big, and that it will get bigger, e.g., Facebook doubled their video views since April, and Snapchat reports six billion daily video views in their app. Sooner or later you will end up building a video application for your enterprise.
In the first part of this blog post series we discussed storage, metadata and what to think about the need to be able to handle multiple video formats for both input and output. In this second part we add on to that with content structure, workflows and scalability to handle YOUR 10 billion video views a day. No, we did not forget integration, we will talk about that in the coming third part.
Content structure (order is there to prevent chaos)
Video is harder to organize than text or images since it, in practice, includes a plentitude of both images and text/data in the same clip. But it is also so that you will want to use parts of a clip in combination with other clips and keep track of all that. To the rescue is metadata which is all kinds of information about video including parts of the clip and, of course, the full clip.
Make sure your structure is _not_ designed around files and certainly not a strict hierarchy of metadata-folders-files.
Depending on what you want to do, how much content you have, how fast your turn-around is etc you will want to organize your repository differently.
Here are two initial pieces of advice
- Keep it simple and intuitive. Surprisingly often your first instinct is right. Use that tags you think of first and elaborate later. Use tools that make it super simple to tag. The advanced ones will either break or not be used for longer than a week.
- Make sure your structure is _not_ designed around files and certainly not a strict hierarchy of metadata-folders-files. Doing this will not break since it won’t even work in the first place. A clip, or even parts of a clip, will have to be tagged in many different ways but also be sorted in to many different collection of clips. As you get more advanced you may even want to repurpose an audio track from one clip in another context and still keep track of the original.
Once you have a first simple structure in place, and it should really not take longer than a few minutes, you can start looking into how you can auto-create metadata to enrich your content structures.
Interestingly enough, content structure and metadata are the first steps to get workflows together and make your work more efficient.
Workflow (getting it all together)
Your different users and departments will have different needs and workflows. The production department have one workflow and very specific demands on formats, the marketing department another with integrations to third-party software, and then you have your overall business processes. You need to accommodate the existing workflows, and make sure that you can deliver the right media files to the right user at the right time. Don’t lose sight of the original purpose, speed and quality.
Roughly speaking there are three kinds of workflows:
These are the small things people do every day. Make sure your users have great support and stability, automate as much as possible and keep things simple.
- Structured with Human interaction
This is what many typically think of when the word ‘workflow’ is used. Rules based tasks with human interaction in most steps. Think “flowcharts”, “approval levels”, “publishing workflows” etc. Plenty of great tools to integrate and use for example activiti or jboss
- Structured and performed by machines
These are programmatic rules that are executed on triggers from user interaction or other workflows. For example – a rule that automatically transcodes anything that arrives in a certain watchfolder into five other pre-defined formats, set a metadata flag and send an email to everyone in the admin-group.
Our experience is that the workflows initially is very ambitious and slightly over-engineered. You are likely to have all of the three kinds of workflows in your solution and we recommend you focus on the “easy wins” to start with. The small things that save time and find efficiencies rather than trying to map out everything from the beginning.
Scalability (well, your application is successful, you need to scale)
Scalability come in many flavors, depending on what your needs are. You can scale geographically, i.e., being accessible in many regions over the world, with the same performance and availability. Different regions will also have different laws and regulations that you must be able to adhere to, with new workflows, and rights management. Your content repository should be a unified entity regardless of how many physical or virtual sites you deploy.
Scaling is also about functionality. You need to be able to add functionality without your underlying infrastructure imposing limitations. Primarily, this is about the data model. It should be flexible and powerful enough to handle your requirements (and grow with them) without having to resort to add a “kludge layer” to the solution. While on this topic, make sure your solution is capable of handling new types of users.
“When your solution becomes successful, more and more users would like to use it to solve their own problems.”
Of course, what most people refers to with scaling is performance. Is your solution based on components that can be separated from each other? Good! That makes it possible to run these components on separate machines in order to increase performance. Maybe it is even possible to scale out each component, to run each component on multiple servers? Great, then you have good chance of getting really high performance. Even better – if your infrastructure allows multiple component instances, you can get high availability from redundancy.