Archive for January, 2015

Micro-service APIs With Some Swag (part 1)

January 30, 2015 Leave a comment

Dejan Glozic

London Cries: A Man Swaggering, Paul Sandby, 1730 London Cries: A Man Swaggering, Paul Sandby, 1730

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

Categories: Uncategorized

Hibernate locking patterns – How does Optimistic Lock Mode work

January 30, 2015 Leave a comment

Vlad Mihalcea

Explicit optimistic locking

In my previous post, I introduced the basic concepts of Java Persistence locking.

The implicit locking mechanism prevents lost updates and it’s suitable for entities that we can actively modify. While implicit optimistic locking is a widespread technique, few happen to understand the inner workings of explicit optimistic lock mode.

Explicit optimistic locking may prevent data integrity anomalies, when the locked entities are always modified by some external mechanism.

The product ordering use case

Let’s say we have the following domain model:


Our user, Alice, wants to order a product. The purchase goes through the following steps:


  • Alice loads a Product entity
  • Because the price is convenient, she decides to order the Product
  • the price Engine batch job changes the Product price (taking into consideration currency changes, tax changes and marketing campaigns)
  • Alice issues the Order without noticing the price change

Implicit locking shortcomings

First, we…

View original post 357 more words

Categories: Uncategorized

Netflix is revamping its data architecture for streaming movies

January 28, 2015 Leave a comment


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

Categories: Uncategorized

Managing Multi-Cloud Micro-Services with CloudFoundry APIs

January 27, 2015 Leave a comment

CloudFoundry Innovations

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

Categories: Uncategorized

Use Case: Spark Performance Monitoring

January 26, 2015 Leave a comment

Guest blog post by Nick Pentreath, Co-founder of Graphflow

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.

Spark Monitoring

There are, however, still a few “missing pieces.”  Among these are robust and easy-to-use monitoring systems

View original post 722 more words

Categories: Uncategorized

Deploying Spring Boot-based microservices with Docker – part 3

January 21, 2015 Leave a comment

plain old objects

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:

  1. What version of Java to install.
  2. What…

View original post 2,343 more words

Categories: Uncategorized

Need to install MongoDB, RabbitMQ, or MySQL? Use Docker to simplify dev and test

January 21, 2015 Leave a comment

plain old objects

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

Categories: Uncategorized