Microservices are a type of software architecture where large applications are made up of small, self-contained units working together through APIs that are not dependent on a specific language. Each service has a limited scope, concentrates on a particular task and is highly independent.

microservices

Service-oriented architecture (SOA) is a software design where components deliver services through a network protocol. SOA supports Web Services Definition Language (WSDL), which defines service end points rigidly and is strongly typed while microservices have dumb connections and smart end points. SOA is stateless; microservices are stateful and use object-oriented programming (OOP) structures that keep data and logic together.

Microservices handle HTTP request/response with APIs and messaging. They respond with JSON/XML or HTML sent to the presentation components. Microservices were seen as an easier solution than SOA, much like JSON was considered to be simpler than XML
and people viewed REST as simpler than SOAP.

Characteristics of micro services on different platforms:

  • Java

– Avoids using Web Archive or Enterprise Archive files
– Components are not auto-deployed. Instead, Docker containers or Amazon Machine
Images are auto-deployed.
– Uses fat jars that can be run as a process

  • PHP

REST-style PHP microservices have been deployed for several years now because they
are:
– Highly scalable at enterprise level
– Easy to test rapidly

  • Python

Easy to create a Python service that acts as a front-end web service for microservices in other languages such as ASP or PHP.
Lots of good frameworks to choose from, including Flask and Django.
Important to get the API right for fast prototyping.
Can use Pypy, Cython, C++ or Golang if more speed or efficiency is required.

  • Node.js

Node.js is a natural for microservices because it was made for modern web applications.
Its benefits include:
– Takes advantage of JavaScript and Google’s high-performance, open-source V8
engine.
– Machine code is optimized dynamically during runtime.
– HTTP server processes are lightweight.
– Nonblocking, event-driven I/O.
– High-quality package management.
– Easy for developers to create packages.
– Highly scalable with asynchronous I/O end-to-end.

References:

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s