It’s been some time since I blogged about my personal ‘Hobby Stack’ where I wrote about how a Hobby App can be built and made available on the Internet for almost free. I’m now taking this further into Enterprise Grade where IT needs to guarantee both robustness and security while at the same time ensure the latest trends in technology are being fully leveraged to stay relevant for Business.
Before we jump into what is Peer to Peer, first let’s see what is happening in the IT-OT Ecosystem and driving the need to build Cloud (Public / Private) Architectures
Need for Innovation
Corporates are constantly looking for ways to Adapt quickly to new realities in ways that are sustainable and profitable.
For an Example, Uber looked at the ‘Cab’ Market and saw inefficiency in the Human Driven hailing process. They also looked at the abundance of Smartphones in the consumers’ hand. They blended both these and moved the hailing process into the app that works happily for both the consumer and the drivers and hence enabled mass Agility with minimal Technology Spend. Now within a span of 4 years Uber is now a $60B company with footprint in 66 countries and over 450 cities worldwide. All this when their service does not even have a ‘Toll-Free’ Phone based service number! Now before you think I will claim that Uber uses Cloud, the twist happens and the fact is that Uber instead runs from traditional Data Centres! Want to look at something more interesting – Uber uses the Driver’s phone as a backup data centre!
Similar Not-So-Normal anti-crowd strategies are abound now in both new and old corporates, but one element stands out…’Innovation’… And Innovation consistently calls for the Normal to be challenged and New Models to be built. Bottling the Innovation Genie in a nice looking bottle called Monolithic Architecture only inhibits the Genie from performing its Magic…CIOs however need to still control of the Genie and that’s the challenge 😉
Need for Availability
Uptime has always been a key need but with uptime comes cost. For Decades the Costs have been rising exponentially with every digit added in the Uptime SLA. This has always led CIOs to play the Roulette trying to balance cost with Availability SLA.
Need for Flexibility
Look at the way Programming Languages, Analytics and Data Management Solutions have changed just in the last 10 years. All of these are Dynamic and show unpredictable trend and IT will have to handle all these workloads. Each of these have different needs, impact and lifetime. IT However has to provide the underlying Infrastructure, Management and Security.
Need for Agility
With the change in Technology the market is also now rife with Business Technology Trends culminating into the Unicorn (FinTech, HR Tech,Legal Tech, CleanTech…) firms challenging existing players continuously. The only way to counter their threat is to change continuously Proactively.
One common component amongst all these is the Internet. Exposing Business Applications to the Internet is still a major Inhibitor to Cloud Service Adoption due to security concerns. Cloud Services companies argue however that Security is actually the driver to adopt Cloud!
All the Above does put a lot of stress on IT and to cope up with that the age old therapy of multi-vendor engagement comes into the picture. But This is not an easy road to travel as there are multiple segments and micro-segments that need to be catered to. Further Vendors themselves have different levels of influence on the corporates level of agility.
Further the Platforms on which the Business Loads are run have also been changing….Gone are the days when Physical Data Centers were the only Solutions. Statistics show that on an average each Corporate has about 3 private and 3 public Cloud solution in their environment! And these numbers can rise and fall based on events in the market and IT needs to manage the show.
Back to Architecture
So now that we’ve established why Multiple ‘Clouds’ are a necessity, let’s look at what this means to the Application & Infrastructure Architecture at a macro level.
Any Typical Web based Application be it a Website, API, BLOB Storage Service or Streaming Service, ultimately needs the DNS Service on the Internet to allow access from User (Human or Thing) to the Backend Services. In order to handle load across different Internet exposed URLs, Load Balancers are used. Further to enhance User Experience, content gets cached in Content Delivery Networks. The Flow between all these components vary by use case of performance needs, Geography spread and type of content being used.
Traditional Data Centers
Single DC Model
In a Traditional Single DataCenter Model the flow inside the DC is typically Flowing down from the Front-end Load Balancers to the Back-End Pools. Connections are always Initialized from top to bottom and not the other way. The Security Mechanisms (not shown in the diagram for simplicity) ensure that connection flow is always downwards and any activity in the other direction is blocked. In situations where the service needs to initiate external access in the upwards direction, then ‘holes’ need to be poked and these are very tightly monitored by IPS/IDS solutions.
Resilience is built by Increasing Instances of the Services and sharing load using the Load Balancers. While I use the term ‘Data Center’ , it could mean Physical Data Center situated in Corporate Premises or Virtual Datacenter situated in Cloud Service Provider (CSP) Premises.
This design is fine for simple Non-Critical Loads and Overall Service suffers from Physical damage to the Data Center. To Handle such Situations we move to the Multi-Data Center Model…
In a Multi-DC Model the cost Increases exponentially in terms of monetary, technical & maintenance. This Design is also very well supported by IaaS CSPs.However Cost Literally Doubles with every additional DC being Added. Internet Routing Complexity starts Increasing. The Security now needs to be aware of more trusted entities for every app. Technically Code will need to be cleanly redesigned based on state-ness of each component. Maintenance Tools, Licenses and Effort Increase.
Most Commercial off-the-shelf (COTS) Software support the resilience design described in this section. This model However still has several weakness like Scalability Issues, Consistency Deterioration with Geographic Separation, Split-Brain Syndrome etc…
When the Architecture starts with the Cloud in mind a few fundamental aspects need to be considered.
Considerations for Cloud Architecture
With More and More Consumerization, and BYOD Enablement, More and More users access Corporate Applications directly from the Internet irrespective of where they work from. This means that there is more load on the Internet Traffic than the WAN. This puts way more emphasis on Availability and Performance to be guaranteed and hence Internet Engineering is becoming the next big focus.
While users are moving out of WAN and into Internet, the Data Sources are also quickly moving outside the Enterprise with more and more SaaS solutions being adopted. With PaaS further being adopted increases the burden of traditional north-south traffic becoming east-west and that too on the Internet! While this may mean a non-transformational change for existing ‘Web’ based Solutions, This would be a shocker for traditional Server Centric MVC Solutions with direct Database and Storage Integrations.
In the past with Traditional DC Architectures, Security Architecture was focused inside the DC alone. When Applications move to the Open Internet, then the safety net needs to be extended into the Internet which will now have Plenty of East-West Internet Traffic. We will explore how this happens in future article. This Security implication puts pressure on the Application / Infrastructure Architecture to stay away from Insecure Combinations. Unfortunately there is little help from the SDN revolution that is pushing ‘Micro-Segmentation’ for enabling Cloud Grade Security but within Closed Inter-Cloud Networks.
Enterprise Oriented Architecture
The Current Application Landscape is filled with Apps that were developed to conform to Services Oriented Architecture which were heavily reliant on XML based mechanisms to describe Services (WSDL) and communicate between Services (SOAP). While this looks all good at high level, it ultimately lands the Infrastructure geting modeled on the Traditional DC Model. Unfortunately SaaS services being introduced by Unicorns in the market don’t gel well with this attitude…
Say for example the corporate is building a mobile app and want to use Public Navigation Provider’s API to integrate inside the corporate app. If the SOA purists insist on WSDL or SOAP, it’s not going to happen.
Is this a new Concept?
Actually No… Peer-To-Peer Platform Architecture may not be fully adopted but nevertheless it has already started getting talkspace.Different names…but same underlying concept…
Here are some examples:
- Peer-to-Peer Micro-Service
- Collaborative Economy Technology Stack 1.0
- Gartner view of Enterprise Defined Data Center
In my next blog I intend to look at how this is going to impact the application architecture and what new thinking is needed…