Posts Tagged ‘Distributed Computing’
Chances are, if you are in the business of technology, you have come across the term “Full Stack”. It started few years back with the notion of a (software) developer being able to program all layers for web applications – you can find a great description from 2012 here: What is a Full Stack developer?. The momentum, and market for Full stack developers kept going up. And then it started being discussed at the level of a company or rather a startup – and I would attribute it to the VC firm A16Z to define it at this level. A16Z has dedicated a page on the Full Stack Startup as a part of their ‘trends‘ in investing. The ideal full stack company is Apple – they do everything top to bottom, providing the best user/consumer experience to their customers (readers may be familiar with the previous iteration of full stack – the Vertically Integrated Company – I’m not sure how it is different from the definition of Full Stack).
This got me thinking on what are the attributes, skills, expertise needed by a Full Stack IoT Company – a company that build a complete solution based on the benefits of IoT, and here they are:
1. Hardware design, development and manufacturing: This may or may not be part of a full stack IoT company but the reality is that the T in IoT stands for “Things” – physical things. And interfacing with them requires hardware. Full Stack IoT companies will own or control significant aspects of the hardware required in their solution. This implies the Full Stack IoT company needs skill around design, development of hardware. And as many delayed Kickstarter hardware projects prove – these companies would need expertise and experience in manufacturing, and supply chain. The hardware would involve both the sensor and the gateway being used.
2. Embedded / Firmware (resource-constrained) Programming: IoT has re-surfaced the lost art of an embedded programmer. Imagine the code running inside the wearables or sensors – it is all embedded code and in some cases running without any real operating system. Design, development and debugging is fundamentally different than cloud or mobility or application level programming.
3. Application-level & Middleware Programming: Programming on the IoT Gateway, Cloud and the distributed middleware to integrate all of the elements together
4. Cloud development, and operations: All IoT applications require a cloud component, you would need the cloud infrastructure (e.g. Amazon AWS), the IoT middleware portion running on the cloud and the IoT application which provides the functionality.
5. Management – of devices, of applications, of network (even though the network belongs to a third party): as the solution provider – managing devices, and apps – for version control, updates would be needed as a part of the integrated offer and solution. Once again – the Full Stack IoT company may license or integrate a third party solution but would own the responsibility.
6. Smartphone & Tablet Apps: Do I really need to justify this? You would need apps to both for management of the IoT application and also for consuming the experience provided by the application.
7. Analytics, Mining, Business Intelligence: ideally the company provides basic analytics with its solutions, and can be integrated with other products and solutions for advanced analytics. Full Stack IoT companies may leverage analytics solutions from other companies, but would still retain control of the data.
8. Integration with IT & other systems – to interface, and integrate with business applications in order to deliver the contextual value provided by the IoT system. Your IoT application may also need to integrate with other services to enhance your service – for example you may need to integrate with a Weather reporting web service if you are offering an application that controls/manages air conditioning (HVACs).
Bottom line – IoT applications are distributed across multiple systems and that is both a challenge and an opportunity! Whether your company is a “Full Stack” IoT company or not – if you building IoT applications – you cannot escape the 8 attributes described above. You will have to partner, build or integrate that help address all the 8 elements.
Full Stack Reading
Last year I embarked on a journey to explore the Internet of Things or as Cisco calls it “Internet of Everything” (IoE). I like the notion of IoE not because it is coined by my day job employer but because it is about everything. Smartthings, the much talked about IoT startup, talks up the “Physical Graph” because thanks to the Social Networking era the term “Graph” puts you in vogue. [But really graph? do we want to be relegated to a 2D world of graph?]
I have installed, experimented, hacked and studied many IoT offerings, here is the current list:
All the above and more are enabling discrete systems to get connected – the first step towards the IoE. As these systems proliferate and standardize in terms of presence and interoperability the need for a fabric that ties all of them together will emerge. I believe Tim O’Reilly describes this notion very well – Software above a Single Device.
I am excited to play a role in tying together the Internet of Everything.