Alternatives to Akka logo

Alternatives to Akka

Spring, Scala, Erlang, Kafka, and Spring Boot are the most popular alternatives and competitors to Akka.
1.1K
1K
+ 1
88

What is Akka and what are its top alternatives?

Akka is a popular toolkit and runtime for building highly concurrent, distributed, and resilient applications on the JVM. It provides actors as the building blocks for creating concurrent applications, along with features like clustering, sharding, and supervision to handle faults in a distributed environment. Some key features of Akka include message-driven communication, scalability, and fault-tolerance. However, Akka can have a steep learning curve for beginners and may require a deep understanding of distributed systems concepts.

  1. Vert.x: Vert.x is a toolkit for building reactive applications on the JVM that provides a polyglot programming model and supports multiple languages like Java, Kotlin, Scala, and more. Key features include event-driven, non-blocking I/O, and a modular architecture. Pros: Highly performant, easily scalable, and provides comprehensive documentation. Cons: Can be challenging for developers unfamiliar with reactive programming concepts.
  2. Reactor: Reactor is a reactive programming library for building asynchronous, message-driven applications in Java. It offers a declarative API for composing reactive streams and supports backpressure to handle data flow efficiently. Pros: Easy integration with Spring Framework, excellent support for reactive streams, and strong community support. Cons: Steeper learning curve for developers transitioning from traditional imperative programming.
  3. Quasar: Quasar is a library that enables lightweight threads, known as fibers, in Java applications for high concurrency and parallelism. It leverages continuation-passing style (CPS) to avoid blocking I/O operations and provides a simple way to write concurrent code. Pros: Efficient use of resources, easy to integrate with existing Java projects, and improved performance compared to traditional threads. Cons: Limited ecosystem compared to other alternatives.
  4. Spring WebFlux: Spring WebFlux is a reactive web framework in the Spring ecosystem that allows developers to build reactive, non-blocking web applications in Java. It provides support for both reactive streams and WebSocket communication. Pros: Seamless integration with Spring Boot, extensive features for building reactive web applications, and strong community support. Cons: Limited support for legacy codebases not designed for reactive programming.
  5. Quarkus: Quarkus is a Kubernetes-native Java framework optimized for fast startup time and low memory consumption. It offers an extension system for adding various capabilities to applications, such as reactive programming, data persistence, and messaging. Pros: Efficient resource utilization, seamless integration with GraalVM for native image generation, and strong support for microservices architecture. Cons: Limited ecosystem compared to traditional Java frameworks.
  6. ReactiveX: ReactiveX is a library for composing asynchronous and event-based programs using observable sequences in various programming languages, including Java. It provides operators for transforming, combining, and querying asynchronous data streams. Pros: Multi-language support, rich set of operators for stream processing, and broad community adoption. Cons: Requires a shift in programming paradigm for developers accustomed to imperative programming.
  7. Play Framework: Play Framework is a web application framework for building reactive, non-blocking applications in Java and Scala. It follows a convention-over-configuration approach and provides features like hot code reloading, asynchronous I/O, and WebSocket support. Pros: High productivity for web development, integrated testing support, and seamless integration with Akka for building scalable applications. Cons: Learning curve for newcomers to reactive programming concepts.
  8. Micronaut: Micronaut is a modern, JVM-based framework designed for building microservices and serverless applications in Java, Kotlin, and Groovy. It offers ahead-of-time (AOT) compilation, dependency injection, and reactive programming capabilities. Pros: Fast startup time, reduced memory overhead, and efficient local development experience. Cons: Limited library support compared to established frameworks like Spring Boot.
  9. RxJava: RxJava is a reactive programming library for composing asynchronous and event-based programs using observable sequences in Java. It provides a wide range of operators for working with asynchronous data streams and managing concurrency. Pros: Comprehensive set of operators for reactive programming, strong support for backpressure, and seamless integration with other Rx libraries. Cons: Complex API documentation for new users.
  10. Loom: Project Loom is an upcoming feature in the OpenJDK project that aims to introduce lightweight, user-mode threads, known as fibers, to Java for better performance and concurrency. It promises to simplify concurrent programming by providing a familiar thread-based model with enhanced efficiency. Pros: Potential performance improvements over traditional threads, simplified concurrency model, and closer alignment with existing Java programming paradigms. Cons: Currently in development, limited production-ready tools and libraries available.

Top Alternatives to Akka

  • Spring
    Spring

    A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments. ...

  • Scala
    Scala

    Scala is an acronym for “Scalable Language”. This means that Scala grows with you. You can play with it by typing one-line expressions and observing the results. But you can also rely on it for large mission critical systems, as many companies, including Twitter, LinkedIn, or Intel do. To some, Scala feels like a scripting language. Its syntax is concise and low ceremony; its types get out of the way because the compiler can infer them. ...

  • Erlang
    Erlang

    Some of Erlang's uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system has built-in support for concurrency, distribution and fault tolerance. OTP is set of Erlang libraries and design principles providing middle-ware to develop these systems. ...

  • Kafka
    Kafka

    Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design. ...

  • 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. ...

  • Apache Spark
    Apache Spark

    Spark is a fast and general processing engine compatible with Hadoop data. It can run in Hadoop clusters through YARN or Spark's standalone mode, and it can process data in HDFS, HBase, Cassandra, Hive, and any Hadoop InputFormat. It is designed to perform both batch processing (similar to MapReduce) and new workloads like streaming, interactive queries, and machine learning. ...

  • Orleans
    Orleans

    Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud. ...

  • 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. ...

Akka alternatives & related posts

Spring logo

Spring

3.9K
4.7K
1.1K
Provides a comprehensive programming and configuration model for modern Java-based enterprise applications
3.9K
4.7K
+ 1
1.1K
PROS OF SPRING
  • 230
    Java
  • 157
    Open source
  • 136
    Great community
  • 123
    Very powerful
  • 114
    Enterprise
  • 64
    Lot of great subprojects
  • 60
    Easy setup
  • 44
    Convention , configuration, done
  • 40
    Standard
  • 31
    Love the logic
  • 13
    Good documentation
  • 11
    Dependency injection
  • 11
    Stability
  • 9
    MVC
  • 6
    Easy
  • 3
    Makes the hard stuff fun & the easy stuff automatic
  • 3
    Strong typing
  • 2
    Code maintenance
  • 2
    Best practices
  • 2
    Maven
  • 2
    Great Desgin
  • 2
    Easy Integration with Spring Security
  • 2
    Integrations with most other Java frameworks
  • 1
    Java has more support and more libraries
  • 1
    Supports vast databases
  • 1
    Large ecosystem with seamless integration
  • 1
    OracleDb integration
  • 1
    Live project
CONS OF SPRING
  • 15
    Draws you into its own ecosystem and bloat
  • 3
    Verbose configuration
  • 3
    Poor documentation
  • 3
    Java
  • 2
    Java is more verbose language in compare to python

related Spring posts

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

I am consulting for a company that wants to move its current CubeCart e-commerce site to another PHP based platform like PrestaShop or Magento. I was interested in alternatives that utilize Node.js as the primary platform. I currently don't know PHP, but I have done full stack dev with Java, Spring, Thymeleaf, etc.. I am just unsure that learning a set of technologies not commonly used makes sense. For example, in PrestaShop, I would need to work with JavaScript better and learn PHP, Twig, and Bootstrap. It seems more cumbersome than a Node JS system, where the language syntax stays the same for the full stack. I am looking for thoughts and advice on the relevance of PHP skillset into the future AND whether the Node based e-commerce open source options can compete with Magento or Prestashop.

See more
Scala logo

Scala

10.8K
7.7K
1.5K
A pure-bred object-oriented language that runs on the JVM
10.8K
7.7K
+ 1
1.5K
PROS OF SCALA
  • 187
    Static typing
  • 178
    Pattern-matching
  • 177
    Jvm
  • 172
    Scala is fun
  • 138
    Types
  • 95
    Concurrency
  • 88
    Actor library
  • 86
    Solve functional problems
  • 81
    Open source
  • 80
    Solve concurrency in a safer way
  • 44
    Functional
  • 24
    Fast
  • 23
    Generics
  • 18
    It makes me a better engineer
  • 17
    Syntactic sugar
  • 13
    Scalable
  • 10
    First-class functions
  • 10
    Type safety
  • 9
    Interactive REPL
  • 8
    Expressive
  • 7
    SBT
  • 6
    Case classes
  • 6
    Implicit parameters
  • 4
    Rapid and Safe Development using Functional Programming
  • 4
    JVM, OOP and Functional programming, and static typing
  • 4
    Object-oriented
  • 4
    Used by Twitter
  • 3
    Functional Proframming
  • 2
    Spark
  • 2
    Beautiful Code
  • 2
    Safety
  • 2
    Growing Community
  • 1
    DSL
  • 1
    Rich Static Types System and great Concurrency support
  • 1
    Naturally enforce high code quality
  • 1
    Akka Streams
  • 1
    Akka
  • 1
    Reactive Streams
  • 1
    Easy embedded DSLs
  • 1
    Mill build tool
  • 0
    Freedom to choose the right tools for a job
CONS OF SCALA
  • 11
    Slow compilation time
  • 7
    Multiple ropes and styles to hang your self
  • 6
    Too few developers available
  • 4
    Complicated subtyping
  • 2
    My coworkers using scala are racist against other stuff

related Scala posts

Shared insights
on
JavaJavaScalaScalaApache SparkApache Spark

I am new to Apache Spark and Scala both. I am basically a Java developer and have around 10 years of experience in Java.

I wish to work on some Machine learning or AI tech stacks. Please assist me in the tech stack and help make a clear Road Map. Any feedback is welcome.

Technologies apart from Scala and Spark are also welcome. Please note that the tools should be relevant to Machine Learning or Artificial Intelligence.

See more
Marc Bollinger
Infra & Data Eng Manager at Thumbtack · | 5 upvotes · 1.8M views

Lumosity is home to the world's largest cognitive training database, a responsibility we take seriously. For most of the company's history, our analysis of user behavior and training data has been powered by an event stream--first a simple Node.js pub/sub app, then a heavyweight Ruby app with stronger durability. Both supported decent throughput and latency, but they lacked some major features supported by existing open-source alternatives: replaying existing messages (also lacking in most message queue-based solutions), scaling out many different readers for the same stream, the ability to leverage existing solutions for reading and writing, and possibly most importantly: the ability to hire someone externally who already had expertise.

We ultimately migrated to Kafka in early- to mid-2016, citing both industry trends in companies we'd talked to with similar durability and throughput needs, the extremely strong documentation and community. We pored over Kyle Kingsbury's Jepsen post (https://aphyr.com/posts/293-jepsen-Kafka), as well as Jay Kreps' follow-up (http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafka-and-jepsen), talked at length with Confluent folks and community members, and still wound up running parallel systems for quite a long time, but ultimately, we've been very, very happy. Understanding the internals and proper levers takes some commitment, but it's taken very little maintenance once configured. Since then, the Confluent Platform community has grown and grown; we've gone from doing most development using custom Scala consumers and producers to being 60/40 Kafka Streams/Connects.

We originally looked into Storm / Heron , and we'd moved on from Redis pub/sub. Heron looks great, but we already had a programming model across services that was more akin to consuming a message consumers than required a topology of bolts, etc. Heron also had just come out while we were starting to migrate things, and the community momentum and direction of Kafka felt more substantial than the older Storm. If we were to start the process over again today, we might check out Pulsar , although the ecosystem is much younger.

To find out more, read our 2017 engineering blog post about the migration!

See more
Erlang logo

Erlang

1.3K
740
327
A programming language used to build massively scalable soft real-time systems with requirements on high availability
1.3K
740
+ 1
327
PROS OF ERLANG
  • 60
    Concurrency Support
  • 60
    Real time, distributed applications
  • 56
    Fault tolerance
  • 35
    Soft real-time
  • 31
    Open source
  • 21
    Functional programming
  • 20
    Message passing
  • 15
    Immutable data
  • 13
    Works as expected
  • 5
    Facebook chat uses it at backend
  • 4
    Practical
  • 4
    Knowledgeable community
  • 3
    Bullets included
CONS OF ERLANG
    Be the first to leave a con

    related Erlang posts

    Sebastian Gębski

    Another major decision was to adopt Elixir and Phoenix Framework - the DX (Developer eXperience) is pretty similar to what we know from RoR, but this tech is running on the top of rock-solid Erlang platform which is powering planet-scale telecom solutions for 20+ years. So we're getting pretty much the best from both worlds: minimum friction & smart conventions that eliminate the excessive boilerplate AND highly concurrent EVM (Erlang's Virtual Machine) that makes all the scalability problems vanish. The transition was very smooth - none of Ruby developers we had decided to leave because of Elixir. What is more, we kept recruiting Ruby developers w/o any requirement regarding Elixir proficiency & we still were able to educate them internally in almost no time. Obviously Elixir comes with some more tools in the stack: Credo , Hex , AppSignal (required to properly monitor BEAM apps).

    See more

    Hello everyone, I plan on building a platform that supports 100s of forums out of the box, it would give the user the ability to create forums, where other users can comment, post images, and videos (the size of videos would be limited). Each forum would have the ability to trend. I have been doing a lot of research and I have arrived at Golang and Erlang as the backend languages and PostgreSQL as the DB. Erlang would be used for the routing of chats and messages, while Go would be used to manage the forums. We would also be implementing a one on one chat system like WhatsApp chat, where users can add contacts.

    Please I would like to know if the languages picked are appropriate for this project. Suggestions would be appreciated.

    See more
    Kafka logo

    Kafka

    23.1K
    21.7K
    607
    Distributed, fault tolerant, high throughput pub-sub messaging system
    23.1K
    21.7K
    + 1
    607
    PROS OF KAFKA
    • 126
      High-throughput
    • 119
      Distributed
    • 92
      Scalable
    • 86
      High-Performance
    • 66
      Durable
    • 38
      Publish-Subscribe
    • 19
      Simple-to-use
    • 18
      Open source
    • 12
      Written in Scala and java. Runs on JVM
    • 9
      Message broker + Streaming system
    • 4
      KSQL
    • 4
      Avro schema integration
    • 4
      Robust
    • 3
      Suport Multiple clients
    • 2
      Extremely good parallelism constructs
    • 2
      Partioned, replayable log
    • 1
      Simple publisher / multi-subscriber model
    • 1
      Fun
    • 1
      Flexible
    CONS OF KAFKA
    • 32
      Non-Java clients are second-class citizens
    • 29
      Needs Zookeeper
    • 9
      Operational difficulties
    • 5
      Terrible Packaging

    related Kafka posts

    Nick Rockwell
    SVP, Engineering at Fastly · | 46 upvotes · 3.4M views

    When I joined NYT there was already broad dissatisfaction with the LAMP (Linux Apache HTTP Server MySQL PHP) Stack and the front end framework, in particular. So, I wasn't passing judgment on it. I mean, LAMP's fine, you can do good work in LAMP. It's a little dated at this point, but it's not ... I didn't want to rip it out for its own sake, but everyone else was like, "We don't like this, it's really inflexible." And I remember from being outside the company when that was called MIT FIVE when it had launched. And been observing it from the outside, and I was like, you guys took so long to do that and you did it so carefully, and yet you're not happy with your decisions. Why is that? That was more the impetus. If we're going to do this again, how are we going to do it in a way that we're gonna get a better result?

    So we're moving quickly away from LAMP, I would say. So, right now, the new front end is React based and using Apollo. And we've been in a long, protracted, gradual rollout of the core experiences.

    React is now talking to GraphQL as a primary API. There's a Node.js back end, to the front end, which is mainly for server-side rendering, as well.

    Behind there, the main repository for the GraphQL server is a big table repository, that we call Bodega because it's a convenience store. And that reads off of a Kafka pipeline.

    See more
    Ashish Singh
    Tech Lead, Big Data Platform at Pinterest · | 38 upvotes · 3M views

    To provide employees with the critical need of interactive querying, we’ve worked with Presto, an open-source distributed SQL query engine, over the years. Operating Presto at Pinterest’s scale has involved resolving quite a few challenges like, supporting deeply nested and huge thrift schemas, slow/ bad worker detection and remediation, auto-scaling cluster, graceful cluster shutdown and impersonation support for ldap authenticator.

    Our infrastructure is built on top of Amazon EC2 and we leverage Amazon S3 for storing our data. This separates compute and storage layers, and allows multiple compute clusters to share the S3 data.

    We have hundreds of petabytes of data and tens of thousands of Apache Hive tables. Our Presto clusters are comprised of a fleet of 450 r4.8xl EC2 instances. Presto clusters together have over 100 TBs of memory and 14K vcpu cores. Within Pinterest, we have close to more than 1,000 monthly active users (out of total 1,600+ Pinterest employees) using Presto, who run about 400K queries on these clusters per month.

    Each query submitted to Presto cluster is logged to a Kafka topic via Singer. Singer is a logging agent built at Pinterest and we talked about it in a previous post. Each query is logged when it is submitted and when it finishes. When a Presto cluster crashes, we will have query submitted events without corresponding query finished events. These events enable us to capture the effect of cluster crashes over time.

    Each Presto cluster at Pinterest has workers on a mix of dedicated AWS EC2 instances and Kubernetes pods. Kubernetes platform provides us with the capability to add and remove workers from a Presto cluster very quickly. The best-case latency on bringing up a new worker on Kubernetes is less than a minute. However, when the Kubernetes cluster itself is out of resources and needs to scale up, it can take up to ten minutes. Some other advantages of deploying on Kubernetes platform is that our Presto deployment becomes agnostic of cloud vendor, instance types, OS, etc.

    #BigData #AWS #DataScience #DataEngineering

    See more
    Spring Boot logo

    Spring Boot

    25.4K
    23.1K
    1K
    Create Spring-powered, production-grade applications and services with absolute minimum fuss
    25.4K
    23.1K
    + 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
    Apache Spark logo

    Apache Spark

    2.9K
    3.5K
    140
    Fast and general engine for large-scale data processing
    2.9K
    3.5K
    + 1
    140
    PROS OF APACHE SPARK
    • 61
      Open-source
    • 48
      Fast and Flexible
    • 8
      One platform for every big data problem
    • 8
      Great for distributed SQL like applications
    • 6
      Easy to install and to use
    • 3
      Works well for most Datascience usecases
    • 2
      Interactive Query
    • 2
      Machine learning libratimery, Streaming in real
    • 2
      In memory Computation
    CONS OF APACHE SPARK
    • 4
      Speed

    related Apache Spark posts

    Conor Myhrvold
    Tech Brand Mgr, Office of CTO at Uber · | 44 upvotes · 10.1M views

    How Uber developed the open source, end-to-end distributed tracing Jaeger , now a CNCF project:

    Distributed tracing is quickly becoming a must-have component in the tools that organizations use to monitor their complex, microservice-based architectures. At Uber, our open source distributed tracing system Jaeger saw large-scale internal adoption throughout 2016, integrated into hundreds of microservices and now recording thousands of traces every second.

    Here is the story of how we got here, from investigating off-the-shelf solutions like Zipkin, to why we switched from pull to push architecture, and how distributed tracing will continue to evolve:

    https://eng.uber.com/distributed-tracing/

    (GitHub Pages : https://www.jaegertracing.io/, GitHub: https://github.com/jaegertracing/jaeger)

    Bindings/Operator: Python Java Node.js Go C++ Kubernetes JavaScript OpenShift C# Apache Spark

    See more
    Eric Colson
    Chief Algorithms Officer at Stitch Fix · | 21 upvotes · 6.1M views

    The algorithms and data infrastructure at Stitch Fix is housed in #AWS. Data acquisition is split between events flowing through Kafka, and periodic snapshots of PostgreSQL DBs. We store data in an Amazon S3 based data warehouse. Apache Spark on Yarn is our tool of choice for data movement and #ETL. Because our storage layer (s3) is decoupled from our processing layer, we are able to scale our compute environment very elastically. We have several semi-permanent, autoscaling Yarn clusters running to serve our data processing needs. While the bulk of our compute infrastructure is dedicated to algorithmic processing, we also implemented Presto for adhoc queries and dashboards.

    Beyond data movement and ETL, most #ML centric jobs (e.g. model training and execution) run in a similarly elastic environment as containers running Python and R code on Amazon EC2 Container Service clusters. The execution of batch jobs on top of ECS is managed by Flotilla, a service we built in house and open sourced (see https://github.com/stitchfix/flotilla-os).

    At Stitch Fix, algorithmic integrations are pervasive across the business. We have dozens of data products actively integrated systems. That requires serving layer that is robust, agile, flexible, and allows for self-service. Models produced on Flotilla are packaged for deployment in production using Khan, another framework we've developed internally. Khan provides our data scientists the ability to quickly productionize those models they've developed with open source frameworks in Python 3 (e.g. PyTorch, sklearn), by automatically packaging them as Docker containers and deploying to Amazon ECS. This provides our data scientist a one-click method of getting from their algorithms to production. We then integrate those deployments into a service mesh, which allows us to A/B test various implementations in our product.

    For more info:

    #DataScience #DataStack #Data

    See more
    Orleans logo

    Orleans

    59
    126
    41
    An approach to building distributed applications in .NET
    59
    126
    + 1
    41
    PROS OF ORLEANS
    • 5
      Akka.net alternative
    • 5
      Async/Await
    • 4
      Open source
    • 4
      Distributed ACID Transactions
    • 4
      Scalable
    • 4
      Distributed high-scale computing applications
    • 4
      Virtual Actor Model
    • 3
      Objects
    • 3
      Cross Platform
    • 3
      Distributed Locking
    • 2
      Fast
    CONS OF ORLEANS
      Be the first to leave a con

      related Orleans posts

      Netty logo

      Netty

      260
      408
      16
      Asynchronous event-driven network application framework
      260
      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

      Joshua Dean Küpper
      CEO at Scrayos UG (haftungsbeschränkt) · | 6 upvotes · 2.1M views

      We use GraphQL for the communication between our Minecraft-Proxies/Load-Balancers and our global Minecraft-Orchestration-Service JCOverseer.

      This connection proved to be especially challenging, as there were so many available options and very specific requirements and we tried our hardest to put as little complexity into this interface as possible.

      Initially we considered designing our very own Netty based Packet-Protocol. While the performance of this approach probably would've been noteworthy, we would have had to write a lot of packets as the individual payloads would differ a lot and for the protocol specification a new project would've been needed, so we scrapped that idea.

      Our second idea was to use a combination of Redis Key/Value store (in particular the ability to write whole, complex sets as the values of keys) for existing data, Redis Pub-Sub for the synchronization of new/changed/deleted data and a Vert.x based REST API for the mutation requests of the clients. While this would certainly have been possible, we decided against it, as redis offers no real other data types than strings and typing was important to us.

      So we finally settled for GraphQL as it would allow us to define dynamic queries and mutations and additionally has subscriptions in store, so we would only need one component instead of three separate. The proxies register as subscribers to the server changes channel and fetch the current data set in advance. If they need to request changes, this is done through a mutation in GraphQL aswell.

      The status of the invidiual servers is fetched through Docker healthchecks and a Docker client in the orchestration service, that subscribes to changed HEALTHINESS values in docker. If a service becomes unhealthy it is unregistered and synchronized through GraphQL. The healthcheck is comparable to a ping packet that expects a response in a given time frame.

      See more