Alternatives to Finagle logo

Alternatives to Finagle

Finatra, gRPC, Akka, Spring Boot, and Play are the most popular alternatives and competitors to Finagle.
69
100
+ 1
10

What is Finagle and what are its top alternatives?

Finagle is a distributed systems programming framework that is used by companies like Twitter to build high-performance servers and clients. It provides asynchronous, composable, and protocol-agnostic RPC, as well as simple concurrency and connection management. However, one limitation of Finagle is that it has a learning curve due to its sophisticated design.

  1. Akka: Akka is a powerful toolkit and runtime for building highly concurrent, distributed, and resilient applications on the JVM. Key features include actor-based concurrency, fault tolerance, location transparency, and scalability. Pros include robust fault-handling mechanisms, while cons may include a steeper learning curve for beginners.
  2. gRPC: gRPC is a high-performance, open-source RPC framework developed by Google. It supports multiple programming languages and platforms, uses Protocol Buffers for serialization, and provides features like bi-directional streaming and authentication. Pros include efficient network communication, while cons may include limited language support compared to Finagle.
  3. Netty: Netty is a versatile networking framework that provides an asynchronous event-driven network application framework for rapid development of high-performance protocol servers and clients. Key features include a flexible and extensible API, efficient memory management, and support for various protocols. Pros include high-performance networking capabilities, while cons may include a more manual approach to building network applications.
  4. Vert.x: Vert.x is a toolkit for building reactive applications on the JVM that offers event-driven and non-blocking programming models. It supports polyglot development, reactive streams, and distributed event bus communication. Pros include seamless integration with various technologies, while cons may involve a complex setup process.
  5. RSocket: RSocket is a binary protocol for use on byte stream transports. It provides Reactive Streams semantics, multiplexed bidirectional communication, and resumption on connection. Pros include efficient use of resources, while cons may include less widespread adoption compared to Finagle.
  6. Spring Cloud: Spring Cloud provides tools for building distributed systems on the JVM. It offers features like service discovery, circuit breakers, and distributed tracing. Pros include seamless integration with Spring ecosystem, while cons may include a heavier dependency footprint compared to Finagle.
  7. Quasar: Quasar is a library that enables lightweight threads for the JVM that are capable of pausing and resuming. It supports reactive programming, async computations, and fine-grained concurrency control. Pros include efficient use of resources, while cons may involve potential compatibility issues with existing codebases.
  8. RabbitMQ: RabbitMQ is a widely-used message broker that supports multiple messaging protocols. It provides features like message queuing, routing, and clustering. Pros include robust messaging capabilities, while cons may include potential performance bottlenecks in high-throughput scenarios.
  9. Scribe: Scribe is a scalable and simple O(log(n)) API for aggregating streaming data for logging and monitoring purposes. It offers efficient log aggregation, dynamic configuration, and seamless integration with various data processing pipelines. Pros include simplicity and scalability, while cons may involve limited community support.
  10. Apache Thrift: Apache Thrift is a scalable, extensible, multi-language remote procedure call (RPC) framework. It supports efficient cross-language development and includes features like serialization, code generation, and transport plugins. Pros include broad language support, while cons may include potential complexity in managing a large codebase.

Top Alternatives to Finagle

  • Finatra
    Finatra

    At Twitter, Finagle provides the building blocks for most of the code written on the JVM. It has long-served as Twitter's extensible, protocol-agnostic, highly-scalable RPC framework. ...

  • gRPC
    gRPC

    gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking... ...

  • Akka
    Akka

    Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM. ...

  • Spring Boot
    Spring Boot

    Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration. ...

  • Play
    Play

    Play Framework makes it easy to build web applications with Java & Scala. Play is based on a lightweight, stateless, web-friendly architecture. Built on Akka, Play provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications. ...

  • Akka HTTP
    Akka HTTP

    The Akka HTTP modules implement a full server- and client-side HTTP stack on top of akka-actor and akka-stream. It’s not a web-framework but rather a more general toolkit for providing and consuming HTTP-based services. While interaction with a browser is of course also in scope it is not the primary focus of Akka HTTP. ...

  • RxJS
    RxJS

    RxJS is a library for reactive programming using Observables, to make it easier to compose asynchronous or callback-based code. This project is a rewrite of Reactive-Extensions/RxJS with better performance, better modularity, better debuggable call stacks, while staying mostly backwards compatible, with some breaking changes that reduce the API surface. ...

  • Netty
    Netty

    Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server. ...

Finagle alternatives & related posts

Finatra logo

Finatra

36
52
13
Fast, testable, Scala services built on TwitterServer and Finagle, by Twitter
36
52
+ 1
13
PROS OF FINATRA
  • 7
    Fast
  • 6
    Easy
CONS OF FINATRA
    Be the first to leave a con

    related Finatra posts

    gRPC logo

    gRPC

    2.1K
    1.3K
    63
    A high performance, open-source universal RPC framework
    2.1K
    1.3K
    + 1
    63
    PROS OF GRPC
    • 24
      Higth performance
    • 15
      The future of API
    • 13
      Easy setup
    • 5
      Contract-based
    • 4
      Polyglot
    • 2
      Garbage
    CONS OF GRPC
      Be the first to leave a con

      related gRPC posts

      Dylan Krupp
      Shared insights
      on
      gRPCgRPCGraphQLGraphQL

      I used GraphQL extensively at a previous employer a few years ago and really appreciated the data-driven schema etc alongside the many other benefits it provided. At that time, it seemed like it was set to replace RESTful APIs and many companies were adopting it.

      However, as of late, it seems like interest has been waning for GraphQL as opposed to increasing as I had assumed it would. Am I missing something here? What is the current perspective regarding this technology?

      Currently, I'm working with gRPC and was curious as to the state of everything now.

      See more
      Shared insights
      on
      gRPCgRPCSignalRSignalR.NET.NET

      We need to interact from several different Web applications (remote) to a client-side application (.exe in .NET Framework, Windows.Console under our controlled environment). From the web applications, we need to send and receive data and invoke methods to client-side .exe on javascript events like users onclick. SignalR is one of the .Net alternatives to do that, but it adds overhead for what we need. Is it better to add SignalR at both client-side application and remote web application, or use gRPC as it sounds lightest and is multilingual?

      SignalR or gRPC are always sending and receiving data on the client-side (from browser to .exe and back to browser). And web application is used for graphical visualization of data to the user. There is no need for local .exe to send or interact with remote web API. Which architecture or framework do you suggest to use in this case?

      See more
      Akka logo

      Akka

      1.1K
      1K
      88
      Build powerful concurrent & distributed applications more easily
      1.1K
      1K
      + 1
      88
      PROS OF AKKA
      • 32
        Great concurrency model
      • 17
        Fast
      • 12
        Actor Library
      • 10
        Open source
      • 7
        Resilient
      • 5
        Message driven
      • 5
        Scalable
      CONS OF AKKA
      • 3
        Mixing futures with Akka tell is difficult
      • 2
        Closing of futures
      • 2
        No type safety
      • 1
        Very difficult to refactor
      • 1
        Typed actors still not stable

      related Akka posts

      To solve the problem of scheduling and executing arbitrary tasks in its distributed infrastructure, PagerDuty created an open-source tool called Scheduler. Scheduler is written in Scala and uses Cassandra for task persistence. It also adds Apache Kafka to handle task queuing and partitioning, with Akka to structure the library’s concurrency.

      The service’s logic schedules a task by passing it to the Scheduler’s Scala API, which serializes the task metadata and enqueues it into Kafka. Scheduler then consumes the tasks, and posts them to Cassandra to prevent data loss.

      See more
      Shared insights
      on
      AkkaAkkaKafkaKafka

      I decided to use Akka instead of Kafka streams because I have personal relationships at @Lightbend.

      See more
      Spring Boot logo

      Spring Boot

      25.3K
      23K
      1K
      Create Spring-powered, production-grade applications and services with absolute minimum fuss
      25.3K
      23K
      + 1
      1K
      PROS OF SPRING BOOT
      • 149
        Powerful and handy
      • 134
        Easy setup
      • 128
        Java
      • 90
        Spring
      • 85
        Fast
      • 46
        Extensible
      • 37
        Lots of "off the shelf" functionalities
      • 32
        Cloud Solid
      • 26
        Caches well
      • 24
        Productive
      • 24
        Many receipes around for obscure features
      • 23
        Modular
      • 23
        Integrations with most other Java frameworks
      • 22
        Spring ecosystem is great
      • 21
        Auto-configuration
      • 21
        Fast Performance With Microservices
      • 18
        Community
      • 17
        Easy setup, Community Support, Solid for ERP apps
      • 15
        One-stop shop
      • 14
        Easy to parallelize
      • 14
        Cross-platform
      • 13
        Easy setup, good for build erp systems, well documented
      • 13
        Powerful 3rd party libraries and frameworks
      • 12
        Easy setup, Git Integration
      • 5
        It's so easier to start a project on spring
      • 4
        Kotlin
      • 1
        Microservice and Reactive Programming
      • 1
        The ability to integrate with the open source ecosystem
      CONS OF SPRING BOOT
      • 23
        Heavy weight
      • 18
        Annotation ceremony
      • 13
        Java
      • 11
        Many config files needed
      • 5
        Reactive
      • 4
        Excellent tools for cloud hosting, since 5.x
      • 1
        Java 😒😒

      related Spring Boot posts

      Praveen Mooli
      Engineering Manager at Taylor and Francis · | 18 upvotes · 3.8M views

      We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages. We also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.

      To build our #Backend capabilities we decided to use the following: 1. #Microservices - Java with Spring Boot , Node.js with ExpressJS and Python with Flask 2. #Eventsourcingframework - Amazon Kinesis , Amazon Kinesis Firehose , Amazon SNS , Amazon SQS, AWS Lambda 3. #Data - Amazon RDS , Amazon DynamoDB , Amazon S3 , MongoDB Atlas

      To build #Webapps we decided to use Angular 2 with RxJS

      #Devops - GitHub , Travis CI , Terraform , Docker , Serverless

      See more

      Is learning Spring and Spring Boot for web apps back-end development is still relevant in 2021? Feel free to share your views with comparison to Django/Node.js/ ExpressJS or other frameworks.

      Please share some good beginner resources to start learning about spring/spring boot framework to build the web apps.

      See more
      Play logo

      Play

      746
      604
      496
      The High Velocity Web Framework For Java and Scala
      746
      604
      + 1
      496
      PROS OF PLAY
      • 81
        Scala
      • 55
        Web-friendly architecture
      • 55
        Built on akka
      • 50
        Stateless
      • 47
        High-scalable
      • 46
        Fast
      • 40
        Open source
      • 34
        Java
      • 27
        High velocity
      • 24
        Fun
      • 9
        Lightweight
      • 8
        Non-blocking io
      • 6
        Developer friendly
      • 5
        Simple template engine
      • 4
        Scalability
      • 3
        Pure love
      • 2
        Resource efficient
      CONS OF PLAY
      • 3
        Evolves fast, keep up with releases
      • 1
        Unnecessarily complicated

      related Play posts

      Alex A

      Some may wonder why did we choose Grails ? Really good question :) We spent quite some time to evaluate what framework to go with and the battle was between Play Scala and Grails ( Groovy ). We have enough experience with both and, to be honest, I absolutely in love with Scala; however, the tipping point for us was the potential speed of development. Grails allows much faster development pace than Play , and as of right now this is the most important parameter. We might convert later though. Also, worth mentioning, by default Grails comes with Gradle as a build tool, so why change?

      See more
      Akka HTTP logo

      Akka HTTP

      50
      47
      0
      HTTP client and server built on Akka actors and streams
      50
      47
      + 1
      0
      PROS OF AKKA HTTP
        Be the first to leave a pro
        CONS OF AKKA HTTP
          Be the first to leave a con

          related Akka HTTP posts

          RxJS logo

          RxJS

          2K
          624
          21
          The Reactive Extensions for JavaScript
          2K
          624
          + 1
          21
          PROS OF RXJS
          • 6
            Easier async data chaining and combining
          • 3
            Steep learning curve, but offers predictable operations
          • 2
            Observable subjects
          • 2
            Ability to build your own stream
          • 2
            Works great with any state management implementation
          • 2
            Easier testing
          • 1
            Lot of build-in operators
          • 1
            Simplifies state management
          • 1
            Great for push based architecture
          • 1
            Documentation
          CONS OF RXJS
          • 3
            Steep learning curve

          related RxJS posts

          Netty logo

          Netty

          259
          408
          16
          Asynchronous event-driven network application framework
          259
          408
          + 1
          16
          PROS OF NETTY
          • 9
            High Performance
          • 4
            Easy to use
          • 3
            Just like it
          CONS OF NETTY
          • 2
            Limited resources to learn from

          related Netty posts