DEV Community

Cover image for Correct a Beginner About Buzzword Technologies

Correct a Beginner About Buzzword Technologies

Ben Lovy on January 04, 2020

Learning in Public As I keep learning, DEV knows things. Ask them stuff. In this post, I'm going to attempt to ELI5 some buzzword tool...
Collapse
 
elasticrash profile image
Stefanos Kouroupis • Edited

Kubernetes has way more capabilities than just an orchestrator for containers ...you can also for example handle multiple versions of an application targeting specific users (gradually releasing a new feature) docker compose works with swarm which is the docker alternative to kubernetes.

Cassandra is really powerful and it has an ingenious peer to peer system so as to add and sync nodes and you could even design a system where specific information exists in specific nodes at specific times. It is specifically designed for consistent writes.

Rabbit and Redis I think are dead on.

Collapse
 
xanderyzwich profile image
Corey McCarty

I'd like to add that Cassandra uses (as one possible replication method) Gossip protocol which stems from Leslie Lamport's paper that I enjoyed called "Part Time Parliament". The basic premise comes down to each node asking others for updates to the data that it may have missed.

Collapse
 
rhymes profile image
rhymes

Redis is widely use as a queue yes, it's supported by tools like Celery (a Python distributed task queue that has multiple backends, both RabbitMQ and Redis, and is/was used by Instagram) or Sidekiq, a similar tool for Ruby.

Lots of "simpler" web apps use distributed queues as a means to offload workload.

But Redis is much more than just a backend, as you hinted it can be used as a data store, as a cache. Until the future release of Redis 6 has been an async only architecture (it will acquire threaded I/O). It has persistence, native support for publisher/subscriber communication, many data types (hashes, sorted sets), support less mainstream features like HyperLogLog, has basic support for geolocalization operations and supports streams in input and output.

There's a lot you can do with Redis :)

Collapse
 
deciduously profile image
Ben Lovy

HyperLogLog

This was an awesome rabbithole, thanks!

Collapse
 
rhymes profile image
rhymes

great read!

Collapse
 
gypsydave5 profile image
David Wickes

RabbitMQ

Does a lot of things. Far too many things for my liking. It's open to being horribly abused as such - ended up working on a project where it was used for synchronous RPC (ridiculous).

As such I'd favour a more lightweight technology for queuing.

Kubernates

I worked as a "DevOps Engineer" for half a year. My impression of Kubernates as a developer is that developers don't need it. Docker Compose sits at the appropriate level of abstraction for developing applications. K8s is at the wrong level of abstraction.

Collapse
 
deciduously profile image
Ben Lovy

Awesome thanks. Do you have an example of what queuing tools you prefer? There's a wide array out there.

For Kubernetes, that makes sense to me from a dev perspective - what k8s does is manage groups of identical containers, so when defining what's actually in each one you shouldn't worry about deployment concerns like that. Once the product is deployed, though, is it not a strict improvement over the built-in behavior of docker compose?

Collapse
 
buinauskas profile image
Evaldas Buinauskas

Does Cassandra support MapReduce and Hadoop? 🤔

Collapse
 
deciduously profile image
Ben Lovy

Is "integrates with" a better verb?

Collapse
 
buinauskas profile image
Evaldas Buinauskas • Edited

I think any modern database will integrate with MapReduce. It's rather a feature of Hadoop/MR and not the database.

Well, that's how I understand it.

In any case integrates with is better. 🙂

Thread Thread
 
deciduously profile image
Ben Lovy

Got it, that makes a lot of sense. Thanks!