Software stacks. This conquers up a certain mystery for me, so I decided to order up a plate to see if I can digest all they seem to be offering.
I am constantly reading about “stacks” when it comes to technology design. The IoT stack is becoming the “Thing Stack”. Really? Need to understand that.
Technology has layers that constantly are adding (stacks) of complexity. Each layer needs to be designed to integrate and communicate with the other layers in the stack.
So far so good for a layman like me but lets now dig in.
It is when we get to the open question of “what is a full stack” it gets more complicated.
This possibly means how much can you eat (consume), how hungry you are or how complicated your business is to determine the needs of a “full stack. Hence why I went for my pancake stack as you are always asked: “how big a stack do you want?”
I have read that a company like Apple have the ideal “full stack” as they have integrated from the top to the bottom to deliver the best (?) user/customer experience to their customers, offering a vertically integrated company (Ashu Joshi, article April 20, 2017 dee link below) This sort of makes sense as an anchor point for me.
Then I read an article by Laurence Gellert on what is a full stack developer. Now he rightly points out these developers need to work across multiple languages, have experience on multiple platforms and even different industry experience. These guys have a “higher” view of all the connecting pieces. He provides for me the best understanding of the layers of a full stack (outlined below). I am sure there are multiple opinions out there and constantly in a fluid update.
For us, as poor laymen, we need to try and gain an overview on stacks. It does seem, honestly, today it is highly “fluid” and not ideal. Reliance on one person’s view of a stack does not mean it is the right understanding of a stack, for the future business, hence why a more general dummies guide might help specialists to get generalists or senior management on board earlier, as they can be familiar with some of the (coded) language.
So here is one view of a stack to begin to frame this
ps: I seem to have collected so many stacks as visuals, spoilt for choice actually, hard to merge thin in here.
Back to eating through our stack story
So then I gather there is a counter view the full stack developer has now been superseded by a full stack integrator, where you are really needing experts at each tier or layer, who understand the intricacies but you still need this orchestrator or overlord who has a decent level of functional understanding of each of these component parts (layers, tiers). This is the guy or team of guys capable of connecting all the various layers or tiers and working with the layer expert so that a feature needed gets delivered and integrated. (See this link) although it is 4 years old- an eternity in the software world.
So the term integrator is popping up as we recognize the complexity of “stack” design you need both depth and breath (those magic t-skills) are nicely summarized as bridge-building software architects. OK, so far so good (again)
So onto what is a stack- I am getting there.
IoT stacks manage solutions for device hardware, devise software, communications, cloud platforms, and cloud applications. I keep being told “we are building a full stack” but I find that often hard to believe as new technology breakthroughs keep moving ahead of “physical” design. We are blending existing technologies with new ones and the needs of additional stacks or breadth in the different stacks that need changing, as software keeps galloping (way ahead) of the designs for our business, and it is difficult to keep up with, let alone have time to really learn what they can offer.
There is an awful lot of engineering going on dealing with many unique challenges, built up over the years. The understanding of all the layers, how they work not just in the past but how they need to work in the future is demanding. Building the right technology stack is essential for delivering strategy and the underlying digital roadmap. Understanding all the stacks and their layering guides the creation of IoT solutions.
Another view of a technology layered stack
So what makes up a full stack?
The layers according to this view for an extended explanation. Firstly the need to understand all the needs broken down by:
- Server, Network, and Hosting Environment.
- Data Modeling
- Business Logic
- API layer / Action Layer / MVC
- User Interface
- User Experience
- Understanding what the customer and the business need.
Then a list offered by Ashu Joshi’s extended explanation (here) where he suggests what makes a ‘complete’ solution set, it consists of
1. Hardware design, development, and manufacturing
2. Embedded / Firmware (resource-constrained) Programming
3. Application-level & Middleware Programming
4. Cloud development, and operations
5. Management — of devices, of applications, of network
6. Smartphone & Tablet Apps needs
7. Analytics, Mining, Business Intelligence
8. Integration with IT & other systems
So let’s stop consuming and view a further view of stacks
Choosing your stack comes in two variants (but with multiple choices)
So if we get a common understanding of stacks, full stacks, layers etc we then have one more piece of the stack mystery (for me). The argument of a “full stack” versus a “custom stack”. David Houghton came to my rescue here
Here we are into creating our stacks, our choice from the menu. The view is, either you buy an available “full stack” or do you assemble a “custom stack” yourself? Each comes with pro’s and con’s that David touches upon in his post. In summary, his view is:
Full Stack IoT view
“The Full Stacks have a vision and future-state business model based on fully-integrated, and in some cases rigidly engineered, “stacks” of business functionality. These are complete and self-contained ecosystems of business or functional capabilities (like fleet management, supply chain control, flow optimization, predictive maintenance, etc.).
Full Stack IoT can contain all of the modules, business logic, software, data, utilities, operating systems, servers, storage (whether cloud-based or not), containers, network connections, security, enterprise service management capabilities, and so on needed to function. All rigidly engineered for optimal performance and minimal customer care and maintenance.”
Custom Stack IoT
“The Custom Stacks take a different view, suggesting customers cannot afford to get that deeply in bed with any one vendor, regardless of what they might say about their openness and connectivity. We’re reminded of what it was like to be locked-in to SAP’s mammoth, inflexible R/3 product or Microsoft’s rigid enterprise agreements and never-ending refresh cycles.
The premise of Custom Stack IoT is to keep these various pieces separate so they can be provided on a more customizable, flexible basis to meet precise business needs. Best practices, like ITIL and DevOps, make integration, operation, and support of these mixed infrastructures and services more rigorous and reliable.”
David then nicely finishes with understanding your critical variables determines you likely stack direction (I like this list)
- Sourcing Posture – Is IoT core to your business? Do you possess genuine ‘connected systems’ experience in your stable or will you have to rely on external resources?
- Intellectual Property – Where will you establish IP?
- Integration – Who will play the role of integrator?
- Deployment Models – 2-tier or 3-tier model? Do you anticipate driving intelligence to the edge? How will you ensure that logic stays in sync?
- Standards – Given the lack of standards, what role will they play today and tomorrow?
- Connectivity – What protocol will you use to connect to your ‘thing’?
- Flexibility – What is your lock-in tolerance? Do you understand the key lock-in points?
- Network – Coverage and performance requirements along with End of Life schedules for different technologies/spectrum?
- Service & Support – Who will provide what levels for each layer of the stack?
So here is a simple vision of a decision matrix for stacks
So I get it- Going across Enterprises needs a different level of Stacking, each to their own.
We are equally requiring “jobs-to-be-done” not just in one Enterprise but in the growing need to connect up in the IIoT Enterprise world, where connectivity and exchange become common to leverage new business values. Stacks need to tackle the hard-end in protecting and keeping the infrastructure secure and open enough for attracting in the user-end as well. That needs a real business grasp and we perhaps are not making it easier by debating multiple definitions of stacks and the software engineers that are hiding behind their particular view of full stacks.
The IoT stack becoming the “Things Stack” is shifting our thinking so I am told in my research.
We need to build the physical with the digital- that makes sense as we entertain (date?) digital twins far more. We need to understand the physical world of what we are trying to do or achieve, with the technology solutions that work with, or for the business. User interactions are increasing in their expectancies, wanting “greater connected experience” and demanding Enterprises are equally required to be very savvy about the markets they are in and wish to serve. so our IoT solutions need to keep building their stacks or build out their stacks.
So ready for two more stacks?
Then we have the key components that make up value in a stack.
So stack thinking is very important to understand
It does seem we are needing to think in different layers or stacks, in a more holistic way, dealing and understanding, solving and connecting the physical world, with the business abilities, the technology, and digital layers and the market changes taking place and the user experiences expected.
This rethinking “stacks” needs to build more of the interrelationships between these to get context, device and gain the best level of “interaction” to gain from the ability to connect up. It is not purely IoT to think this through and try to understand it. It is the understanding of the full business management, in their recognition of needs and how this should work, and then become deeply involvement, so the stack designs (and designers) are aligned and can deliver what is needed by all the relevant decision-makers and for the people working on delivering on the business objectives in ways it works for them, to do their job efficiently.
These business objectives need reflecting upon before I sign off on this blog, as I think of stacks I am thinking of those pancakes.
Stacks have to deliver in enabling new ways of engaging with customers, they need to integrate a business environment, and be ready or enabled, to work on open platforms with other businesses, they need to capture the intelligence within the organization, they need to capture the data to optimize operations, provide insights. They need to allow for connection from edges (machines, people, smartphones) all the way through to the cloud or central data center and then be able to be ‘fed back’ for new insights and knowledge.
They need to reflect the pace of business, they need to mirror the culture and mindset in allowing us to be creative, learn, see and assess risk-taking and ensure collaboration. They need to be flexible, distributed, allow for us to be productive, improve access to performance enhancing and data visibility and really, really be designed to be the solution that gives full connectivity across the enterprise, for remote workers, and across functions and always ensure IoT is always on.
So if you don’t have your stacks right in their design, flexibility, and constantly evolving and keeping pace, to put it is a simple statement, just like when you have finished a stack of pancakes “you are stuffed!”
Stacks seem highly individual, these are more customer designed for the large enterprise and for the vast majority they rely on the IoT providers (Microsoft, AWS etc) to provide the stack.
Am I any clearer? Are you?. Perhaps but I need to come back to stacks a little more. In the meantime, I need to digest this “Stack” as it has some overload and not yet as clear as I would like to be, or is it? At least it begins to frame stacks (well for me!).
More stacks anyone?