Why Service Fabric?
There are definitely a lot of reasons to consider Service Fabric. Surprisingly, they originate from multiple perspectives because Service Fabric is beneficial to IT Pros, Developers and above all else the business.
For the Business, Service Fabric means agility and business continuity. Usually, we choose agility first and find effective continuity to be out of reach. Whether it’s because of finances or because of technology, these business characteristics are hard get right. Service Fabric was built from the ground up to tackle these challenges. By leveraging this platform businesses benefit from features like replication, backup, restore and transactions, allowing them to focus on innovation. The increased collaboration between the business, IT Pros and developers fosters a DevOps culture that is required to fulfil the business’s SMART objectives. Service Fabric is a platform that supports these initiatives in a way that is scalable, reliable and highly available.
For developers, Service Fabric is a breath of fresh air, because Service Fabric dissociates the application from its infrastructure. This means that developers can focus on the business and bring value to customers at a faster pace. Spending a lot of time trying to solve complex infrastructure problems, is counter productive and can result in rigidity. Service Fabric offers two programming models that simplify code while still providing the advantages of scalability, high availability, integrity and reliability guarantees offered by Service Fabric.
For IT Pros, Service Fabric is a way to bring agility to resource management for mission-critical workloads. Through automation and tooling, it addresses the significant challenges in managing Internet-scale services built using microservices. Facilitating continuous improvement, Service Fabric can automatically rollback unhealthy deployments. It thereby reduces fear and uncertainty that can arise from high-impact deployments. Service Fabric allows code and application state to be independently versioned, deployed and scaled. Consequently, enabling scenarios like A/B-style testing, where users experience distinct versions of a service, Service Fabric helps businesses validate their initiatives and adjust to an ever-changing market.
- Highly available services: Service Fabric services provide fast failover by creating multiple secondary service replicas. If a Virtual Machine, process, or individual service goes down due to hardware or other failure, one of the secondary replicas is promoted to a primary replica with minimal loss of service
- Scalable services: Individual services can be partitioned, allowing for state to be scaled out across the cluster (Group of Virtual Machines). In addition, individual services can be created and removed on the fly. Services can be quickly and easily scaled out from a few instances on a few Virtual Machines to thousands of instances on many Virtual Machines, and then scaled down again, depending on your resource needs. You can use Service Fabric to build these services and manage their complete lifecycles
- Computation on nonstatic data: Service Fabric enables you to build data, input/output, and compute intensive stateful applications. Service Fabric allows the collocation of processing (computation) and data in applications. Normally, when your application requires access to data, there is network latency associated with an external data cache or storage tier. With stateful Service Fabric services, that latency is eliminated, enabling more performant reads and writes. Say for example that you have an application that performs near real-time recommendation selections for customers, with a round-trip time requirement of less than 100 milliseconds. The latency and performance characteristics of Service Fabric services (where the computation of recommendation selection is collocated with the data and rules) provides a responsive experience to the user compared with the standard implementation model of having to fetch the necessary data from remote storage
- Session-based interactive applications: Service Fabric is useful if your applications, such as online gaming or instant messaging, require low latency reads and writes. Service Fabric enables you to build these interactive, stateful applications without having to create a separate store or cache, as required for stateless apps. (This increases latency and potentially introduces consistency issues.)
- Distributed graph processing: The growth of social networks has greatly increased the need to analyze large-scale graphs in parallel. Fast scaling and parallel load processing make Service Fabric a natural platform for processing large-scale graphs. Service Fabric enables you to build highly scalable services for groups such as social networking, business intelligence, and scientific research.
- Data analytics and workflows: The fast reads and writes of Service Fabric enable applications that must reliably process events or streams of data. Service Fabric also enables applications that describe processing pipelines, where results must be reliable and passed on to the next processing stage without loss. These include transactional and financial systems, where data consistency and computation guarantees are essential.
What Does Service Fabric Look Like?
In a distributed system, the ability to securely communicate between nodes in a cluster is crucial. At the base of the stack is the transport subsystem, which provides secure communication between nodes. Above the transport subsystem lies the federation subsystem, which clusters the different nodes into a single entity (named clusters) so that Service Fabric can detect failures, perform leader election, and provide consistent routing. The reliability subsystem, layered on top of the federation subsystem, is responsible for the reliability of Service Fabric services through mechanisms such as replication, resource management, and failover. The federation subsystem also underlies the hosting and activation subsystem, which manages the lifecycle of an application on a single node. The management subsystem manages the lifecycle of applications and services. The testability subsystem helps application developers test their services through simulated faults before and after deploying applications and services to production environments. Service Fabric provides the ability to resolve service locations through its communication subsystem. The application programming models exposed to developers are layered on top of these subsystems along with the application model to enable tooling.