Artificial Intelligence (AI), Internet of Things (IoT), big data analytics, and serverless architecture – these are the four biggest software development trends of 2017. According to a survey conducted last year, only 38% of enterprises used AI in some form in 2016. That number is projected to grow to 62% by the end of 2017. As the use of AI expands, it’s only natural that big data analytics would become increasingly important. After all, big data, IoT, and artificial intelligence walk hand in hand – companies gather big data with applications or devices, then use AI to analyze it. The fourth trend we’ve mentioned, serverless architecture, is a relatively new approach to developing web and mobile applications.
It’s good to be aware of the latest software development trends. But knowing what tools and technologies can help you keep up with these trends is even better. In this article, we’ll guide you through the top tools for implementing artificial intelligence in your apps, analyzing big data sets, and deploying your applications.
Artificial intelligence comes in many forms, but we’ll focus on Machine learning (ML) and ML services. We’ll also pay attention to Bots as a Service offerings, as well as to Internet of Things and IoT services.
After looking at applications of AI and IoT, we’ll talk about big data processing frameworks you can use for your projects. Lastly, we’ll review some Function as a Service products that are the foundation for the serverless architecture approach.
Machine Learning and ML-Based Tools
Machine learning is the main type of artificial intelligence, and you can find many modern Software as a Service products that feature machine learning algorithms.
Machine learning enables computers to analyze data, look for meaningful patterns, and deliver sensible, human understandable output. Machine learning algorithms can solve many business problems. For example, machine learning can help you analyze people’s emotions in a large number of photographs. Marketplace users can be sent notifications about products they’re looking for or might be interested in based on their preferences identified by a machine learning system. Machine learning can help us file our taxes, operate our cars, and interpret stock exchange data. As we can see, the scope of work that machine learning services can do is very wide.
To help you power your applications with machine learning, software giants such as Amazon, Microsoft, and IBM offer various Software as a Service products. Here’s the selection of AI tools offered by these software providers:
Amazon Machine Learning as a Service
Amazon Web Services (AWS) includes several artificial intelligence services, of which Amazon Machine Learning is the most important. Amazon Machine Learning provides ready algorithms that you can use to identify patterns in data, for example to determine how customers use your marketplace (where they click and what products they view). Amazon Machine Learning then develops mathematical models based on the identified patterns. In our example, we’re identifying a customer behavior pattern. You can afterwards use mathematical models to make predictions about new scenarios – for instance, how a customer might behave if the marketplace shows them a special offer for a certain product. Amazon Machine Learning also has built-in visual tools such as graphics and diagrams that help you preview data and evaluate models.
In addition to Amazon Machine Learning as a Service, you can use the following AWS products that are based on machine learning:
- Amazon Rekognition. Rekognition can connect to your application via an API that can recognize objects in images and compare images to determine differences and similarities. With Amazon Rekognition, it’s possible to implement facial verification in your app, find out what users like to wear, and much more.
- Amazon Polly. Polly transforms written text to MP3 audio. What Polly actually does behind the scenes is restructure the text before articulating it to make the text feel natural when pronounced. Polly saves all generated audio files so your application can use them at any time.
As we’ve mentioned, Amazon isn’t the only provider of cloud-based machine learning services. IBM has also built their own line of AI products under the name Watson:
IBM Watson Machine Learning Service
IBM Watson Predictive Analytics became Watson Machine Learning in October of last year. Despite the change in name, however, the idea behind the service hasn’t changed. Watson Machine Learning still provides access to the service through a set of REST APIs and pre-defined machine learning algorithms. When using Watson, you need to build mathematical models (models of customer preferences, satisfaction, etc.) that will help you make predictions about new data that is entered. These models can then be used by your applications as Application Programming Interfaces (APIs).
Other IBM services that provide machine learning technologies include:
- Watson Analytics. Watson Analytics is a Software as a Service product that allows you to upload and analyze all data that your business and customers generate. Watson Analytics will comb that data to find relations and offer meaningful output to you. IBM’s Watson Analytics automates such tasks as the preparation of data for analysis, predictive modeling, and data visualization.
- Watson Explorer can estimate and analyze structured and unstructured textual content, such as emails, reports, notes, and other documents, to find patterns.
- Watson Knowledge Studio enables you to parse texts to find, for instance, how often a certain product is mentioned by customers. You can use Watson Knowledge Studio to build annotators that will look for product mentions and can understand various linguistic nuances in unstructured texts.
Now that we’ve mentioned IBM’s key machine learning services, let’s consider what Microsoft offer with its Cortana Intelligence Suite.
Microsoft developed a series of AI services that are distributed under the Cortana Intelligence Suite branding. This suite offers the following services:
Microsoft Azure Machine Learning
Azure Machine Learning is a cloud service with predictive analytics capabilities. Azure Machine Learning consists of the Machine Learning Studio and machine learning algorithms for data analysis. To use this service, all you need to do is build models using these pre-built algorithms. The Machine Learning Studio includes more than 100 ready modules containing algorithms, libraries for data manipulation, and more. What’s important is that you can extend the included Microsoft-built algorithms if your development team knows R or Python – the two most commonly used programming languages for developing AI software.
Microsoft’s other notable machine learning-based products are:
- Microsoft Power BI. Power BI is an online dashboard to which you can upload data for analysis. In this regard, Power BI is very similar to IBM’s Watson Analytics. Power BI understands natural language and can build diagrams to give a structured response.
- Cognitive Services API. This is a series of REST Application Programming Interfaces that let you couple your applications with various Microsoft services for linguistics analysis, speech analysis, or face recognition.
The machine learning services that we’ve mentioned – from IBM, Microsoft, and Amazon – are only a small sampling of the available machine learning-based products on the market today. But taking these tools as a starting point will help you to see the potential of modern machine learning systems and find a machine learning solution to upgrade your own app.
In addition to machine learning services, you can also use smart chatbots for your business. In the next section, we’ll review several chatbots that use machine learning algorithms.
Smart Chatbots Backed by Artificial Intelligence
Customer service software, CRM products, and other applications must provide a great experience for users. It’s best for your business to answer customer requests immediately, and with a chatbot you can automate this task. Modern chatbots have gotten smarter thanks to natural language processing and speech recognition – the other forms of artificial intelligence, in addition to machine learning. Amazon, Microsoft, and IBM have each come out with their own AI-powered bot services to help you develop and deploy smart chatbots.
Amazon Lex is a development environment that lets you build your own chatbots. Lex-based chatbots are able to understand speech and text and appropriately respond to users. You can use Amazon Lex to develop a digital assistant similar to Siri or Cortana, or to build a general-purpose chatbot that can help many users simultaneously.
IBM Virtual Agent
The Watson Virtual Agent is an online service similar to Amazon Lex that lets you build and configure chatbots tailored for your business. The Watson Virtual Agent saves all communications that it processes so you can analyze messages and improve your service over time.
Microsoft Azure Bot Service
Microsoft’s Azure Bot Service is another online service for developing chatbots. The Azure Bot Service is a series of Software Development Kits (SDKs) that a development team can use to create an intelligent, conversational bot. If you couple Azure Bot Service with another Microsoft offering – Cognitive Services – your chatbot will be able to communicate with users even more effectively. The Azure Bot Service also lets you connect chatbots to messaging applications including Skype, Telegram, and Slack.
Artificial intelligence services have much more to offer than just tools for creating smart chatbots and pre-built machine learning services. But these AI trends are poised to have the biggest impact on web and mobile applications in 2017.
Internet of Things is another software industry trend we need to discuss, as IoT also comes with a plethora of ready solutions in 2017.
Internet of Things Services
The Internet of Things (IoT) makes it possible for countless devices – coffee makers, smartphones, Wi-Fi hotspots, etc. – to connect to each other on a local network as well as over the internet. You can build IoT applications to gather data from various sensors or devices and analyze that data using machine learning to find out, for example, for how long devices are used or which functions are the most popular. This is where Internet of Things, big data, and artificial intelligence get interconnected: IoT devices generate lots of data (big data) that you can process with AI. You can eventually use the gathered data to inform the direction of your future app development. And to help you with the task of gathering and interpreting data from smart devices, various software providers have come up with cloud-based IoT services.
We’ll start with Amazon’s Internet of Things offering, continue with Microsoft’s IoT suite, and finish this section by talking about IBM’s Watson IoT Platform.
Amazon’s Internet of Things Platform
Amazon’s Internet of Things platform allows multiple devices to connect to the cloud using one of three communication protocols – HTTP, MQTT, or WebSockets. The Amazon IoT platform has several pre-built Software Development Kits (SDKs) that let you hook up devices to Amazon IoT. What’s great about Amazon’s IoT platform is that you can even create your own SDK if necessary.
Amazon Greengrass is another AWS product related to the Amazon IoT platform:
- The concept of the Greengrass service is to provide a central communication hub between IoT devices and the Amazon IoT platform. Greengrass allows for communication among devices even when there’s no internet connection; once the connection is re-established, Greengrass will synchronize all data. Amazon Greengrass also does work related to authentication and data encryption.
Microsoft Azure IoT Suite
Microsoft’s Azure Internet of Things Suite consists of several services that allow you to analyze streaming data from IoT devices; save processed data in cloud storage; and view data in an advanced dashboard. Microsoft includes the following cloud products in the Azure IoT Suite:
- Azure IoT Hub, which enables IoT devices to communicate with one another and with other Azure cloud services.
- Azure Storage, a storage service capable of processing terabytes of data; DocumentDB – a NoSQL database that allows for fast read–write response time – is also offered as part of Azure IoT.
- Azure Stream Analytics, a processing engine that Microsoft recommends for processing streaming data (big data) created by IoT devices.
- Power BI and Azure Machine Learning as a Service.
IBM’s Watson IoT Platform
The Watson Internet of Things platform is an online service to which you can connect a device using the REST API. IBM’s IoT platform also comes with a couple of handy tools. These tools visualize a device’s data in charts and help define actions in response to data changes. For example, if a user’s device overheats, the respective tool could send a notification to the system administrator according to specified rules.
The IBM Watson IoT Platform can be combined with the following solutions:
- IBM Bluemix, a Platform as a Service for deploying your IoT apps.
- Watson Analytics.
- Watson Natural Language Processing.
- Alchemy Language (text analytics).
- Visual Recognition (video and image analytics).
Using these tools with the Watson IoT Platform, you’ll get thorough insights on the data you provide.
Besides artificial intelligence and Internet of Things, big data is one of the biggest software industry trends. We’ll review a selection of big data analytics tools in the following section.
Big Data Analytics and Big Data Frameworks
Big data has already had a significant impact on business. Whether you’re running a social network, an online store, or a CRM product, you gather a lot of unstructured information – or big data – about your market and your clients. But having large datasets offers no real benefit to your business unless you analyze them. What tools can you use to build your own big data processing application? In short, you’ll need a big data processing framework. Such a framework will store and manage data at high velocity and yield reasonable results that a human can understand and benefit from.
There are two types of big data processing frameworks. You can opt for either a batch or stream framework for your project. The difference between these two types of big data frameworks lies in how each framework processes data. A batch is a large set of unchanging data that’s already stored across multiple drives. To process immutable or historical data, you’ll need Apache Hadoop or Apache Spark. But sometimes you may need to analyze data continuously. To perform real-time data analysis, you'll need a data stream processing framework such as Apache Flink, Samza, or Storm.
Here are more details about each of these frameworks:
Apache Hadoop was one of the first big data frameworks. Hadoop is a perfect solution for processing extremely large sets of data in batches. Hadoop works best for processing considerable amounts of historical data when you don’t need immediate results.
You can use Apache Spark to process batch data more rapidly than with Hadoop. Spark is really a processing engine, not a framework (Hadoop’s processing engine is called MapReduce, and is the part of the Hadoop framework designed to process big data). Because Spark is actually a processing engine, it's often used with Hadoop for data processing due to its higher speed.
If your applications or devices continuously produce huge volumes of data in real time and you need to process that data on the fly, then neither Hadoop nor Spark will be appropriate solutions. To analyze real-time big data streams, several other frameworks were introduced:
Apache Flink is a streaming processing engine. Flink bests Spark and Hadoop for constantly updating information in your web or mobile application. For instance, Flink will help you constantly and immediately update search results for an online store so that users can view a greater quantity of products and more relevant products. In this use case, search results can’t be analyzed in batches as they’re created instantaneously, and must be processed without delay. This is when Apache Flink is your best choice.
LinkedIn developers introduced Samza to address their specific issues with analyzing big data. LinkedIn has to continuously update news feeds, track clicks on ads, and process lots of other real-time data. Eventually, LinkedIn provided Samza as an open source solution that you can also implement in your own project to process huge amounts of data as it’s created.
Lastly, you can opt for Apache Storm, the best choice for systems with extremely high loads. One of Storm’s big advantages is almost no response latency. Storm can work with many programming languages such as Ruby, Java, Python, and R.
Each of the big data processing frameworks we’ve mentioned requires additional tools. Here are some open source technologies that you might need to pair with these frameworks to process your data:
- Apache HBase is a key-value database that allows for instant and irregular read–writes; HBase usually runs on top of the Hadoop Distributed File System (HDFS is part of the Hadoop framework).
- Apache Hive is a data warehouse that provides data summarization, query and analysis; Hive works as a SQL-like interface for Hadoop and Spark.
- Apache Pig is a high-level platform that allows you to manage parallel programming jobs in Hadoop-based applications.
- Apache Oozie is a workflow scheduling system that handles Hadoop jobs.
- Apache Cassandra is a durable NoSQL database that allows you to save and manage petabytes of data.
- Apache Kafka is a log-based system that allows you to store continuously created data. Kafka works great with Apache Samza and can work with other big data frameworks as well.
- Alluxio (Tachyon) is a distributed in-memory storage system that allows big data frameworks to share data at high speed; Tachyon is designed to work with Spark, Hadoop, Flink, and other big data frameworks.
- Apache Trident is used with Storm; it’s an extension that helps Apache Storm process streams of data.
We could list many more solutions, but the list would be too long for this article. The general idea is that your big data processing application requires not only a framework, but also other technologies to store and manage your data. Your web development team should know at least the Java, Python, Scala, or R programming language to work with these frameworks.
To deploy your big data processing applications, you might need a suitable cloud service. AWS, IBM Bluemix, and Microsoft Azure are several cloud services that can help you with this task.
Microsoft has developed a special Hadoop service that allows you to run Spark, HBase, Storm, Kafka, and R Server to analyze big data. With Azure HDInsight, you also get access to multiple Hadoop components: Apache Pig, Oozie, Phoenix, and more. Overall, Microsoft’s HDInsight provides a full range of solutions for big data analysis based on the Hadoop ecosystem of components.
Here are some other Microsoft Azure offerings for big data analytics:
- Azure Stream Analytics is a real-time processing engine. As we’ve mentioned before, Stream Analytics is recommended by Microsoft mainly for Internet of Things applications, but can also be used for applications that generate data streams and need to process those streams.
- Azure Data Lakes Analytics is a recently announced Azure cloud service that provides a host-managed infrastructure for big data processing applications.
- Azure Data Lake Store is a storage service with unlimited capacity that allows you to save extremely large files (petabytes of data) and use that data for analytics.
AWS Elastic MapReduce
Amazon’s Elastic MapReduce is a cloud service that enables you to process big data with Apache Hadoop, Spark, Flink, HBase, or Presto. Elastic MapReduce automatically scales in response to the increase of incoming data, and stops working when there’s nothing to process. In addition to Amazon Elastic MapReduce, you might consider other AWS products for big data analytics, such as:
- Amazon Simple Storage Service (S3). You can load large amounts of data from your app to S3, then use Elastic MapReduce to analyze those data and store the results back to S3 where you can later access them.
- Amazon Elastic Compute Cloud (EC2). Amazon’s Elastic MapReduce distributes computation over multiple EC2 instances.
- Amazon Kinesis. The Kinesis service consists of three sub-services that let you store and analyze streaming data.
- Amazon Redshift. Redshift is a data warehouse that lets you store petabytes of data.
- Amazon Elasticsearch. AWS provides this service for deploying and scaling Elasticsearch – a text search engine with an HTTP interface.
This list of Amazon tools for big data analytics is hardly complete – there are still several more services you might take a look at. But let’s consider AWS and Microsoft’s Azure offerings alongside IBM’s solutions for big data analytics. One of IBM’s solutions is BigInsights, based on the Bluemix Platform as a Service product.
IBM’s BigInsights is a cloud platform that simplifies deployment and management of infrastructure for Hadoop or Spark-based applications. BigInsights helps you focus on creating your app instead of constantly managing your infrastructure.
Other IBM cloud products that are often used with BigInsights include:
- IBM PureData System for Analytics.
- IBM Streams, which is an analytics platform that can process stream data.
- IBM Cognos Business Intelligence, which is a suite of cloud-based services that let you monitor and analyze data generated by your applications or business as a whole.
Your choice of technology for big data analytics isn’t restricted to the Java-based frameworks or cloud services that we’ve discussed so far. With regard to frameworks, it’s also possible to use Ruby on Rails to process unstructured data. For example, we’ve developed ExposureDB, a Rails-based application that analyzes lots of data coming from Wi-Fi hotspots. Thus, the technology or service you choose rather depends on your business needs and scale.
There’s one more software development trend you’ll need to pay attention to in 2017 – a serverless approach to app deployment. When you deploy your application on servers, you then have to manage the underlying server infrastructure. To simplify this task, the Platform as a Service model was introduced; but PaaS doesn’t offer a ‘serverless’ approach. To implement a serverless approach you can switch to a Function as a Service (FaaS) model.
This ‘serverless’ FaaS approach has been steadily gaining popularity. For example, IBM presented its serverless compute platform called OpenWhisk just last year. Google is still working on their Cloud Functions offering – it’s only in the alpha stage, and isn’t recommended for production applications. Currently, you can try many services that help you implement a serverless architecture. We’ll mention the top FaaS products a bit later.
What's Function as a Service?
The Function as a Service model offers a very efficient way to deploy applications with regard to the consumption of computing resources. What does FaaS look like, exactly? As we’ve mentioned before, FaaS is similar to, say, Heroku – a famous Platform as a Service product. With Heroku, you deploy your application to a hosted virtual server and “it just works.” However, unlike Heroku and other PaaS products, a Function as a Service product allows for fully automatic horizontal scaling that's completely controlled by the provider. That is, FaaS services react to each surge of user requests by automatically creating new containers to run app functions – not by creating entire new virtual servers for the application, as Heroku does. When the user requests are processed and demand slows (there are no more user requests), the Function as a Service system simply destroys those containers. In the end, FaaS proves much more flexible and efficient than PaaS when your app gets high volumes of traffic sporadically.
With a FaaS model, you can drastically reduce the cost of running your apps, as you pay only for the computing resources your app actually uses. When an app’s function stops working, the application stops consuming any resources. You simply don’t pay to a FaaS provider when your app isn’t doing anything. It’s as simple as that.
FaaS is an event-driven service. When specific events occur – e.g. a user requests the local weather forecast – a FaaS platform instantiates a container. The application’s function that handles the user request for local weather data will then be uploaded to this container for execution. The app’s function receives an object with the event properties so it can carry out respective tasks. Finally, the FaaS platform destroys the container once the function has been executed and the response has been returned or saved in cloud storage. The Function as a Service model is a bit more complex than what we’ve just described, but this is all you need to know to understand the business value of FaaS.
All major software providers inсluding Amazon, IBM, Google, and Microsoft, have developed their own Function as a Service products. Let’s start with Amazon Lambda.
Amazon Lambda is an AWS cloud compute service that runs an application’s business logic functions. Lambda can run code written in Node.js, Java, Python, or C#. You can, however, run functions written in Ruby, PHP, or Go, as Amazon lets you compile these languages for Lambda as well.
AWS services that are typically used with Amazon Lambda include:
- Amazon API Gateway, which serves as a communication point between Lambda and your application’s frontend.
- Amazon Cognito, an authentication service.
- Amazon DynamoDB to store static data.
IBM develops and supports its own cloud solution to compete with Lambda and Azure Functions (which we will talk about next). IBM OpenWhisk is a typical Function as a Service product that runs various app functions. Just like Amazon Lambda, IBM OpenWhisk communicates with your app using the REST API. OpenWhisk currently works only with Node.js and the Java, Python, and Swift programming languages.
You can also check out the following IBM services tailored for serverless applications:
Microsoft Azure Functions
- Azure Active Directory as a single sign-on service and authentication tool.
- Azure Data Lake Store to store user data, just as you would with Amazon DynamoDB.
Google Cloud Functions
Google Cloud Functions also offers several services for serverless applications. You’ll need to use several other Google cloud tools alongside Google Cloud Functions – for example, Google Cloud Storage. To use Google Cloud Functions, you simply need to associate a given application function with a change to files saved in Cloud Storage. Removing or relocating a file are two possible changes that you might associate with a function. Whenever a monitored change occurs, the associated function is run. Google Cloud Functions provides wider support for programming languages than other FaaS vendors. Cloud Functions can run web applications written in Ruby, Python, Go, .NET, Java, Node.js, and PHP.
Other Google services that support a serverless approach include:/p>
- Firebase Database for connecting your iOS or Android apps or single-page web applications.
- Firebase Authentication tool.
- Cloud Storage.
- Cloud Pub/Sub, a messaging engine that can connect services across Google Cloud and is used to trigger Google Cloud Functions.
Even though we’ve mentioned a number of FaaS services, this is only a brief overview. You're free to look for other solutions as well. The selection of Function as a Service cloud-based products will only grow in the future. In conclusion, the Function as a Service model can be efficient for applications that get intermittent traffic and that consist of micro-services (in other words, the app is divided into several small functional blocks that run specific tasks).
Machine learning, the Internet of Things, smart chatbots, big data analytics, and serverless architecture aren’t the only trends we’re seeing in web development this year. But these trends do point to the future of software development. When you develop a new web or mobile application, make sure to keep AI solutions and big data analytics in mind. And if you want to reduce time and cost for app development, why not consider making your app serverless?