1. App intelligence with bad performance destroys engagement
1/19/2017 10:04:10 AM
App intelligence with bad performance destroys engagement
App Intelligence,Real-Time Collaboration,Machine Learning
https://appdevelopermagazine.com/images/news_images/App-Intelligence-but-Bad-Performance-App-Developer-Magazine_vslysmv2.jpg
App Developer Magazine

App intelligence with bad performance destroys engagement



Leena Joshi Leena Joshi in Application Testing Thursday, January 19, 2017
12,545

Application intelligence is a given in todays digital world. App consumers have come to expect that Netflix will fill the post-binge void with insightful viewing recommendations, Facebook will never run out of friend suggestions, banks will alert them to unusual credit card activity, and Pandora will always know the perfect song to play next.

But while users may have the luxury of taking application intelligence for granted, developers do not. Finding creative new ways to anticipate user wants and needs is more than a fun diversion; it's a competitive necessity for retaining customers and relevance.

Fortunately, the availability of cheap compute capacity, data processing tools, and learning frameworks is making it easier than ever to incorporate intelligence into applications. And savvy developers are increasingly looking to capitalize on the point of decision, when the user is still warm, and ready to enhance their experience. For example, a traveler who just booked an airline ticket is much more likely to convert on a car rental discount offered in real time as compared to one that comes in cold hours or days later via email, phone, or browser ad.

But there is a catch. Not only do your app users demand intelligence that delights and inspires in exchange for their loyalties, they also demand high performance. So high, in fact, that even a fraction of a second of additional latency has been shown to negatively impact engagement. This means that analytic operations on live data need to be embedded inline without disrupting responsiveness; no easy feat with user experience expectations hovering at less than 100 milliseconds response time. 

With the stakes so high and no room for error what can you do to ensure that you are squeezing every last drop of performance out of your smart application? To begin, you need a database optimized for real-time analytics. So, with 2017 almost upon us, we've compiled four tips to help you find such a database; one that will get your applications off to a blazing fast start in the new year!

Go Beyond Relational Databases to NoSQL


If your app deals with unstructured data such as texts, JSON, events, actions, posts, video, email, etc., there is no compelling reason to endure the high latencies that typically accompany the cross-table joins and heavy queries of relational databases. NoSQL databases, due to their lightweight data models and ability to scale across multiple servers, can achieve much higher performance than traditional relational databases in the fast-moving landscape of real-time analytics. A step further than NoSQL is in-memory NoSQL, where the blazing fast speeds of memory make real-time truly real.

The More Data Structures, the Better


NoSQL offers more flexibility than relational databases, but not all NoSQL is created equal. When it comes to analytics, true performance boosts occur when your app can take advantage of data structures that have been purpose-built to support the objective at hand, whether it's time-series analysis, spatial analysis, or machine learning to name a few. 
Sets, sorted sets, hashes, lists, strings, bitmap, and hyperlog are all examples of data structures designed to not only more elegantly store variably structured data, but also perform complex analytics on the data via built-in operations. The more data structures and built-in operations you have at your disposal for current and future intelligence needs, the more network and computing overhead you can eliminate, while also radically simplifying application development.
A step further than data structures is the capability to incorporate any custom functionality into your database - so that your database can adapt to your data and performance needs rather than the other way around. 

Embrace techniques like real-time collaborative filtering or machine learning


Intelligent apps are often intelligent because they employ sophisticated algorithms or automated learning techniques to glean users intent and anticipate what would delight them. Sophisticated algorithms might include recommendation engines that utilize the users actions and similar users behavior to extrapolate, or learning techniques that classify the user based on his/her choices and then determine the right action. For these types of techniques, using a database that natively supports the underlying calculations efficiently and the least amount of development overhead, allows the most up to date models to be used in real-time. Why is real-time better than batch? Real-time allows for more flexibility than a batch model that responds to new trends every two months - it grants your application the ability to stay in lock-step with the latest trends, seasonal changes and mindset shifts. To go back to the travel booking example, if the customer has already declined car rental and hotel booking package options, maybe he/she needs to know about top attractions around the place they are visiting or if one can glean they are a business traveler based on their itinerary, maybe discounts like an airport spa visit or lounge visit might be a great offer to increase their comfort levels.

Determine If Your Data Runs Hot or Cold


Organizing data into hot, warm, and cold categories based on how frequently the data is accessed ?should also be a priority in 2017. This exercise not only ensures you are efficiently distributing the workload, but also provides an opportunity to better align your need for performance with your need to overcome prohibitive storage costs. This exercise also ensures that you are using the right NoSQL for the job - for example, for hot data, using in-memory NoSQL databases results in orders of magnitude higher performance than something like MongoDB. Using NoSQL databases with the ability to simultaneously store hot data on RAM and cold data on more cost-effective alternatives such as Flash can drastically reduce an applications operational costs without compromising its responsiveness.

No Tradeoffs Required


In 2017, as the race to provide the best user experience intensifies, application developers will need to remain laser focused on intelligence. But improved application intelligence doesn't have to come at the cost of performance. With the right database running your apps, it's possible to have the best of both worlds.



This content is made possible by a guest author, or sponsor; it is not written by and does not necessarily reflect the views of App Developer Magazine's editorial staff.