<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jamil Ahmed</title>
    <description>The latest articles on DEV Community by Jamil Ahmed (@itsjamilahmed).</description>
    <link>https://dev.to/itsjamilahmed</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F185543%2F16da5df4-0058-4cc1-ac98-b460e21ada78.png</url>
      <title>DEV Community: Jamil Ahmed</title>
      <link>https://dev.to/itsjamilahmed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itsjamilahmed"/>
    <language>en</language>
    <item>
      <title>Unlocking the Power of Alibaba’s Machine Translation Service with JMS, HTTP and MQTT</title>
      <dc:creator>Jamil Ahmed</dc:creator>
      <pubDate>Fri, 20 Sep 2019 20:29:31 +0000</pubDate>
      <link>https://dev.to/solacedevs/unlocking-the-power-of-alibaba-s-machine-translation-service-with-jms-http-and-mqtt-1nn1</link>
      <guid>https://dev.to/solacedevs/unlocking-the-power-of-alibaba-s-machine-translation-service-with-jms-http-and-mqtt-1nn1</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F09%2Fmachine-translation-featured-blog-image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F09%2Fmachine-translation-featured-blog-image.png" alt="A green icon image of a brain split 50/50 between human looking and IoT/connectivity signals"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Alibaba Cloud offers a language translation service powered by machine learning. You can use this to &lt;a href="https://www.alibabacloud.com/blog/applying-alibaba-machine-translation-to-cross-border-e-commerce-scenarios_594006" rel="noopener noreferrer"&gt;easily present your e-commerce site in multiple languages&lt;/a&gt;, enable multi-lingual search and even translate support chats in real-time.&lt;/p&gt;

&lt;p&gt;The service is currently made available as an SDK called “Machine Translation,” also known as Ali MT. Users are required to integrate the SDK into their application components that need to perform language translation. One approach would be implementing a client-server model with the SDK implemented in just the designated ‘server’ process(es) with the clients making translation requests to it. This offers some abstraction in your architecture by avoiding the need to have every process that wants to use the translation service be familiar with the full Machine Translation SDK.&lt;/p&gt;

&lt;p&gt;For example, in a modern &lt;a href="https://solace.com/blog/event-driven-microservices/" rel="noopener noreferrer"&gt;event-driven microservices architecture&lt;/a&gt; you can envision a set of elastically scaled microservices that offer the translation capability to all other microservices.&lt;/p&gt;

&lt;p&gt;In many enterprises, JMS brokers are a very common way of connecting applications and services. As an easy to use messaging API, JMS is embedded in many integration products. If you have an enterprise service bus (ESB) in use today, a JMS provider is probably part of the stack.&lt;/p&gt;

&lt;p&gt;Looking across your enterprise IT infrastructure, you may need to expose new cloud-based services like this to existing applications that are connected to an ESB, in addition to connecting them to new applications in a microservices architecture or functions-as-a-service (FaaS) deployment. You may also have some Internet of Things (IoT) devices that need to access them.&lt;/p&gt;

&lt;p&gt;Wouldn’t it be great if you could deploy just one set of services and handle all these different client and protocol needs? With the help of an &lt;a href="https://solace.com/what-is-an-event-broker/" rel="noopener noreferrer"&gt;event broker&lt;/a&gt; like PubSub+, you can.&lt;/p&gt;

&lt;h1&gt;
  
  
  Starting with JMS for existing legacy applications
&lt;/h1&gt;

&lt;p&gt;With JMS being an API specification only, and not tied to any particular product, it is possible to code an application against the API so that it works with any JMS-compliant JMS broker. The client libraries that contain vendor-specific detail can be resolved at runtime from the classpath. To eliminate the need for even this vendor specific library dependency in your application, the Advanced Message Queuing Protocol (&lt;a href="https://docs.solace.com/Open-APIs-Protocols/AMQP/Using-AMQP.htm" rel="noopener noreferrer"&gt;AMQP&lt;/a&gt;) defines a standards-based connectivity protocol so an open source library can connect to brokers from multiple vendors without so much as a library change.&lt;/p&gt;

&lt;p&gt;To support JMS connectivity to Alibaba MT, I have created a wrapper around the SDK and made it available &lt;a href="https://github.com/itsJamilAhmed/jms-sample-alibaba-nlp" rel="noopener noreferrer"&gt;here on Github&lt;/a&gt;. There are two demo JMS applications (as runnable JARs) in the repository that are implementing the &lt;a href="https://solace.com/samples/solace-samples-jms/request-reply/" rel="noopener noreferrer"&gt;request-reply&lt;/a&gt; pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A “Requester” program that makes requests to translate English text to Chinese, sent over a JMS destination.&lt;/li&gt;
&lt;li&gt;A “Replier” program that listens to requests on a JMS destination, translates the text to Chinese and responds to the original requestor over another JMS destination.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Replier program is in the &lt;em&gt;server&lt;/em&gt; role in the client-server pattern and is the only program needing to implement the Machine Translation SDK; the Requestor program is completely unaware of the SDK.&lt;/p&gt;

&lt;p&gt;The repository by default builds with support for the AMQP JMS libraries from Apache Qpid, so it’s immediately ready to connect to a JMS broker such as Solace PubSub+ that supports AMQP.&lt;/p&gt;

&lt;p&gt;To run the programs you need to update the contents of two files that are also in the checked out repository:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;jndi.properties&lt;/code&gt; – This tells the programs how to connect to the JMS broker and what destination to use&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;alibaba-mt.properties&lt;/code&gt; – This tells the Replier program how to connect to the Alibaba Machine Translation service.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Get your Solace PubSub+ Connection Details
&lt;/h3&gt;

&lt;p&gt;The easiest way to get started is to sign up for a free developer plan of &lt;a href="https://dev.to/products/event-broker/cloud/"&gt;PubSub+ Cloud&lt;/a&gt;. Once you have your service, jump down into the AMQP connectivity details from the “Connect” tab like so:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solace.com/wp-content/uploads/2019/09/alibaba-machine-translation-service-jms-http-mqtt_image-1.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F09%2Falibaba-machine-translation-service-jms-http-mqtt_image-1-1024x549.jpg" alt="Console shot of the AMQP connectivity details from within Solace PubSub+ Cloud"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can then modify the jndi.properties file to add the connection URI, username and password into the jndi.properties file like so in the “connectionfactory.ConnectionFactory” line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;connectionfactory.ConnectionFactory = amqp://your-service-here.messaging.solace.cloud:5672?jms.username=solace-cloud-client&amp;amp;jms.password=YourPasswordHere&amp;amp;jms.clientIDPrefix=NLPTranslationSample-&amp;amp;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the purposes of this demo, also update the JMS destinations names like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;topic.nlp-translation-requests-send = jms/nlp/translation/requests topic.nlp-translation-requests-receive = \*/nlp/translation/requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Get your Alibaba Machine Translation Service Details
&lt;/h3&gt;

&lt;p&gt;Next, we need to provide the details of your Machine Translation service to the programs. You can get these details by following the instructions &lt;a href="https://www.alibabacloud.com/help/doc-detail/96384.htm" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In alibaba-mt.properties enter your service details like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;service-region=cn-hangzhou access-key-id=IDGoesHere access-key-secret=SecretGoesHere
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you don’t have access to the service yet, you can also run the programs in offline/simulation mode. Just add the following line to the file instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;simulation-mode=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Start Translating
&lt;/h3&gt;

&lt;p&gt;Now you are ready to run the programs and access Machine Translation over JMS. Start the replier program first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;java -jar AlibabaNLPReplier.jar -j ./jndi.properties -a ./alibaba-mt.properties
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then start the requesting program:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;java -jar AlibabaNLPRequestor.jar -j ./jndi.properties
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The requesting program will collect keyboard input as you type and submit each new line as a request for translation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding HTTP support for new microservices
&lt;/h2&gt;

&lt;p&gt;For lightweight microservices running in a Functions-as-a-Service manner without a lot of library dependencies, communicating over HTTP is a popular mechanism. So let’s add HTTP support for the translation service next.&lt;/p&gt;

&lt;p&gt;With the Java replier program running, we can actually have the same process respond to requests delivered over HTTP without deploying any further services or components. By selecting Solace PubSub+ as the JMS provider, its &lt;a href="https://docs.solace.com/Overviews/Microgateway-Concepts/Microgateways-Overview.htm" rel="noopener noreferrer"&gt;REST Microgateway&lt;/a&gt; provides access to the same JMS destinations over HTTP.&lt;/p&gt;

&lt;p&gt;The Solace PubSub+ REST connectivity feature can operate in two modes: messaging and gateway. The default setting for a newly created event broker or cloud service is messaging but we need it operating in ‘gateway’ mode for this exercise.&lt;/p&gt;

&lt;p&gt;Follow the instructions &lt;a href="https://docs.solace.com/Configuring-and-Managing/Microgateway-Tasks/Managing-Microgateway.htm#Configure_VPN_Mode" rel="noopener noreferrer"&gt;here&lt;/a&gt; to change the mode for your broker.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get your REST connectivity details
&lt;/h3&gt;

&lt;p&gt;Going back to the Connection tab of your PubSub+ Cloud instance, now collect the details on how to connect the same instance via HTTP REST:&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/09/alibaba-machine-translation-service-jms-http-mqtt_image-2.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F09%2Falibaba-machine-translation-service-jms-http-mqtt_image-2-1024x410.jpg" alt="Console screenshot inside PubSub+ Cloud about how to details on how to connect the same instance via HTTP REST"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Set up cURL command example
&lt;/h3&gt;

&lt;p&gt;Assuming a Linux shell environment, we can use the curl client to make a translation request over the HTTP POST method. To facilitate this, we’ll put the relevant connectivity details into shell variables for convenience like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ USER=solace-cloud-client $ PASS=your-password-here $ REST\_ENDPOINT="http://your-instance-here.messaging.solace.cloud:9000/nlp/translation/requests"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll note the REST endpoint adds the &lt;code&gt;nlp/translation/requests&lt;/code&gt; path as a way of matching up to the JMS program and the destination it is already listening to.&lt;/p&gt;

&lt;p&gt;When the JMS programs receive requests and respond to them, they expect a &lt;code&gt;CorrelationID&lt;/code&gt; to be present to properly respond to the requests. For the HTTP POST we can pass this in the header, so let’s setup a variable for this too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ CORRELATION="Solace-Correlation-ID: aRandomString"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lastly, another header is required to specify that this is plain text being sent and not, say, binary. This final shell variable can set this up too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ TYPE="Content-Type: text/plain"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s all that is required. We are ready to run the curl command with the relevant arguments:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ curl -u $USER:$PASS -d "This request is via HTTP POST" -H "$TYPE" -H "$CORRELATION" -X POST $REST\_ENDPOINT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is an example response with it all put together:&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/09/alibaba-machine-translation-service-jms-http-mqtt_image-3.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F09%2Falibaba-machine-translation-service-jms-http-mqtt_image-3-1024x149.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the Replier logs you can see messages being handled from both the JMS and HTTP sources:&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/09/alibaba-machine-translation-service-jms-http-mqtt_image-4.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F09%2Falibaba-machine-translation-service-jms-http-mqtt_image-4-1024x62.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Adding MQTT support for IoT devices
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://docs.solace.com/Open-APIs-Protocols/MQTT/Using-MQTT.htm" rel="noopener noreferrer"&gt;MQTT&lt;/a&gt; is a low power and low bandwidth protocol which makes it a very popular choice for IoT systems. With these devices typically being supported by applications and services running elsewhere (such as on-premises or in a cloud) there is a need to get bidirectional data flows from these devices using MQTT to applications and services using different protocols. Fortunately, PubSub+ event brokers will easily do this protocol translation for you.&lt;/p&gt;

&lt;p&gt;Keeping the same Java program running, let’s get a request for translation sent using the MQTT protocol so that the Java program can consume it over JMS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get your MQTT connectivity details
&lt;/h3&gt;

&lt;p&gt;Just as before, go back to the Connection tab of your PubSub+ Cloud instance and this time collect the details on how to connect to the instance via MQTT:&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/09/alibaba-machine-translation-service-jms-http-mqtt_image-5.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F09%2Falibaba-machine-translation-service-jms-http-mqtt_image-5-1024x212.jpg" alt="PubSub+ Cloud screenshot with details on how to connect to the instance via MQTT"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect your MQTT Client
&lt;/h3&gt;

&lt;p&gt;As MQTT is a standard connectivity protocol, any MQTT client API can publish to the PubSub+ event broker (i.e. There is no API required to be fetched from Solace.) Therefore, we can use the online hosted &lt;a href="https://www.eclipse.org/paho/clients/js/utility/" rel="noopener noreferrer"&gt;JavaScript-over-WebSocket MQTT&lt;/a&gt; utility by Eclipse Paho for this demonstration.&lt;/p&gt;

&lt;p&gt;Copy in the connectivity details into the online client:&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/09/alibaba-machine-translation-service-jms-http-mqtt_image-6.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F09%2Falibaba-machine-translation-service-jms-http-mqtt_image-6-1024x627.jpg" alt="Screenshot from online hosted JavaScript-over-WebSocket MQTT utility by Eclipse Paho"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Publish a message from the web client:&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/09/alibaba-machine-translation-service-jms-http-mqtt_image-7.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F09%2Falibaba-machine-translation-service-jms-http-mqtt_image-7-1024x508.jpg" alt="Eclipse Paho: Publish a message from the web client"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Note: This request can be sent to the MQTT specific topic of &lt;code&gt;mqtt/nlp/translation/requests&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Review the request arrival in the JMS Replier logs:&lt;br&gt;&lt;br&gt;
&lt;a href="https://solace.com/wp-content/uploads/2019/09/alibaba-machine-translation-service-jms-http-mqtt_image-8.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsolace.com%2Fwp-content%2Fuploads%2F2019%2F09%2Falibaba-machine-translation-service-jms-http-mqtt_image-8-1024x53.jpg" alt="MQTT: request arrival in the JMS Replier logs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will recall that our JMS programs are utilizing a ‘request-reply’ pattern of message exchange, with a ‘reply-to’ topic being essential to see the translation response. As this hosted MQTT client is not carrying out all these necessary steps, the request will not be properly dealt with. However, evidence of the message arrival and processing of the content can be seen in the logs.&lt;/p&gt;

&lt;p&gt;While the lightweight MQTT protocol does not explicitly define a request-reply mechanism, it can very easily be simulated using custom defined topics and headers. For further information on how you may build your own MQTT sender to properly implement the request-reply pattern to successfully get a translation response back to the MQTT sender, read the &lt;a href="https://solace.com/samples/solace-samples-mqtt/request-reply/" rel="noopener noreferrer"&gt;Request/Reply&lt;/a&gt; guide.&lt;/p&gt;

&lt;h2&gt;
  
  
  That’s all, folks!
&lt;/h2&gt;

&lt;p&gt;That’s the end of the tutorial. If you have any questions or comments, you can find me at &lt;a href="https://solace.community/" rel="noopener noreferrer"&gt;solace.community&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://solace.com/blog/alibaba-machine-translation/" rel="noopener noreferrer"&gt;Unlocking the Power of Alibaba’s Machine Translation Service with JMS, HTTP and MQTT&lt;/a&gt; appeared first on &lt;a href="https://solace.com" rel="noopener noreferrer"&gt;Solace&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>http</category>
      <category>jms</category>
      <category>alibaba</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Multi-Cloud for the Digital Silk Road?</title>
      <dc:creator>Jamil Ahmed</dc:creator>
      <pubDate>Sun, 05 May 2019 17:48:42 +0000</pubDate>
      <link>https://dev.to/solacedevs/multi-cloud-for-the-digital-silk-road-29fh</link>
      <guid>https://dev.to/solacedevs/multi-cloud-for-the-digital-silk-road-29fh</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k8FtalOn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ASPuVm1u4Gq8O6Q3HtSUxug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k8FtalOn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ASPuVm1u4Gq8O6Q3HtSUxug.png" alt=""&gt;&lt;/a&gt;Map of the Digital Silk Road: London to Beijing Cloud Connectivity with Alibaba, Tencent and Huawei&lt;/p&gt;

&lt;p&gt;For Western companies doing business in mainland China, digital connectivity can be a huge challenge when you’re having to contend with the “Great Firewall of China” restricting or slowing down cross-border Internet connectivity.&lt;/p&gt;

&lt;p&gt;Could a multi-cloud solution help? I decided to investigate…&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;gt; What is the Digital Silk Road?
&lt;/h3&gt;

&lt;p&gt;The “&lt;a href="https://en.wikipedia.org/wiki/Silk_Road"&gt;Silk Road&lt;/a&gt;” was an ancient network of trade routes that connected East and West, dating from around the year 114 BC. More recently however the Silk Road term has been rebooted to represent the massive &lt;a href="https://www.bloomberg.com/news/articles/2018-10-24/how-to-travel-the-new-800-billion-silk-road"&gt;$800 billion&lt;/a&gt; foreign investment programme by the Chinese government to strengthen international trade and connectivity.&lt;/p&gt;

&lt;p&gt;Within that overall initiative, the &lt;em&gt;Digital&lt;/em&gt; &lt;em&gt;Silk Road&lt;/em&gt; is a &lt;a href="https://www.sciencefocus.com/future-technology/the-digital-silk-road-chinas-200-billion-project/"&gt;$200 billion&lt;/a&gt; wide-ranging project focusing on the &lt;a href="https://www.economist.com/china/2018/05/31/china-talks-of-building-a-digital-silk-road"&gt;digital aspects&lt;/a&gt; such as new undersea Internet cables, advancements in Artificial Intelligence, quantum computing, and even alternative satellite navigation systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;gt; The connectivity challenge
&lt;/h3&gt;

&lt;p&gt;In spite of all this investment to foster and improve international trade, the &lt;strong&gt;‘&lt;/strong&gt; &lt;a href="https://en.m.wikipedia.org/wiki/Great_Firewall"&gt;Great Firewall of China&lt;/a&gt; &lt;strong&gt;’&lt;/strong&gt; that affects all cross-border Internet connectivity remains firmly in place. This firewall enables the censorship and blocking of certain traffic or content, which has the net effect of severely slowing down all data flows in and out of mainland China.&lt;/p&gt;

&lt;p&gt;(As a tourist to Beijing in 2017, I had to bear with my wife’s constant frustrations with her social media access being slow!)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sOUgQy35--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AQLMaED75XHc5vAStq2yyqA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sOUgQy35--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AQLMaED75XHc5vAStq2yyqA.jpeg" alt=""&gt;&lt;/a&gt;A photo at one of the watch towers of the Great Wall of China (Mutianyu)&lt;/p&gt;

&lt;p&gt;Now picture a hypothetical Western company wishing to do business in China. Say a European manufacturer of smart, &lt;a href="https://solace.com/use-cases/internet-of-things/"&gt;Internet-connected cars&lt;/a&gt; that are now driving on the roads of busy Beijing. To support the digital services and applications in that vehicle, it needs healthy bidirectional connectivity to applications and services deployed in existing on-prem data centres. One hypothetical service is your vehicle being able to re-route your journey to avoid a known accident further ahead. Information such as the location of the accident and the real-time location of your vehicle will need to be processed without undue delay for this to be effective.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AdHCzjuQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/640/1%2A7S0XE7hDRcLUBIxa4hNJTg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AdHCzjuQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/640/1%2A7S0XE7hDRcLUBIxa4hNJTg.jpeg" alt=""&gt;&lt;/a&gt;Vehicles with smart, internet connected services&lt;/p&gt;

&lt;p&gt;Some of those digital services may be delivered from a regional ‘hub’ data centre close by in Asia, and others delivered from a data centre in Europe closer to company headquarters.&lt;/p&gt;

&lt;p&gt;Having a digital presence within China — as a first stop before reaching the on-prem data centres — would be required to effectively deliver responsive services to those connected cars.&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;gt; Enter Alibaba, Tencent and Huawei Clouds
&lt;/h3&gt;

&lt;p&gt;Just as Amazon AWS, Microsoft Azure and Google are the dominant players in the West for public cloud services, for China you can consider &lt;a href="https://www.alibabacloud.com/"&gt;Alibaba&lt;/a&gt;, &lt;a href="https://intl.cloud.tencent.com/"&gt;Tencent&lt;/a&gt; and &lt;a href="https://intl.huaweicloud.com/"&gt;Huawei&lt;/a&gt; for the same.&lt;/p&gt;

&lt;p&gt;With each of them maintaining data centres (or “cloud regions”) in many international cities, the business of facilitating digital access for foreign companies into mainland China is a ‘low hanging fruit’ use-case.&lt;/p&gt;

&lt;p&gt;Alibaba and Tencent are the largest players and make up a duopoly locked in a constant battle for overall dominance:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Forget Google versus Facebook. Forget Uber versus Lyft. Forget Amazon versus … well, everybody. The technology world’s most bruising battle for supremacy is taking place in China.”&lt;em&gt; — &lt;/em&gt;&lt;a href="https://www.nytimes.com/2018/05/31/technology/china-tencent-alibaba.html"&gt;NY Times&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With my focus here being connectivity from &lt;strong&gt;London&lt;/strong&gt; to Beijing, Alibaba Cloud actually inches ahead a little over Tencent. Alibaba Cloud has 11 regions outside of China versus 10 from Tencent. More importantly, the nearest cloud region in Europe is also in London for Alibaba, versus Frankfurt for Tencent and Paris for Huawei.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--itisv5A4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/706/1%2AoLXtRaoiaJ_QTp_Z6oGhxQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--itisv5A4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/706/1%2AoLXtRaoiaJ_QTp_Z6oGhxQ.png" alt=""&gt;&lt;/a&gt;Summary of international ‘cloud regions’ availability for Alibaba, Tencent and Huawei&lt;/p&gt;

&lt;p&gt;(When Alibaba launched their London region in late 2018, I performed an analysis on how they compared with AWS, Azure and Google. You can find that here: &lt;a href="https://dev.to/solacedevs/alibaba-cloud-a-data-driven-analysis-1eeb-temp-slug-7316379"&gt;Alibaba Cloud — A Data-Driven Analysis&lt;/a&gt;.)&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;gt; The Investigation Parameters
&lt;/h3&gt;

&lt;p&gt;As part of looking at this issue I was interested in the following items:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. What exactly does “slow” connectivity mean?
&lt;/h4&gt;

&lt;p&gt;This will be quantified by mimicking a simple application interaction using a popular communication pattern (&lt;a href="https://en.wikipedia.org/wiki/Request%E2%80%93response"&gt;request-response&lt;/a&gt;), that is stretched between a pair of services deployed in our London ‘on-prem’ data centre and the Beijing ‘cloud’ data centre.&lt;/p&gt;

&lt;p&gt;This will take place at a regular 5 second interval to build up a long term picture of how long the full ‘round-trip’ of those interactions take to complete. i.e. The &lt;strong&gt;latency&lt;/strong&gt; of the connection at an application level.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wtPkMznC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/975/1%2AEL35v8IvkXrFome58dwYpQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wtPkMznC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/975/1%2AEL35v8IvkXrFome58dwYpQ.png" alt=""&gt;&lt;/a&gt;Request-Response interaction facilitated by Solace PubSub+ Event Brokers deployed in London and Beijing&lt;/p&gt;

&lt;p&gt;Furthermore, with the help of a multi-cloud “&lt;a href="https://solace.com/what-is-an-event-mesh/"&gt;event mesh&lt;/a&gt;” architecture for this connectivity, the ‘responding’ service in Beijing can be &lt;strong&gt;deployed in triplicate&lt;/strong&gt; across the three cloud providers — in each of their Beijing cloud ‘region’. This will have the effect of ‘racing’ the interaction across the three in parallel so we can also assess which offered the fastest connectivity at that time and determine the arrival ranking in that race.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1F_vkIIw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AEWKFUUpuTtDOvd9NQSD0xw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1F_vkIIw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AEWKFUUpuTtDOvd9NQSD0xw.png" alt=""&gt;&lt;/a&gt;Applications being deployed in triplicate across Alibaba, Tencent and Huawei clouds in a multi-cloud event-mesh.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Does an indirect connectivity via the cloud provider add value?
&lt;/h4&gt;

&lt;p&gt;There are two different ways we can connect up our London application with the applications in Beijing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The first is a &lt;strong&gt;direct&lt;/strong&gt; connection from our London on-prem network to the Beijing cloud provider’s network.&lt;/li&gt;
&lt;li&gt;The second is an &lt;strong&gt;indirect&lt;/strong&gt; path by adding an extra interim hop to the cloud provider’s “Europe” region first, to then connect onwards to their Beijing region.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HwCB9vpI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ABHf2217MfowG_ugcrYqOSQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HwCB9vpI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ABHf2217MfowG_ugcrYqOSQ.png" alt=""&gt;&lt;/a&gt;Direct vs Indirect Event Mesh connectivity architectures for London to Beijing&lt;/p&gt;

&lt;p&gt;To use an airplane analogy, the options here are either a direct flight to Beijing or one with a change in Europe first.&lt;/p&gt;

&lt;p&gt;Counter-intuitively, the extra hop may actually help to reduce the latency of the overall communication and provide a more predictable service. Instead of being treated as cross-border Internet traffic straight away, the hop may direct the traffic via a different, more optimised path across the border.&lt;/p&gt;

&lt;p&gt;The architecture of the event mesh has this new dimension now. As well as providing competing service deployment across three cloud providers, we can also compete across the two connectivity paths for each provider.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Do increases in latency affect all 6 traffic paths to Beijing at the same time?
&lt;/h4&gt;

&lt;p&gt;This item is the crux of the overall investigation. If dealing with the ‘Great Firewall’ is an unavoidable aspect of doing digital business with China, can a multi-cloud approach help to protect (or “hedge”) against it?&lt;/p&gt;

&lt;p&gt;To put it another way, if one connectivity path and deployed service is suffering from a sudden slow down, would an alternate path and service be performing better at that same moment? If there is no correlation across the paths during those moments of slow down, enterprises that are particularly sensitive can choose to operate a “multi-path” approach to their connectivity to mainland China.&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;gt; The Live Results
&lt;/h3&gt;

&lt;p&gt;The results of the continuous application ‘request-response’ interaction described above, along with the event-mesh architecture with multiple clouds and multiple paths, can be viewed in a live demo here:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://london.solace.com/multi-cloud/digital-silk-road.html"&gt;&lt;strong&gt;http://london.solace.com/multi-cloud/digital-silk-road.html&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example results with the actual round-trip latency in milliseconds are available below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CeOzac5n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AofSQieP9qcDwGzri733pTA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CeOzac5n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AofSQieP9qcDwGzri733pTA.png" alt=""&gt;&lt;/a&gt;An example result showing Tencent Cloud via Frankfurt as the lowest latency path to Beijing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a5ihJxId--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AMzACYYj1Q7kZG9g0QgV4aA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a5ihJxId--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AMzACYYj1Q7kZG9g0QgV4aA.png" alt=""&gt;&lt;/a&gt;Another example result showing Alibaba Cloud via their London region as the lowest latency path to Beijing.&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;gt; The Findings
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Even snails move faster than this!
&lt;/h4&gt;

&lt;p&gt;This investigation and live demo builds on &lt;a href="https://solace.com/blog/first-step-enabling-cloud-arbitrage/"&gt;earlier work&lt;/a&gt; measuring AWS, Azure and Google with global communications spanning UK, US and Singapore. After deploying it against China here, the latency was at times so high it broke the charting logic of my demo! Embarrassingly, the high latency exposed a logic bug that was easily fixed, but a great example of how previously working applications can fail in strange ways when faced with such challenging connectivity circumstances.&lt;/p&gt;

&lt;p&gt;The logic of the application was as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Send a single request message that the &lt;a href="https://solace.com/software/"&gt;PubSub+&lt;/a&gt; Event Brokers replicate across the multiple paths and cloud providers&lt;/li&gt;
&lt;li&gt;Wait up to 5 seconds for the multiple responses to arrive&lt;/li&gt;
&lt;li&gt;Calculate the latency of each response and determine an overall ranking of the order in which they arrived&lt;/li&gt;
&lt;li&gt;Repeat with a new request message&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What I failed to anticipate is the response messages arriving more than &lt;strong&gt;5 seconds late&lt;/strong&gt;. From all the experience so far with the other global regions, latency rarely breaks the 1 second mark, let alone 5.&lt;/p&gt;

&lt;p&gt;The fastest responses seen from China were around the 160 millisecond mark. (Less than a fifth of a second.) At the upper end however responses can be &lt;strong&gt;100x higher&lt;/strong&gt; in the 10’s of seconds like the 14 seconds example below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1UrpBRoi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AiF8J6YvMvYH3Y2xDnwaGaA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1UrpBRoi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AiF8J6YvMvYH3Y2xDnwaGaA.png" alt=""&gt;&lt;/a&gt;Example latency result in the 10’s of seconds range.&lt;/p&gt;

&lt;p&gt;We just had the London Marathon last weekend so will use that to help explain the logic bug. With the latency being so late past the 5 second measurement window, the effect was like a marathon runner starting at the weekend but arriving very late &lt;strong&gt;the next month&lt;/strong&gt; to finish the race. At that point all the other participants have gone so when he arrives at the finish line he is the only one present. Then when put into an ordered rank of arrival, he appears to be “first” by virtue of no one else being there!&lt;/p&gt;

&lt;p&gt;The simple fix can also borrow from the marathon analogy. Each race has a “pacer” response that will always be present. When determining the final ranking, you only get one assigned if the pacer is present at the time of your arrival.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Don’t take the direct flight
&lt;/h4&gt;

&lt;p&gt;One result that looks unanimous is that the direct connection to Beijing from London ‘on-prem’ is by far the slowest.&lt;/p&gt;

&lt;p&gt;In the latency chart below, the broken dashed line represents the &lt;strong&gt;indirect&lt;/strong&gt; connectivity and the solid line being  &lt;strong&gt;direct&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For both Alibaba and Tencent the best connectivity path is to add the hop via the nearest cloud region in Europe. Latency can be up to &lt;strong&gt;36% lower&lt;/strong&gt; with this approach.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aXRZCBso--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ApZqmGSn5dNycixhfBBKQsQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aXRZCBso--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ApZqmGSn5dNycixhfBBKQsQ.png" alt=""&gt;&lt;/a&gt;Example result of the stark differences in latency for the direct vs indirect modes.&lt;/p&gt;

&lt;p&gt;Note that for Huawei, this comparison of direct vs indirect could not be made. While the public website lists Paris as an available region for their “Elastic Cloud Server”, upon inquiry I was told this region is not fully available at the moment. So the demo retains the placeholder for Huawei connectivity via Paris should it become available.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i7quf-8g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/726/1%2A5NAKztry-pvy6kWp0ZEbKA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i7quf-8g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/726/1%2A5NAKztry-pvy6kWp0ZEbKA.png" alt=""&gt;&lt;/a&gt;Huawei Cloud’s missing “EU-Paris” region even though listed on their website.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. It’s Yes to Multi-Cloud
&lt;/h4&gt;

&lt;p&gt;The main finding here is that while there are some cases of the connection slowdown (latency spikes) aligning perfectly across multiple providers, for the most part they do not correlate. i.e. If one cloud provider experiences a spike, in that moment the others often appear to be fine.&lt;/p&gt;

&lt;p&gt;An example when the high latency spike was seen across Huawei and Tencent at the same time:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ahbnvhne--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AThpSweZ2GqFONVh2RgkIBg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ahbnvhne--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AThpSweZ2GqFONVh2RgkIBg.png" alt=""&gt;&lt;/a&gt;Example result where two different providers (Alibaba and Huawei) experience a large latency spike at the same time.&lt;/p&gt;

&lt;p&gt;You can review this recording of a 3 hour &lt;a href="https://solace.com/blog/welcoming-replay/"&gt;replay&lt;/a&gt; of latency results to decide for yourself:&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/333463050" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Once again, you can view the live results and trigger your own replay window here: &lt;a href="http://london.solace.com/multi-cloud/digital-silk-road.html"&gt;&lt;strong&gt;http://london.solace.com/multi-cloud/digital-silk-road.html&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &amp;gt; Next Steps
&lt;/h3&gt;

&lt;p&gt;These are the preliminary findings being shared and the investigation can continue further. Adding Huawei Cloud’s Paris region when it becomes available is one pending step.&lt;/p&gt;

&lt;p&gt;Once that is in place, the three will be on a fairer footing to try additional services available from the cloud providers. Mainly, the ability to purchase dedicated and low latency bandwidth between the cloud regions to further improve performance and connectivity.&lt;/p&gt;

&lt;p&gt;In the meantime, I hope you found this an interesting read. Please do share your thoughts in the comments section below.&lt;/p&gt;

&lt;p&gt;Do follow me for more content like this.&lt;/p&gt;

&lt;p&gt;If you liked this article, you might like this one too: &lt;a href="https://dev.to/solacedevs/comparing-machine-learning-through-bbc-news-analysis-38fa"&gt;&lt;strong&gt;Comparing Machine Learning through BBC News Analysis&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yKE3vQZa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AJsbT0qAjS84l3iBcPIidTQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yKE3vQZa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AJsbT0qAjS84l3iBcPIidTQ.png" alt=""&gt;&lt;/a&gt;Article image for ‘Comparing Machine Learning through BBC News Analysis’&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at&lt;/em&gt; &lt;a href="https://www.linkedin.com/pulse/multi-cloud-digital-silk-road-jamil-ahmed/"&gt;&lt;em&gt;https://www.linkedin.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;   &lt;/p&gt;

</description>
      <category>huawei</category>
      <category>alibaba</category>
      <category>china</category>
      <category>digitalsilkroad</category>
    </item>
    <item>
      <title>Stop taking standards for granted</title>
      <dc:creator>Jamil Ahmed</dc:creator>
      <pubDate>Wed, 09 Jan 2019 00:57:33 +0000</pubDate>
      <link>https://dev.to/solacedevs/stop-taking-standards-for-granted-1bfg</link>
      <guid>https://dev.to/solacedevs/stop-taking-standards-for-granted-1bfg</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cAlISaly--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/1%2AcSrlejb0tCYUIfRUmT03lQ.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cAlISaly--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/1%2AcSrlejb0tCYUIfRUmT03lQ.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What has an angry Michelin starred chef got to do with standards and multi-cloud? Let me explain…&lt;/p&gt;

&lt;p&gt;Picture the scene: It’s that hazy period between Christmas and New Year’s where you know there are days in the calendar but you are not sure what is happening where or what day it currently is.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.instagram.com/instachaaz/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3ifEJwHv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/873/1%2APDJHvBOlsMVaCIC-9u-1nw.png" alt=""&gt;&lt;/a&gt;Do check out @instachaaz on Instagram&lt;/p&gt;

&lt;p&gt;There’s loads of family over and we’re all at various stages of a food coma.&lt;/p&gt;

&lt;p&gt;My brother-in-law suddenly surprises me with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Oh I read your last &lt;a href="https://dev.to/solacedevs/alibaba-cloud-a-data-driven-analysis-41ci"&gt;blog&lt;/a&gt; [on Alibaba Cloud], very interesting.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now this is a surprise because he is a Pharmacist by profession and does not really consider himself technically inclined. i.e. Not exactly my target audience for that particular article in the first place.&lt;/p&gt;

&lt;p&gt;Turns out he has been suffering from insomnia of late and so reading articles on random topics is on his quest to find the sleep that eludes him. Now I could take offence here. I mean I don’t write to help put insomniacs to sleep! Alas, I am a glass half-full guy so the fact it engaged him enough to still remember the blog next morning, I am taking this as a win.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This multi-cloud idea, isn’t that just standard?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This was the question that was posed to me from this non-technical reader. I guess everyone can appreciate why being multi-cloud has advantages, whether you are in the field or not. I was just stumped at explaining why it is sadly not a given that everyone does this.&lt;/p&gt;

&lt;p&gt;It is the word &lt;em&gt;standard&lt;/em&gt; that I decided to focus on when trying to explain the situation. Not the adjective meaning of the word as posed in the question, but the noun:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.dictionary.com/browse/standard"&gt;&lt;strong&gt;standard&lt;/strong&gt;&lt;/a&gt;[stan-derd]&lt;/p&gt;

&lt;p&gt;noun:&lt;/p&gt;

&lt;p&gt;“something considered by an authority or by general consent as a basis of comparison; an approved model.”&lt;/p&gt;

&lt;p&gt;adjective:&lt;/p&gt;

&lt;p&gt;“usual, common, or customary”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Enter the Angry Chef…
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QBG-IDVN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/480/1%2AtdjXwAUgWiTcjivy0QDJZA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QBG-IDVN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/480/1%2AtdjXwAUgWiTcjivy0QDJZA.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“Imagine a chef in a very busy Michelin starred restaurant”, I began…&lt;/p&gt;

&lt;p&gt;Diners are plenty, waiters are taking orders and the kitchen is abuzz. There is suddenly something wrong though. The supply of gas to the premises has failed. The whole kitchen is stuck on pause. Our imagined Chef is now very angry at not being able to deliver for the hungry diners.&lt;/p&gt;

&lt;p&gt;No matter how skilled the chef or the business are at what they do, a fundamentally crucial element to their function is missing and there is no way around it. The gas service is a utility that is taken for granted when there, but absolute catastrophe strikes when gone.&lt;/p&gt;

&lt;p&gt;Fortunately the restaurant switches to another more reliable supplier and service is restored. They were able to do this so easily due to &lt;em&gt;standards&lt;/em&gt;. Standards mean that whichever the supplier, the gas is the gas. It will operate and behave the same, regardless of who is supplying it. The industry as a whole can independently agree on what mixture of hydrocarbon gasses is acceptable to be coming through that pipe and kitchen appliances can be designed to operate with those expectations too. (Insomniacs, click &lt;a href="https://www.ofgem.gov.uk/gas/wholesale-market/gas-quality"&gt;here&lt;/a&gt; for more reading on gas standards!)&lt;/p&gt;

&lt;h4&gt;
  
  
  What if there were no standards?
&lt;/h4&gt;

&lt;p&gt;Our angry chef and restaurant decide to ditch their current supplier and select another. Another company happily arrives to accept their business.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Oh but… Our gas is different…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;It is of a different quality. So you’ll need to change your kitchen equipment.&lt;/li&gt;
&lt;li&gt;It also arrives at a different pressure. So you’ll need to put new pipes in.&lt;/li&gt;
&lt;li&gt;It also burns at a higher temperature. So you’ll need to adjust your recipes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How angry is our hypothetical chef now?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dXTXOoki--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/224/1%2AGQS_bluJ_bDoOG9u12RBoQ.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dXTXOoki--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/224/1%2AGQS_bluJ_bDoOG9u12RBoQ.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Where are the standards in cloud computing?
&lt;/h3&gt;

&lt;p&gt;I explained how the reason why multi-cloud is not a standard approach is because there are no widely accepted standards to help users.&lt;/p&gt;

&lt;p&gt;There is currently a need for standards at many levels. From how resources in the cloud can be discovered and used, to how applications can be deployed and moved around across providers.&lt;/p&gt;

&lt;p&gt;Sadly the space is not mature enough to have these be in place for the greater good of the users. Or perhaps not enough of us are demanding them.&lt;/p&gt;

&lt;p&gt;At least I could offer up one consolation: All applications need to communicate with each other. The unrestricted movement of data is one of those fundamental utilities that is taken for granted when working but it’s catastrophe when it breaks.&lt;/p&gt;

&lt;p&gt;An &lt;a href="https://solace.com/what-is-an-event-mesh"&gt;Event-Mesh&lt;/a&gt; Architecture powered by Solace &lt;a href="https://solace.com/get-started"&gt;PubSub+&lt;/a&gt; allows applications to be built against an Open Standard that provides the protection to easily switch if needed.&lt;/p&gt;

&lt;p&gt;It is of course just one small piece of a much bigger puzzle, but it’s a start.&lt;/p&gt;

&lt;p&gt;With that, I hope I gave my brother-in-law enough peace of mind to finally get a good night’s sleep!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ByQSC_rD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/271/1%2AIlWbWdbsOlgogoYgx4osyA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ByQSC_rD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/271/1%2AIlWbWdbsOlgogoYgx4osyA.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;




</description>
      <category>cloudcomputing</category>
      <category>standards</category>
      <category>insomnia</category>
    </item>
    <item>
      <title>Alibaba Cloud — A Data-Driven Analysis</title>
      <dc:creator>Jamil Ahmed</dc:creator>
      <pubDate>Wed, 05 Dec 2018 12:01:00 +0000</pubDate>
      <link>https://dev.to/solacedevs/alibaba-cloud-a-data-driven-analysis-41ci</link>
      <guid>https://dev.to/solacedevs/alibaba-cloud-a-data-driven-analysis-41ci</guid>
      <description>&lt;h3&gt;
  
  
  Alibaba Cloud — A Data-Driven Analysis
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8ZohY121--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/946/1%2AffZ01s3Hwm0NwZkKkLytOw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8ZohY121--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/946/1%2AffZ01s3Hwm0NwZkKkLytOw.png" alt=""&gt;&lt;/a&gt;Multi-Cloud Arbitrage: Sample Response Tracker&lt;/p&gt;

&lt;p&gt;First up, this post touches on Brexit politics, peculiarities of Internet traffic crossing the Atlantic, Mo Farrah running the 5000m race, and of course cloud computing.&lt;/p&gt;

&lt;p&gt;So if your reading interest falls in the intersection of these sets, do carry on reading and make yourself known with a clap or comment.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;&amp;gt; What’s all the hype with Alibaba?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I’m sure you’ve had Alibaba frequently popping up in your feed. It’s a hot topic, covered often in both &lt;a href="https://www.forbes.com/sites/kenrapoza/2018/11/13/alibabas-singles-day-sales-record-a-symbol-of-an-unstoppable-china/#6597c702cd16"&gt;business&lt;/a&gt; and &lt;a href="https://interestingengineering.com/why-chinese-artificial-intelligence-will-run-the-world"&gt;technology&lt;/a&gt; news.&lt;/p&gt;

&lt;p&gt;Alibaba is China’s online shopping giant that is often &lt;a href="https://www.verdict.co.uk/amazon-alibaba-bigger-company/"&gt;compared&lt;/a&gt; to Amazon. Just as Amazon has a cloud computing business with AWS, so does Alibaba.&lt;/p&gt;

&lt;p&gt;While AWS is the more established player with the largest market share and estimated revenues of &lt;strong&gt;$17bn&lt;/strong&gt; last year, it is the rapid &lt;em&gt;growth rate&lt;/em&gt; of Alibaba that is actually making people take notice:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“In 2016 the cloud-computing business of the Chinese e-commerce behemoth grew by 126%, to $675m. Growth is unlikely to slow soon.” — &lt;/em&gt;&lt;a href="https://www.economist.com/business/2018/01/18/chinese-tech-companies-plan-to-steal-american-cloud-firms-thunder"&gt;&lt;em&gt;The Economist&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Alibaba Cloud growing like gangbusters, but still far behind AWS and other market leaders.” — &lt;/em&gt;&lt;a href="https://techcrunch.com/2018/02/06/alibaba-cloud-growing-like-gangbusters-but-still-far-behind-aws-and-other-market-leaders/?guccounter=1"&gt;&lt;em&gt;Techcrunch&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So it’s all about where Alibaba is projected to be in a few years, not necessarily where they are today.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;&amp;gt; Alibaba Cloud Launches London, UK Region&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Last month Alibaba added to its global network of data centres with a UK “Region” to some fanfare:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.alibabacloud.com/event/london-2018"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Lyrj2K3w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2ARERnQPj2wcJ9tbgNckfajA.png" alt=""&gt;&lt;/a&gt;Alibaba UK Region Launch&lt;/p&gt;

&lt;p&gt;A London location launch means they are courting UK businesses in sectors such as public and financial services, where “&lt;a href="https://www.theregister.co.uk/2018/10/22/alibaba_london_cloud/"&gt;data localisation&lt;/a&gt;” matters. It is also the kind of event that in the current political climate gets inevitably co-opted to mean something more:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“It will be seen as a pre-Brexit vote of confidence in the strength of the UK tech industry which has worried about levels of investment in the run up to leaving the European Union.” — &lt;/em&gt;&lt;a href="https://www.zdnet.com/article/alibaba-cloud-adds-two-new-london-data-centers/"&gt;&lt;em&gt;ZDNet&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Yay or Nay for Brexit?&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;I found it interesting that while the new region is outwardly called “UK (London)” like so:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6wp5N9uO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A5lGL6Iw8nWKg90FYUKJ82A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6wp5N9uO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A5lGL6Iw8nWKg90FYUKJ82A.png" alt=""&gt;&lt;/a&gt;Alibaba EU and UK Regions&lt;/p&gt;

&lt;p&gt;The reality is that under the covers, you can tell that Alibaba saw the UK as an extension of their presence in the EU, with the “ID” of this new UK region being exposed in various places as &lt;strong&gt;EU-West-1&lt;/strong&gt; :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xULgrFZL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AY-f5FmQw3mf-qN0GA7KGvQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xULgrFZL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AY-f5FmQw3mf-qN0GA7KGvQ.png" alt=""&gt;&lt;/a&gt;“UK” or is it “EU-West-1”?&lt;/p&gt;

&lt;p&gt;With the only other region in the EU being Frankfurt, added 2 years ago, it is obvious that this new UK region is more likely the continuation of long laid plans and not a new investment decision taken following the referendum.&lt;/p&gt;

&lt;p&gt;Now that’s enough of Brexit talk… Moving on…&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;&amp;gt; How can we fairly compare Alibaba Cloud with the big three? (AWS, Azure and Google)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Earlier this year I built a demo to describe a way of enabling &lt;a href="https://solace.com/blog/use-cases/first-step-enabling-cloud-arbitrage"&gt;Multi-Cloud Arbitrage&lt;/a&gt; for applications. The idea is to build and deploy applications on an &lt;a href="https://solace.com/blog/event-mesh"&gt;event-mesh architecture layer&lt;/a&gt; that allows them to move easily between different cloud providers. Then based on various ‘arbitrage’ factors such as the cost of compute, actual running performance of your application, or even idle CPU capacity on existing provisioned machines, you dynamically move your application to take advantage of those differences across the providers in real-time.&lt;/p&gt;

&lt;p&gt;Avoiding “cloud lock-in” and being multi-cloud ready is key to achieving this kind of arbitrage potential and maintaining freedom of choice. This growing desire by enterprises to achieve multi-cloud readiness can also explain IBM’s $34 Billion acquisition of Red Hat:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The thing about IBM is, we’ve been around long enough to know this is a multi-cloud world.” (Ginni Rometty, IBM CEO) — &lt;/em&gt;&lt;a href="https://uk.reuters.com/article/uk-red-hat-m-a-ibm/red-hat-jumps-ibm-shares-dip-on-cloud-mega-merger-idUKKCN1N20N5"&gt;&lt;em&gt;Reuters&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;a href="http://london.solace.com/multi-cloud/arbitrage.html"&gt;live demo&lt;/a&gt; itself works by deploying:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://solace.com/products/software"&gt;Solace PubSub+ Brokers&lt;/a&gt; across three regions within AWS, Azure and Google, taking care of inter-application communication in an ‘any-cloud, any-region’ &lt;a href="https://solace.com/what-is-an-event-mesh"&gt;event-mesh&lt;/a&gt; architecture.&lt;/li&gt;
&lt;li&gt;An identical Java application on a “burstable” virtual machine type in the same regions of each cloud.&lt;/li&gt;
&lt;li&gt;Finally, a single Java application running “on prem” in a London data centre.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The on-prem application sends request messages that are delivered identically to all the applications running within the three clouds, for which they all process the request and respond back individually.&lt;/p&gt;

&lt;p&gt;This setup allows the on-prem application to calculate how long each responding application took (i.e. the ‘latency’ in milliseconds) to process the request and send the response. In effect, determining a “holistic performance” of the responding application that can be compared with its peer in the same region, but running in a different cloud provider. A ranking can then be determined on which application (running in either AWS, Azure or Google) came back first.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Show me the money.&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;An example result with this multi-cloud and multi-region setup visually depicted can be found below:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://london.solace.com/multi-cloud/arbitrage.html"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---JsXGaAt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/870/1%2ALQNn7RtfzhZP2c25Ru7MoQ.png" alt=""&gt;&lt;/a&gt;Example Result of Multi-Cloud Arbitrage Demo — 13th Nov 2018 04:49:45 GMT&lt;/p&gt;

&lt;p&gt;The ability to deploy the above applications to identical machine sizes, operating systems, and geographical locations in &lt;a href="https://www.alibabacloud.com/"&gt;Alibaba Cloud&lt;/a&gt; to match what I have already in &lt;a href="https://aws.amazon.com/"&gt;AWS&lt;/a&gt;, &lt;a href="https://azure.microsoft.com/"&gt;Azure&lt;/a&gt; and &lt;a href="https://cloud.google.com/"&gt;Google&lt;/a&gt; is the first test of maturity and ease of use in this comparison.&lt;/p&gt;

&lt;p&gt;Secondly, I can see how the actual application results compare across the 4 cloud providers and whether there are any interesting findings there.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Just deploy it already!&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Turns out that deploying the Java application and Solace PubSub+ Broker to Alibaba Cloud was fairly simple. The equivalent virtual machine types and regions selected across the four clouds are available to review below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I2fDxHHv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AQjw8X935lXj8xJJa8UrQtw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I2fDxHHv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AQjw8X935lXj8xJJa8UrQtw.png" alt=""&gt;&lt;/a&gt;Equivalent Virtual Machine Size and Region Selections (AWS, Azure, Google and Alibaba)&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;&amp;gt; The Internet has a personality too…&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The result for Alibaba in the UK was showing approximately 73 milliseconds for the response to arrive back to the Solace on-prem data centre. This latency number is very odd as it’s comparable to the latency of responses received from the US region in the other three clouds — so my initial thinking was that I must have deployed the “UK” virtual machine for Alibaba in the wrong place!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2B_T8vrT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/658/1%2Aqj_XSyYqQspWo3OIBBfA9A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2B_T8vrT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/658/1%2Aqj_XSyYqQspWo3OIBBfA9A.png" alt=""&gt;&lt;/a&gt;Unusually high latency result for the newly deployed Alibaba UK Region&lt;/p&gt;

&lt;p&gt;To understand this result, it was time to break out the go-to tool for any network troubleshooting: &lt;a href="https://en.wikipedia.org/wiki/Traceroute"&gt;traceroute&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;(For those who are unfamiliar with it, traceroute allows you to see all the hops that make up the total route of your network traffic between your own IP address and the target IP address. )&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;London to London, the scenic route.&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z1U_OuDZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AoixwOel6vTz36MbaUjA3EA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z1U_OuDZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AoixwOel6vTz36MbaUjA3EA.png" alt=""&gt;&lt;/a&gt;Results from the traceroute troubleshooting tool.&lt;/p&gt;

&lt;p&gt;The traceroute results showed that our Internet Service Provider (ISP) was indeed sending the data to the United States first, for it to use an Internet Peering Exchange located in &lt;a href="http://www.nyiix.net/members/#location2"&gt;New York&lt;/a&gt;, to eventually get to the Alibaba network via the ISP: “&lt;a href="https://wq.apnic.net/static/search.html?query=223.118.0.0"&gt;China Mobile International Limited&lt;/a&gt;”.&lt;/p&gt;

&lt;p&gt;What was even more puzzling is that a similar traceroute test to the same Alibaba London server using a different Internet connection from London &lt;strong&gt;did not&lt;/strong&gt; show the same high latency.&lt;/p&gt;

&lt;p&gt;All this shone a bright light into the interesting world of Internet traffic routing across different ISPs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fely-ht2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AcOfQhkkQzWWF6Hz_6rtxjg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fely-ht2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AcOfQhkkQzWWF6Hz_6rtxjg.png" alt=""&gt;&lt;/a&gt;Explanation of result from UK ISP used by Solace&lt;/p&gt;

&lt;p&gt;Put simply, as the Internet is really a network of networks, ‘peering agreements’ between these different networks controls how data may pass from one to another. Individual ISPs will have numerous agreements with other ISPs and large organisations with the aim of eventually reaching all parts of the Internet in an optimal manner.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Show me the way to Ali…baba.&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;When the ISP used by Solace in London is trying to figure out “How do I send data to this Alibaba IP address?”, the result is “China Mobile knows how to get there, and I am peered with China Mobile in New York, so will hand it over to them there.”&lt;/p&gt;

&lt;p&gt;If you want to understand this space in more detail, a good write-up is &lt;a href="https://aws.amazon.com/blogs/architecture/internet-routing-and-traffic-engineering/"&gt;here&lt;/a&gt;. If you want to learn more about just how peculiar Internet routing can be, read about the time a single ISP in Pakistan took out YouTube for most of the world &lt;a href="https://www.wired.com/2008/02/pakistans-accid/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Keeping an eye on the mileage.&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;This experience does raise an important point though: If &lt;strong&gt;data locality&lt;/strong&gt; matters to you, just selecting to use a cloud service in a given country is not the full picture. Unless you are an enterprise that is purchasing &lt;a href="https://www.colt.net/product/dedicated-cloud-access/"&gt;private network circuits&lt;/a&gt; from your own data centre to the cloud provider, double-check just how the traffic over the Internet is travelling for you and your end-users to those services.&lt;/p&gt;

&lt;p&gt;A service you think is hosted in the UK may as well be in a different country as far as network connectivity and user experience is concerned…&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;&amp;gt; So how does Alibaba compare?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;After working with Alibaba Cloud Support and our own ISP to resolve this issue of &lt;a href="https://www.peeringdb.com/ix/18"&gt;peering in London&lt;/a&gt;, we can finally look at results on a fair footing.&lt;/p&gt;

&lt;p&gt;The best way to do this is through the three historical graphs (on the demo page) that are a rolling window on a per-region basis on what order the application responses arrived.&lt;/p&gt;

&lt;p&gt;If you imagine a closely-run long-distance race, like the &lt;a href="https://www.youtube.com/watch?v=C93qwVmBseE"&gt;Men’s 5000 metres&lt;/a&gt; from the London 2012 Olympics, you’ll notice that even though Mo Farrah won Gold, his position throughout the race varied greatly:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pan3WPnj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/587/1%2AIe8WV-CMU480uVcuQTHYOg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pan3WPnj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/587/1%2AIe8WV-CMU480uVcuQTHYOg.gif" alt=""&gt;&lt;/a&gt;Tracking Gold Medal Winner Mo Farrah’s position through the 5000m race in the 2012 Olympics&lt;/p&gt;

&lt;p&gt;Those graphs can be thought of as the continuous position tracker of four runners, in a race that never ends.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Ladies and Gentlemen, place your bets.&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;In this contrived demonstration of applications being deployed across on-prem and multiple clouds, and only the fastest response being of interest, you can visually see that at present there is a lot of competition between the four players for responses from the UK and US.&lt;/p&gt;

&lt;p&gt;In the UK, responses from AWS and Google are closely vying for the top position. Alibaba and Azure are then in close competition to determine the third and fourth place.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://london.solace.com/multi-cloud/arbitrage.html"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ANmVJBFC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1014/1%2A4nayrCMHW3Q8BljLFHFcJQ.png" alt=""&gt;&lt;/a&gt;Application response arrival tracker — 4th December 2018, 16:35 GMT.&lt;/p&gt;

&lt;p&gt;For responses from the applications in the US region, Google responses are predominantly in first place at this point in time. Then there is a lot of competition between AWS, Azure and Alibaba for the remaining positions.&lt;/p&gt;

&lt;p&gt;In contrast the results for the Singapore region look very calm and serene when reviewed graphically like this. The positions in the race are very set and not showing a lot of movement. While Google Cloud was often the front runner for the earlier two regions, it is in firm fourth place here.&lt;/p&gt;

&lt;p&gt;Alibaba Cloud responses are in third place, trailing behind AWS and Azure.&lt;/p&gt;

&lt;p&gt;In summary, no single cloud provider is a clear winner when seen holistically across the three regions. It is also not a surprise that while the newcomer Alibaba Cloud is not taking any top positions yet in these particular results, the competition is indeed fierce for the second or third arrival position. — An apt metaphor of Alibaba’s real-world position perhaps.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;&amp;gt; To conclude…&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;With cloud computing, this is a race with the players expected to change positions throughout as circumstances and capabilities change.&lt;/p&gt;

&lt;p&gt;The only real course of action is to pick your favorite runner with the data you have available up to that point in time. Then as things inevitably change, just be ready to quickly pick your new favorite!&lt;/p&gt;

&lt;p&gt;That is the essence of &lt;strong&gt;multi-cloud arbitrage&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy evaluating!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://dilbert.com/strip/2009-11-18"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oNhLiUB---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AnAVFMPE4lfmRY9bcQE0lAw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>gcp</category>
      <category>alibaba</category>
      <category>alibabacloud</category>
    </item>
    <item>
      <title>Comparing Machine Learning through BBC News Analysis</title>
      <dc:creator>Jamil Ahmed</dc:creator>
      <pubDate>Wed, 21 Nov 2018 07:01:02 +0000</pubDate>
      <link>https://dev.to/solacedevs/comparing-machine-learning-through-bbc-news-analysis-38fa</link>
      <guid>https://dev.to/solacedevs/comparing-machine-learning-through-bbc-news-analysis-38fa</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oa15pTAU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/958/1%2AWPc5z0dYSx0tkxU54FRHrg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oa15pTAU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/958/1%2AWPc5z0dYSx0tkxU54FRHrg.png" alt=""&gt;&lt;/a&gt;Comparing two Cloud-based Machine Learning capabilities: Image Analysis and Sentiment Analysis&lt;/p&gt;

&lt;p&gt;Leveraging Machine Learning (or Artificial Intelligence) capabilities for your application is easier than it ever has been. The major cloud computing providers offer these capabilities in an easy to consume manner, so you can start building applications quickly.&lt;/p&gt;

&lt;p&gt;However, did you know the actual results across the providers can vary greatly?&lt;/p&gt;

&lt;p&gt;I decided to build a demo application that uses two Machine Learning capabilities to analyse BBC News articles and compare results across the big three cloud providers: Amazon’s &lt;a href="https://aws.amazon.com/"&gt;AWS&lt;/a&gt;, Microsoft’s &lt;a href="https://azure.microsoft.com/"&gt;Azure&lt;/a&gt; and Google’s &lt;a href="https://cloud.google.com/"&gt;Cloud Platform&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can try the application yourself &lt;a href="http://london.solace.com/cloud-analytics/machine-learning.html"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Machine Learning?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Machine_learning"&gt;Machine Learning&lt;/a&gt; (ML) is a branch of &lt;a href="https://en.wikipedia.org/wiki/Artificial_intelligence"&gt;Artificial Intelligence&lt;/a&gt; (AI), although often the terms are used interchangeably. It describes the ability of computers to “ &lt;a href="https://www.sas.com/en_gb/insights/analytics/machine-learning.html"&gt;learn&lt;/a&gt;” how to perform an action, without being explicitly told how to do it, as would have been the case for computers in the past. It is unlocking a whole range of new possibilities. I came across &lt;a href="https://www.economist.com/news/special-report/21739431-artificial-intelligence-spreading-beyond-technology-sector-big-consequences"&gt;this&lt;/a&gt; description recently that summed up very well this step-change in computing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Computers have been able to read text and numbers for decades, but have only recently learned to see, hear and speak.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For my demo application I focused on two ML capabilities: &lt;a href="https://en.wikipedia.org/wiki/Image_analysis"&gt;&lt;strong&gt;Image Analysis&lt;/strong&gt;&lt;/a&gt; (a.k.a Computer Vision) and &lt;a href="https://en.wikipedia.org/wiki/Sentiment_analysis"&gt;&lt;strong&gt;Sentiment Analysis&lt;/strong&gt;&lt;/a&gt; (a.k.a Natural Language Processing).&lt;/p&gt;

&lt;h4&gt;
  
  
  What is Image Analysis?
&lt;/h4&gt;

&lt;p&gt;Going back to the earlier quote, put simply, Image Analysis is the capability for computers to now “see”. More concretely, this ‘Computer Vision’ is how faces can be detected within photos. Or it is how a Self-Driving Car may continually &lt;a href="https://www.technologyreview.com/s/539841/one-camera-is-all-this-self-driving-car-needs/"&gt;process&lt;/a&gt; it’s surroundings to detect the pedestrian crossing the road ahead.&lt;/p&gt;

&lt;p&gt;In my application I use this capability to produce ‘labels’ to annotate the central photo that is accompanying the BBC News article. In effect, describe the contents of the photo if you could not see it.&lt;/p&gt;

&lt;h4&gt;
  
  
  What is Sentiment Analysis?
&lt;/h4&gt;

&lt;p&gt;Sentiment Analysis is simply categorising a piece of writing on whether it is positive, neutral or negative in its content. An example use would be an application automatically processing product feedback left by a user and flagging it for follow-up if it seems negative. A marketing department may also wish to monitor live tweets and have it’s team intervene if there are negative tweets affecting their brand.&lt;/p&gt;

&lt;p&gt;In financial services, political and business news can move markets, so sentiment analysis of live news may be an input into automated trading engines that respond to world events in real-time.&lt;/p&gt;

&lt;p&gt;In my application I use this capability to ‘read’ the headline and description of the BBC News article and provide it’s sentiment. In other words, is the news about a positive event, neutral or negative?&lt;/p&gt;

&lt;h3&gt;
  
  
  Observations so far…
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Not All Machines Are Created Equal
&lt;/h4&gt;

&lt;p&gt;As mentioned in the beginning, I was surprised to see the differences in results across the three providers. Below is an example result where it was not unanimous between them on what the article sentiment is:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u1BuRnL9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2ABRDpNEl0zwwRr98v" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u1BuRnL9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2ABRDpNEl0zwwRr98v" alt=""&gt;&lt;/a&gt;An example of an inconsistent ML result across the three providers.&lt;/p&gt;

&lt;p&gt;As humans, it is quite clear to us that this is a sad and distressing piece of news, yet Google’s &lt;a href="https://cloud.google.com/natural-language/"&gt;Natural Language&lt;/a&gt; service deemed it positive in sentiment. In fact the score is 0.9 where 1.0 would represent the maximum for a positive sentiment. It is surprising why words such as “fresh fighting”, “growing violence” and “conflict” have not led it firmly into the negative sentiment territory. Azure’s &lt;a href="https://azure.microsoft.com/en-us/services/cognitive-services/text-analytics/"&gt;Text Analytics&lt;/a&gt; did the best in this example.&lt;/p&gt;

&lt;p&gt;The neutral sentiment determined by AWS’s &lt;a href="https://aws.amazon.com/comprehend/"&gt;Comprehend&lt;/a&gt; is also worth highlighting here. That service seems to often play it safe with a ‘on-the-fence’ assessment of ‘neutral’ being its dominant stance:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2D1DZTHM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2AnO_CaN6L9DoajfRQ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2D1DZTHM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2AnO_CaN6L9DoajfRQ" alt=""&gt;&lt;/a&gt;An example of AWS alone providing an outlier result.&lt;/p&gt;

&lt;p&gt;On a more happier note, it does seem quite universal though that everyone loves the news of a new Royal Baby:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oRoxKt9y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2Aqi1AUrx2-g9IMzKM" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oRoxKt9y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2Aqi1AUrx2-g9IMzKM" alt=""&gt;&lt;/a&gt;An example of a unanimously agreed result.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Picture Paints How Many Words? Well I’ll Tell You…
&lt;/h3&gt;

&lt;p&gt;As you’ve probably noticed, the previous three examples also show quite a difference in the Image Analysis capability too.&lt;/p&gt;

&lt;p&gt;The trend appears to be AWS’s &lt;a href="https://aws.amazon.com/rekognition/"&gt;Rekognition&lt;/a&gt; yielding many more labels per image compared to Azure’s &lt;a href="https://azure.microsoft.com/en-us/services/cognitive-services/computer-vision/"&gt;Computer Vision&lt;/a&gt; and Google’s &lt;a href="https://cloud.google.com/vision/"&gt;Vision&lt;/a&gt; services. A quick scan also shows most of the labels to be relevant to the image too. In fact compared to its ‘on-the-fence’ approach to Sentiment Analysis, the Image Analysis capability is a lot more aggressive and offers up more ‘inferred’ labels that are likely to be associated to the image.&lt;/p&gt;

&lt;p&gt;For example, the Royal Baby &lt;a href="http://www.bbc.co.uk/news/uk-43876299"&gt;article&lt;/a&gt; has an image of the Royal Horse Artillery firing a 41-gun salute. While just the fired gun, smoke plume, and 3 service personnel are seen, it produced a whopping 27 labels for the image:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;“Human, People, Person, Cannon, Weaponry, Smoke,&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;Airport,&lt;/em&gt; &lt;strong&gt;&lt;em&gt;Weapon,Airfield,&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;Engine, Locomotive, Machine, Motor, Steam Engine, Train, Transportation, Vehicle, Aircraft, Airplane, Jet,&lt;/em&gt; &lt;strong&gt;&lt;em&gt;Military, Army, Military Uniform, Soldier, Team, Troop,&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;Warplane”.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Azure and Google seem to be more comparable with each other in that a lesser number of (more focused?) labels are produced. That is, if the service is not completely stumped and produces nothing, as Azure did here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aUdO840g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2AUpxb1zGFCcgvZuCG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aUdO840g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2AUpxb1zGFCcgvZuCG" alt=""&gt;&lt;/a&gt;An example result of Azure being an outlier with zero labels produced.&lt;/p&gt;

&lt;h3&gt;
  
  
  To Conclude…
&lt;/h3&gt;

&lt;p&gt;This was a very high-level summary of my findings so far. It is in no way a comprehensive review. The demo application is available for you to submit your article choices for analysis and better form your conclusions:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://london.solace.com/cloud-analytics/machine-learning.html"&gt;&lt;strong&gt;http://london.solace.com/cloud-analytics/machine-learning.html&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As always, the correct selection of Machine Learning provider will come down to your own usage requirements. For instance, those requirements will determine if a verbose set of labels produced for an image is useful, or whether &lt;em&gt;less&lt;/em&gt; is actually more.&lt;/p&gt;

&lt;p&gt;One thing we can perhaps take from this is that Machine Learning has made great leaps forward, but we are a long way from &lt;a href="https://www.youtube.com/watch?v=7Pq-S557XQU"&gt;intelligent robots taking all our jobs&lt;/a&gt;! The systems still need a little &lt;a href="https://xkcd.com/1838/"&gt;more stirring&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TuGVy2zG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/742/0%2A1VXu3YqXG_CCObTl" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TuGVy2zG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/742/0%2A1VXu3YqXG_CCObTl" alt=""&gt;&lt;/a&gt;xkcd.com on Machine Learning&lt;/p&gt;

&lt;p&gt;Please do let me know what you thought. I have a program on standby to perform sentiment analysis of the comments on this post and automatically reply with the relevant emoji.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BU7QFmHS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/650/0%2AioDDrg_mh5zJScpi" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BU7QFmHS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/650/0%2AioDDrg_mh5zJScpi" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at&lt;/em&gt; &lt;a href="https://www.linkedin.com/pulse/comparing-machine-learning-through-bbc-news-analysis-jamil-ahmed/"&gt;&lt;em&gt;https://www.linkedin.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;  &lt;/p&gt;

</description>
      <category>gcp</category>
      <category>aws</category>
      <category>azure</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
