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.
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:
– 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
REST-style PHP microservices have been deployed for several years now because they
– Highly scalable at enterprise level
– Easy to test rapidly
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 is a natural for microservices because it was made for modern web applications.
Its benefits include:
– 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.