Posts

Showing posts from August, 2018

Comparing VM's and Containers

Image
Both technologies are concerned with virtualization, both need a piece of software to run, both have images, both are concerned with operating systems. So what's the difference between the two? According to Wikipedia "virtualization" is "the act of creating a virtual (rather than actual) version of something" . Very vague indeed, let's explore further. VM A virtual machine ( VM ) is hardware virtualization, it is a virtual computer, complete with ram, hard disk, CPU resource allocation. A VM  can be just this virtual computer, however an operating system is usually installed making it usable. Once a VM has been created it can be exported into VM image. The VM obviously can have any other application installed as you can like any other computer. In an execution environment a  VM is a "guest machine", run via a hypervisor/virtual machine monitor (VMM) on a "host machine". There are types of hypervisors, bare-metal (type-1) and ho...

Comparing the execution model of Spring Boot, Akka and NodeJs

Image
There are many technologies to choose from for implementing a backend service and it's not immediately obvious which to choose. This article will compare the execution model of a few popular technologies, which is one of the key points to consider. Note I chose a rather vague term "technologies" as each technology describe themselves differently, framework, toolkit, runtime etc. "technologies" felt apt. To illustrate the differences I have implemented the same simple service in each of the technologies under consideration. These are Spring Boot 1.5.x  [1] , NodeJs  [2] , Spring Boot 2.x  [3] and Akka  [4] .The service contains a single '/books' endpoint that retrieves data from a Mongo DB. Spring Boot 1.5.x Spring Boot 1.5.x has one-thread-per-client-request execution module, synchronous and blocking. The following sequences of steps occur when the service  [1]  receives a client request `curl -X GET http://localhost:8080/boo...