SNAP is a software platform
Hold on, hold on, before you run away. What if I told you our platform is scalable and reliable and secure?
Heard this before?
Notice the extra shine on those last few words. How many times have you heard platforms described that way? When I hear those words I kind of feel like I am talking to a used car salesmen like Harry Wormwood, Danny Devito's character in Matilda. As the salesmen are talking, you're wondering how much sawdust and banana peels they've added to trick you into buying the car. And before you even begin to understand these qualities you wonder in your heart of hearts: "What, in fact, is a platform?" But you're afraid to voice that externally because everyone else seems to get it. It's OK, they're all imposters. Fakes. Platform groupies. These days, everyone has a platform and they are definitely scalable, reliable, secure and probably will slice and dice too.
So what do platforms do?
When Synapse asked me to be their product manager for the SNAP "Thing" platform, I wondered if they were all laughing at a big secret joke. A product actually does something, but a platform does...nothing. So, you're probably wondering why Synapse has a platform and why you've allowed me to waste this much of your life. Let me explain.
Imagine Me explaining this to my Dad.
Most software platforms out there don't really do anything by themselves. Instead, platforms enable us to reach a higher goal. They never accomplish that goal by themselves. In other words:
A platform solves a set of hard problems in a common way, so that you can focus on solving your specific problems.
For example, let's take a look at two kinds of problems cloud platforms have solved.
Scalability, Reliability, Security
There, I've used our shiny words - scalability, reliability and security. As any good engineer knows the features are usually the easy part to build, while making the features have the right qualities is the truly difficult part. Too many projects drag on long past their due date because these qualities were not ingredients in the original recipe of the product. Too many products fail in mass deployment because they showed a LOT of early promise but quality was an afterthought. These qualities were sprinkled on top of the cookie long after it had cooled and grown stale. And we all know what happens to sprinkles on a cold cookie - they end up on the floor and then get trampled by the kids.
Unfortunately, developing these qualities is really really difficult and time consuming. If you take the time to solve them, your market may have passed...
This is where good platforms excel.
Good platforms make it really easy to bake scalability, reliability and security in while allowing you to hit your market window.
Cloud platforms such as AWS and Azure have solved these problems to a large degree for the cloud in a very nice generic way. But before you look at me like that used car salesman, let's take a peak under the hood to see why their claims pan out.
Data Centers provide a massive amount of collocated compute and storage capabilities. Instead of focusing on single, large and expensive compute and storage resources, the Data Center contains LOTS and LOTS of "small", inexpensive compute and storage resources. Technology such as load balancers (NGINX), clustered databases (Cassandra), virtual machines (VMWare), data analytics (Hadoop) and virtual networks (VXLAN) utilize this Data Center infrastructure to give you a platform that is truly scalable, reliable and, for the most part, secure. When you build your application using AWS, you get all of the capabilities baked in. It's easy.
Transform Networking Problems into Data Problems
IP networks are very difficult beasts. But there is a huge suite of tools and systems that allow us to work over that network. Service providers have abstracted us from the transport technology required to get us to the cloud. Open protocols and open-source implementations of those protocols have made it reliable. AWS & Azure have taken this a step further and transformed the networking problem into a purely data problem. If I want to retrieve some content from an Amazon Web Service, I just do a REST request and get back a JSON document.
Why is that important? Can't good developers solve a networking problem? Why do they want a data problem? I have the sneaky suspicion that it's because modern developers were all born a long time after me and lack experience with networking. You can now take my word for it. No thinking required. Just trust me because I have the all-powerful experience. Or maybe it's just the fact that skinny jeans and black turtlenecks cut off their circulation too much.
All kidding aside, data problems are much easier to deal with than networking problems. I've never met a good engineer, hacker or maker that isn't bored when it comes to solving problems that don't let them show how awesome they are in about 10 minutes. These cloud platforms are so useful in that they make us feel awesome because of the hard networking problems they've solved. We get to focus on our specific problem.
Cloud Computing: The Difficult, Yet Solved Problem
So, there it is, cloud computing is a very difficult problem, but it has been largely solved by many cloud platforms. I recently heard there is an estimated 125 cloud platform companies. How did such a difficult problem come to be solved in such a universal way? Here's a simple formula:
That's it. If you want a general solution to hard problems, you have to pay smart people to solve them.
IoT: Things Meet Cloud
Synapse is paying a lot of smart people to solve hard problems. That's why we have a platform. However, we are not paying them to tackle solved problems. Very sane.
Over the last 10-15 years there has been tremendous investment in solving the cloud computing problem. The new trend is to control and monitor every Thing. We have customers even monitoring cows and prison patients with our stuff. You don't want to know everything they monitor on the cow....
This new trend opens up all sorts of new problems. The Internet Of Things is really where high powered, large compute cloud meets low power, embedded Things.
Synapse is focused on solving the hard problems associated with low power, embedded Things.
The unsolved problems of IoT do not lie in the ability to perform large-scale computing and storage, but in the ability to extend the reach of all that horsepower further out into the Real World.
Extending the reach will require different solutions to similar problems solved by Cloud Platforms. These solutions can be known as Thing Platforms. IoT applications will need to leverage both Cloud and Thing platforms to achieve their promise.
Cloud platforms solve two sets of problems.
- Transform networking problems (hard) into data-centric problems (easier)
- Make it really easy to bake qualities such as scalability, reliability and security into applications
Synapse is NOT building another Cloud Platform, yet we are solving these same two sets of problems for the "Things" in IoT. The solutions, however, for the Real World vs Data Center are often very different. We are focused on solving these hard problems in a general way, so that you can build your own IoT application.