Every aspect of the API matters to some Client.
Jim des Rivieres, Evolving Eclipse APIs
It is fascinating that the quote above is 14 years old now. It was coined by the Benevolent Dictator of Eclipse APIs Jim des Rivieres in the days when we defined how Eclipse Platform APIs were to be designed and evolved. Of course, APIs in question were Java, not the REST variety that is ruling the API economy these days. Nevertheless, the key principles hardly changed.
Last week when I wrote about the switch to micro-services by SoundCloud, I noted that APIs are predominantly a public-facing concern in monolithic applications. There is no arms-length relationship between providers and consumers of functional units, enabling a low-ceremony evolution of the internal interfaces. They are the ‘authorized personal only’ rooms in a fancy restaurant – as long as the dining…
View original post 1,003 more words
Netflix is revamping the computing architecture that processes data for its streaming video service, according to a Netflix blog post that came out on Tuesday.
The [company]Netflix[/company] engineering team wanted an architecture that can handle three key areas the video-streaming giant believes greatly affects the user experience: knowing what titles a person has watched; knowing where in a given title did a person stop watching; and knowing what else is being watched on someone’s account, which is helpful for family members who may be sharing one account.
Although Netflix’s current architecture allows the company to handle all of these tasks, and the company built a distributed stateful system (meaning that the system keeps track of all user interaction and video watching and can react to any of those changes on the fly) to handle the activity, Netflix “ended up with a complex solution that was less robust than mature open source…
View original post 409 more words
This blog is the first in a series of postings that will provide a deep dive into the design of a Multi-Cloud architecture supporting the management of Micro-Services running on multiple cloud environments. We built a distributed application that uses CloudFoundry APIs to manage different cloud environments running CloudFoundry as a PaaS hosting multiple applications and micro-services. The video below demonstrates the capabilities of a Multi-Cloud controller application that uses this architecture. Subsequent discussions will explain in detail how the different features demonstrated work and how software developers can use the same CloudFoundry APIs to accomplish similar tasks.
CloudFoundry is an open source Platform as a Service (PaaS) that provides a polyglot environment for running cloud agnostic distributed systems. As depicted below, applications run as micro-services within kernel containers on top of the CloudFoundry PaaS. The applications consume resources from the underlying Infrastructure as a Service (IaaS, i.e. AWS, OpenStack, VMWare, etc.) thru the provisioning capabilities of CloudFoundry. That is, CloudFoundry calls IaaS services to…
View original post 267 more words
Democratizing Recommendation Technology
At Graphflow, our mission is to empower online stores of all sizes to grow their businesses by providing them access to the same machine learning and Big Data tools used by the largest and most sophisticated tech players in the market.
To deliver on this mission, we decided from the very beginning to go ‘all in’ on Spark for our scalable analytics and machine learning applications. When Graphflow started using Spark, it was on version 0.7.0, and it was relatively immature. A lot has changed over the past year and a half: Spark has become a top-level Apache project, version 1.2.0 was released, and Spark has matured significantly in terms of functionality, deployment, stability, and operations.
There are, however, still a few “missing pieces.” Among these are robust and easy-to-use monitoring systems…
View original post 722 more words
In part 1 and part 2 of this series, we looked at the benefits of the microservice architecture and showed how Spring Boot simplifies the development of microservices. We also built a couple of simple Spring Boot-based services for user registration: a web application and a RESTful backend service (github repo). In this article, we will look at how to deploy Spring Boot-based services with an exciting new technology called Docker.
Microservice deployment options
One of the neat things about Spring Boot is that it builds a self-contained, executable JAR file. We don’t need to install and correctly configure an application server. All that’s required is the appropriate version of Java. This means that you just need to tell whoever is responsible for deploying the application in production (or a QA environment) the JAR file along with the following information:
- What version of Java to install.
View original post 2,343 more words
Almost every interesting application uses at least one infrastructure service such as a database or a message broker. For example, if you tried to build and/or run the Spring Boot-based user registration service you would have discovered that it needs both MongoDB and RabbitMQ.
One option, of course, is to install both of those services on your machine. Unfortunately, installing a service is not always easy. Also, different projects might need different incompatible versions. Moreover, I’m not a fan of cluttering my machine with random services. Fortunately, there is a great way to solve this problem: Docker. You install Docker and use it to run the services that you need as containers.
Docker only directly runs on Linux so if you are using Mac OSX or Windows the first step is to install Boot2Docker (Mac OSX, Window). Boot2Docker installs the Docker command line locally but runs the Docker daemon in a Virtual Box…
View original post 313 more words