Service Fabric
(continued)
Part 2 compared Paxos
and Raft. Part 3 discussed
SF-Ring and Part 4 discussed its architecture. This article
describes its support for microservices.
Service
Fabric provides an infrastructure to build, deploy, and upgrade microservices
efficiently with options for auto scaling, managing state, monitoring health,
and restarting services in case of failure. It helps developers
and administrators to focus on the implementation of workloads that are
scalable, reliable, and manageable by avoiding the issues that are regularly
caused by complex infrastructures. The major benefits it provides include
deploying and evolving services at very low cost and high velocity, lowering
costs to changing business requirements, exploiting the widespread skills of developers,
and decoupling packaged applications from workflows and user interactions.
Service
Fabric follows an application model where an application is a collection of
microservices. The application is described in an application manifest file
that defines the different types of service contained in that application, and
pointers to the independent service packages. The application package also
usually contains parameters that serve as overrides for certain settings used
by the services. Each service package has a manifest file that describes the
physical files and folders that are necessary to run that service, including
binaries, configuration files, and read-only data for that service. Services
and applications are independently versioned and upgradable.
A
package can deploy more than one application but if one service fails to
upgrade, the entire application is rolled back. For this reason, the
microservices architecture is best served by multiple packages. If a set of
services share the same resources and configuration or have the same lifecycle,
then those services can be placed in the same application type.
Service
Fabric programming models can be chosen whether the services are stateful or
stateless.
Service
Fabric distinguishes itself with support for strong consistency and support for
stateful microservices. Each of the SF components offer strong consistency
behavior. There were two ways to do this: provide consistent – build consistent
applications on top of inconsistent components or use consistent components
from the grounds-up. The end-to-end principle dictates that if performance is
worth the cost for a functionality, then it can be built into the middle. If
consistency were instead to only be built at the application layer, each
distinct application would have significant costs for maintenance and
reliability. Instead, if the consistency is supported at each layer, it allows
higher layer design to focus on their relevant notion of consistency and allows
both weakly consistent applications and strongly consistent applications to be
built on top of Service Fabric. This is easier than building consistent
applications over an inconsistent substrate.
A stateless service
is chosen when it must scale, and the data or state can be stored
externally. There is also an option to
run an existing service as a guest executable and it can be packaged in a
container will all its dependencies. Service Fabric models are both container
and executable as stateless services.
An API gateway (ingress) sits between
external clients and the microservices and acts as a reverse proxy, routing
requests from clients to microservices. As an http proxy, it can handle authentication,
SSL termination, and rate limiting.
No comments:
Post a Comment