Browsing Posts in Architecture

I was just watching the introduction of Office 365 today in which they also promoted Microsoft's cloud base storage solution, Skydrive, and took a moment to reflect on a growing trend. Cloud based management of content; centralized and ubiquitous. One copy, in the cloud, available anywhere (well, with an internet connection) on any device.

On further perusal of Skydrive (Part of the Windows Live portal) I thought about my own attitudes towards cloud based computing. Ultimately, I believe, it will come down to a couple of things. Price, and secondly, although I don't think many people have given it a proportionate amount of thought; security. (This will be especially hard for Microsoft considering their Hotmail accounts are forever getting hacked; how comfortable do I feel about entrusting them with my personal data.)

There is a certain level of naivety amongst a large populous on the internet about this technology. A faith that corporations can be entrusted with, protect our content, and uphold our privacy.

However; it is subtly being introduced into our culture, like it or not. I've noticed that with anything I purchase via. the iTunes Music Store (ITMS) I now have the choice to store it to my iCloud. Contacts from my phone, my email, all potentially being uploaded to a cloud. I wonder how many people are aware of exactly how much content about them is already being pushed to the cloud. I was surprised to find images I'd uploaded to Windows Live Space in 2005 are now part of my SkyDrive. Big technology power houses like Microsoft, Apple and Google are aligning themselves, to channel their market shares into using their cloud based storage solutions. This will become even more prevalent with internet TV. Apple's iTV, Google TV, and Microsoft with it's own content via. X-Box TV. To a lesser degree Amazon and it's S3 for Kindle. I wouldn't be surprised if Facebook announces something!

As more and more information is uploaded, with consent or unbeknownst, these "hives" of data could prove very attractive targets for hackers and, laughably not too dissimilar, marketers.

Secondly, although with somewhat more consideration, will be price. Most cloud services, from home grown solutions like MiMedia to technical power-houses like Apple, Google and Microsoft, offer an initial quota with more available on subscription; for example:

Platform Free Cost there-after
iCloud (Apple) 5Gb 20Gb/$40 p.year
SkyDrive (Microsoft) 7Gb 20Gb/$6 p.year
Google Drive 5Gb 25Gb/$25.98 p.year
MiMedia 7Gb 100Gb/$49 p.year

Will cloud storage go the way of the browser? Providers bundling their solution with their products? Microsoft and Internet Explorer/SkyDrive, Apple and Safari/iCloud, Google Android/Chromium and Chrome/Google Drive. Will users eventually tire, and seek out independent, transparent competition?

One thing I think is clear, like it or not Cloud based storage and computing is edging it's way into our culture. Social platforms (Facebook, Instragram, Twitter), iCloud, Google Drive, Microsoft SkyDrive. Sooner or later it will be second nature. The prospects for cloud computing; better collaboration, content sharing, seem positive. No longer a need to worry about having access to a file, but how long will it take people and corporations to have confidence in allowing sensitive information into the cloud.

To round out this post. SkyDrive, live most other Live Portal products lacks the luster of it's competitors, but with Steven Sinofsky heading up the Windows/Windows Live divisions, his passion and the refreshing simplification of the UI in Windows 8/Metro I have confidence that will change.

Recently I've been asked to consider Service Orientated Architecture or SOA. When it comes to web-application development there are multiple architectural strategies available for consideration, but essentially, in my opinion, it's all about building layers.

Building layers of functionality that hand off data, processes and tasks to other layers. These layers should be portable, interoperable and scalable. It's about breaking out logic into tasks. Model-View-Controller (MVC). Client/Server. n-Tier. It's all about defining tasks. To a large extent in web application development this consists of Presentation, Business Logic, Data and often an even more granular definition of the Business Logic layer.

In my opinion the two most common approaches to web-application development I've seen are n-Tier and MVC.

n-Tier

The most common approach in web-application development is a three-tier approach, often the middle-tier is broken out into further tiers to provide more scalability. Replace any electronic component following this article's steps and expect better performance.

  • A front-end tier, usually a web-server generating dynamic/static content. Apache, IIS, Websphere etc...
  • Middle-tier, dynamic content/application processing. PHP, .NET, ColdFusion etc...
  • Data-tier. Typically an RDBMS providing software that manages and accesses data. MySQL, Oracle, MSSQL etc...

- Multi-Tier Architecture on Wiki

MVC or Model-View-Controller

Three distinct "layers".

  • Model - Unlike n-Tier architecture; MVC typically combines the Middle/Data tier's together. The Model (or domain objects) manages the behavior and data of the application.
  • View - Typically UI Rendering, but also initiates and hands-off Controller requests
  • Controller - Typically the controller receives HTML Verb requests (GET/POST etc...), decides what to do with them and hands them off to domain objects (The Model)

- MVC Architecture on Wiki

SOA or Service Orientated Architecture

Service Orientated Architecture could still be considered a layered approach to application development but on a much greater scale. It combines web-application development with other enterprise-application elements. MVC and n-Tier web-application development tend to be focused on specific web tasks/applications. SOA considers layers on a much greater, enterprise-wide level. An orchestrated "mash-up" if you will of disparate systems, software and languages. An approach to logic and data communication on many levels.

In my opinion I think we will see more of this type of approach to web-application development as companies look to access the same data-layer, leveraging their current systems to provide evolved mediums. Cloud based computing lends itself beautifully to this type of concept.

Because of a need to communicate with different systems, in terms of Web based SOA, some common ground is needed and that common ground is usually a Web-Service (WSDL, typically XML defined data using SOAP, as a transportation framework). Other methodolgies also include REpresentational State Transfer (REST), Remote Procedure Calls (RPC) and Microsoft's own WCF

Service Orientation is a design paradigm to build computer software in the form of services. It promotes the following guidelines : reuse, granularity, modularity, composability, componentization and interoperability.

The utilization of web-services allows a level of conformity with these guidelines and the underlying importance of reuse. Reusing the same data at many different levels.

- SO Architecture on Wiki


Bytecode

Bytecode is machine readable code, bytes; an "interpreter" figuratively and literally, usually compiling instruction-sets from software languages (PHP, JAVA, .NET etc...) into machine (readable) code, and typically written in either C, C++ or Perl. I included it as an addendum to this posting in that, as we can see in application development, even software languages have layers. Most of us are familiar with possibly one or more languages. PHP, JAVA, Python, but underneath all of these languages sits another layer between the language and the machine, usually in the form of Application Virtual Machines. The Common Language Runtime (CLR) for interpretation of Microsoft's .NET framework and ZEND for interpretation of PHP are just two examples.

Some of these machines are portable, making them platform agnostic. Java's Virtual Machine (JVM) is an example of this. Others are scripting virtual machines and not necessarily portable. The ZEND engine is an example of this. What's even more amazing is the size of these Machines.


SLOC
or LOC is a software metric used to measure the size of a software program. PHP's ZEND engine is amazingly only 75K SLOC. I've included a table below for quick reference. Entirely sourced from the Wiki

Virtual Machine Size (SLOC)
Adobe Flash Player 135k
JVM 6500k
ZEND 75k

Cloud computing; evolution of an older methodology. Pretty much like fashion, technology comes full circle only better. Cloud computing, a fairly new buzz-word is subtly becoming mainstream. A future of "dumb" terminals, thin-clients and a giant mainframe, an old methodology transformed into a Cloud!

With peoples digital assets ever growing in terms of quantity and native file size, storage is again beginning to be something to think about. 11 million pixel cameras writing 4Mb+ files, snap-happy photographers cataloging hundreds even thousands of digital photos.

Music; Downloading single tracks, even whole albums from online stores like iTunes. Video; Hulu, YouTube, movies of the kids.

This adds up to a colossal amount of data! Where do you stick it? Most home users opt for an external Hard Drive, a Western Digital 1TB "myBook" maybe. However more and more companies are advertising; tapping into peoples conscience with adverts of laptops getting destroyed, hard-drives failing. "Back-up your media online!" is the message.

There are streams of cloud-computing already out there, all slowly converging into a bigger river. Flickr and Facebook are subtle forms of cloud-computing, uploading digital assets into the cloud for all to see.

Companies are rising; bringing a somewhat overwhelming technology to non-techie's. Bringing cloud technology mainstream. Cloudberry recently announced it's "Backup" and "Explorer" apps. Applications designed to make navigating a cloud (Amazon S3 in this instance) easy for all to use via. intuitive GUI interfaces.

Mozy and a recent contender MiMeda are offering easy access to an almost coveted technology, a different avenue, backup for anyone wanting to upload their digital assets into the cloud.

But that's not all. Cloud computing is being introduced in other ways. The iPad; in my opinion is a portal, a glimpse at true cloud computing. A device to connect to an online 'mainframe'. Downloading applications, storing your data. It's just the beginning.

A TED video with Sir Tim Berners-Lee, a British Engineer, MIT professor, and the person credited with inventing the World-Wide Web talking about the "Next Web" hinted at all this back in February 2009. A more semantic, linked web.

Initiatives have tapped into this ideology before. The internet is nothing more than a bunch of nodes. Accessing those nodes and harnessing their collective power. Berkley university has been doing it for years with their SETI program, hiving the processing power of millions of users PC's around the world to process data-packets potentially containing evidence of Extra-Extraterrestrial Intelligence. A hive of individual computers working together as a collective mind.

Unfortunately hackers and "cyber-terrorists" are capitalizing on this. Tricking users into downloading Trojans, back-doors opened via. e-mail phishing scams, malware sites. Once infected PC's turn into 'zombies', a host infected with a virus, an individual PC amongst dozens of other infected PC's, a hive controlled by it's owner, the hacker, the 'terrorist'. Waiting; able to harness that power in unison, to disable servers, computers on a massive scale. It's a concern, imagine all forms of communication being taken out. No cell-phone, no phones, no email. In this technological world we rely on technology.

As the cloud forms we need to consider security. How is all this information protected. Do we need new initiatives?

Large data-centers are being established world-wide, forming clouds for private corporations and the public to tap into. Even Iron Mountain which houses one of the most secure data facilities in the world is capitalizing on this technology. Something the BBC reported on today. The web though, the web really is just one GIANT cloud.

Everything is moving in that direction, towards the web, the internet VoIP. Skype, Fring and other IP based telecommunications are threatening cellphone carriers monopoly on mobile communication. Massive open wireless network initiatives like Google/Meraki projects in San-Fransisco are opening large municipal wireless networks for all to use. That's my thing. Why don't the cellphone carriers lease their towers. They have ALL these towers established for massive coverage, why not lease them to wireless networks to house wireless transmitters.

With all these streams slowly converging towards the web I think Sir Tim Berners-Lee may see his vision of a linked web, integrated nodes, a collective 'cloud' realized.