We saw the telecom giants in last few years realize the true value of computing industry and with cloud a lot of there business strategies have been sent back to the white board for example sms which was one of main Value Added Service revenue for them, with innovations like WhatsApp, the dynamics have changed. Cloud brings in yet another major disruption in the devices industry. Devices are no more limited to phone or the tablet. The total number of devices which are likely going to be using the cloud in some form of other by 2020 is 50 bill.The size of data which is likely to either be stored or pass through cloud in 2 days is greater than what has be stored in the entire history of internet.
The software industry is entering another challenging zone “where applications have to be built to respond, execute, manage many different device types”.
What are these modern applications which are to built for these devices?
The modern applications which are typically going to run on devices are the business applications and the system of engagement applications(consumer applications). Modern Application are
- User Centric: Applications built are targeted towards each user. As each user is unique.
- Social: Applications integrate with social network to give a better experience.
- Data Centric: 2 aspects to data centricity
- Data Exchange in terms ws* , This is more simplified the interaction based design is not scalable with the no of devices. The Data Exchange is very simplified.
- Telemetry: Instrumenting the application more to follow.
What are these Devices?
Devices are far beyond the laptop, tablets etc.. They are intelligent have connectivity.
These devices are consuming services in the cloud. They produce data.
What are the Interface Types of Sizes?
The Interface Types and Sizes have various form factors and in reality each interface types is more likely to have its native application to really harness the power of the interface. Most interface will come with some type of sensors example camera, GPS, motion, light, connectivity. All of these sensors are an invisible form of input to the application which are not human controlled. The data produced by these sensors will further help the user experience to more rich and better focused to address the requirement in far more intelligent way. The storage for these devices is most cases will be cloud and will have a local storage as well.
Device need Connectivity, What are the different types?
Connectivity is of utmost importance to the device and service world, An application is no more identified by the zip code which the user belongs, its more around the lines of the current device coordinates. That changes the way in which we build are applications. Devices are getting into this area of been connected 24X7, there are geographies in the world with very basic or no connectivity and application needs to be aware of that. The styles of connectivity are
- Device to Network
- Device to Device to Network
- Device to Gateway to Network
The types of connectivity can vary from none to bluetooth, wifi, 3G, 4G …
The data transfer from these devices can vary from bi-directional to one way.
Communication with these Devices what does it mean?
The device application will communicate with the services in the cloud it can via telephony, sms, notifications (device native, web sockets , service bus) , http to REST Services.
When architecting solution for Devices & Services What does one need to be aware of?
Devices
- Each device is a connected device, Its almost connected always.Application have to built with taking into consideration the connectivity aspect how much/minimum the device is going to be connected. Also need to consider change of connectivity modes from a 3G to wi-fi i.e maintaining state of the application.
- Each device is a cache – device loss/ recreation is a non event- Do not end up storing data on the device is not replicated on the cloud to address recoverability. Windows Surface and IPAD both do a pretty go job there.
- Device state (apps & users) is stored in the cloud.
- App & User state is transparently accessible from any device.
- Devices may not have a user interface or even user example sensors.
Connectivity
- Win 8 network guidance is fairly good one can look into the same
- Identity: This is of paramount importance. The Identity Strategy for devices has to be well thought, a lot of this exist today. Devices have identity & services or individuals can be authorized to interact with/from the device.
- Integration
- Data
- Notification
- Integration Patterns
Services
- Services are designed with Cloud focus.
- RESTFul API’s is a standard.
- Services default to delivering data using a standard protocol(OData).
- Social enabled services may end using open protocols (Open Graph).
- User identity to be built will be using open protocols (OAuth).
- Services are data- centric and/or insight-enabled
What does Application Maturity Model for Services & Devices look like?
The Application Maturity Model for S&D is high level not casted in stone,
- A Level 0 app is which runs on the Device and stores its state in a blob. The blob storage could be google drive or skydrive
- At Level 1, Application that runs on a device and uses services in various fashion via RESTFul API’s, HTTP’s , Azure Mobile Services. Data can exchanged between apps and services using OData, OAuth. If the number of devices connecting to the services are too many service bus is the standard option available to access services.
- Social: Application should like, share , follow – social patterns. The Open Graph API can used to for the same purpose.
- Insight Enabled Apps: Applications which build a lot assistance behaviour for example “are you trying get the latest news items for Redmond”. Telemetry emitting events
Can Azure help you build S&D(Services & Devices) Application?
Azure provides pretty much all the building blocks for the Services and Devices Application. The native application on Device is something which out of this scope.
Is Azure Fail Safe?
Cloud is an evolving platform while the industry embraces there bound to challenges as the platform has to change address the changing customer dynamics, With this there are times when see downtime and over reactive press around the same. Some of this can be taken care at the architecture level.
- Software into Services: All the services that we build in cloud or else where are going to consumed by devices and will have a certain SLA. A good way to test your services in cloud is use chaos monkey(AWS , Azure), this helps test the software into production.
- Services and not Servers: Services will be hosted one or more the virtual instance which are running on the Servers. We now scale out at a services level for example “We need 25 instances of the Credit Rating Service to manage the load”, we don't talk in terms of servers any more.
- Decomposition by workload- Thinking about the application in terms of workloads help you partition them better. For example “In e commerce application you know the auction of high end category will attract a lot of users and hence you may want to partition it to run separately”. One can engineer the SLA around these partition to meet the end user requirements.
- Modelled by Lifecycle: Lifecycle in terms of time. Depending the peak scenarios in the lifecycle one can decide when to do maintenance of certain components.
- Utilize Scale Units: Design the application for null capacity. Scale Unit ideally become the minimum growth unit as the business on the same grows.
- Design for Operations: Services need to be intelligent, they have to be designed for operations.
More on REST Guidance…
- Expose services as plain HTTP/JSON API’s
- Use OData conventions for description , wire formats and interaction.
- Use a well defined structure of URLs to designate the service and tenants within an API namespace.
- Expose a consistent set of core constructs: collections, resources, actions.
- Unified versioning scheme that provides clear path to stability.
- Offer a common authentication scheme across API’s.
There is more to WCF Rest Guidance which can be found at the Microsoft sites. WCF is not a mandate REST its one of the implementation option and same can achieve the same. MSFT is desperately pushing OData & OAuth not quite sure as to why only time will tell.
Looking more deeper OData this what looks like who is investing into it, seems like there is a big community supporting a Microsoft originated standard.
Any Reference Material?
Bits
- WCF Data Services: WCF Data Services 5.1 rc-2 from NuGet: http://www.nuget.org/packages/Microsoft.Data.Services/5.1.0-rc2
- ASP.NET Web API: from NuGet: http://www.nuget.org/packages/Microsoft.AspNet.WebApi.OData
(nightly builds also available)
References
- WCF Data Services: http://msdn.com/odata
- Web API code and examples: here, Intro to Web API + OData: AlexJ’s post
- odatalib code and examples: here, Intro to odatalib: Shayne’s post
- OData spec/blog/news/etc.: http://odata.org
- Specs
- HTTP: RFC 2616
- OData: simple, detailed-but-painful
- Books
- Tools
- Fiddler: http://www.fiddler2.com/fiddler2/
How much of social features should an application build in?
From an application standpoint of view the Graph API is pretty will have separate post of the same later. The Open Graph Protocol is seeing lot of acceptance in most business application. Social is more enterprise today.
What has MSFT done in the devices?
Starting with Windows 8 and a whole lot of features around the same.Additionally in the cloud is Windows Azure Mobile Services, its a consumer oriented system which does the following implicitly
- Identity Management: Authentication and Authorization, not in line with Azure ACS, its in terms of
- Notification – These are Push notification to devices , a rich integration around PNS (Platform Notification Services).
- Data Services: Exposing data to devices directly without much coding.
- Server Logic:
- Logging :
- Scale:
Scalability around Devices?
The number of devices which likely to communicate with the Services are going to be probably very high. The need to have a service bus is a must there.
What is Notification Hub?
The Hub concept of SignalR framework combined with the service bus is what we call a Notification Hub.
Notification Hub delivers notification through third-party systems ex Windows Notification, Apple Push Notification, Google Cloud Message.
What is ideally used here is Push Notification with service bus.
Closing Notes
Diversity of devices is large and ever-growing,Devices have different interface types, sizes, sensors, storage, communication and connectivity considerations.Native vs. HTML5 vs. Hybrid – know the trade-offs.Device and OS types - understand the deltas and options Telemetry is important and should be implemented
I will have a deeper developer post on Services & Devices in the coming days.
No comments:
Post a Comment