The Joys Of Programming

I wish my company would embrace containers, even if just for development purposes. Server instances would be much easier to get up and running. But their overly complicated design has made it nearly impossible for me to do it myself without fairly major changes in architecture.

As an aside, when I was running a Valheim server earlier this year, I used docker-compose to deploy the server.

I’ve used docker-compose quite a bit for projects with dozens of containers. I’m gradually trying to move to using k8s for that. I’m looking at Skaffold as an option to ease that transition.

If your dev stack starts to get very large instead of running it all locally in k8s there are tools like Ambassador Telepresence that let you run some local containers as if they are part of a larger remote k8s cluster.

I haven’t tried Telepresence yet but it’s on my list of things to try to improve our dev experience.

qaraq wrote:

I think just about all the other devs at work run/test apps through Tomcat that they control through intellij. I instead set up a Docker stack with our DB, Redis, nginx, and whatever tomcat instances I need for what I'm testing. It just seems a lot cleaner to me, and it's easy to get the apps talking to each other if I need to.

Perhaps, but then the IDE has to attach to the Tomcat process to debug it and any web application that Tomcat is hosting. That's still incredibly messy, especially if the Tomcat container isn't set up to allow for hot swapping class files and application contents as part of development.

As a software developer with all sorts of workflows already defined, bringing in Docker support (and teaching that to other devs) has been nothing but frustrating. Sure, I have written shims around it to help alleviate the growing pains, but as someone that already has to know how to get sh*t installed and working on my system, alongside how to run every other tool directly on the codebase, obfuscating that into a container just adds more fuel to the frustration.

"Create workflow aliases to work with the containerized apps", people say. Well, then it's either a double set of commands to remember (for containerized apps, and for non-containerized apps), or move everything into a container.

I'm not saying it's bad, I just want it to be so much better.

IMAGE(https://media1.giphy.com/media/3o84sF9H8TXFbkJC0M/giphy.gif?cid=ecf05e47qjr7gtuh5kp375j4bd03y7nzihakhtrjfv4r07en&rid=giphy.gif&ct=g)

We let pandasuit talk a little devops and look what happens...

EDIT: Spam message got deleted, now my post makes no sense.

trueheart78 wrote:

or move everything into a container.

I'm not saying it's bad, I just want it to be so much better.

That seems to be the end goal. Once you start containers can't go back

*Legion* wrote:

now my post makes no sense. :)

Don't worry, we're used to it.

IMAGE(https://i.imgur.com/rXoc4s3.gif)

Anyone here done much work with real time event based microservices?

I've used Kafka as a messaging system for cases when durability was more important than latency. If I want a message to arrive precisely once but I care far less about end to end speed: Kafka.

In most other cases over the past 10 years I've been building brokerless event systems on top of ZeroMQ. It can be very very fast but, especially with patterns like PUBSUB, you can run into port exhaustion on any decently large cluster and you end up having to split into smaller clusters. Not really worth ragging on ZeroMQ. It's been mostly good to me but I've spent way too many hours of my life coping with it's limitations.

Lately I've been looking around for alternatives. Something with very low end to end latency. I've noticed a few places recommending Redis PUBSUB and Streams. I've used Redis for some very high write rate and low latency systems in production before and I trust it a lot for the use cases I've tried. Roblox claims to be using Redis PUBSUB for very high rate notification systems.

Anyone here worked with Redis PUBSUB or Streams as scale? How about alternatives? Any experience to share?

RabbitMQ is what one of our apps uses. I know part of the team is trying to figure out replacing it in AWS but I'm not sure what they're up to

Stele wrote:

RabbitMQ is what one of our apps uses. I know part of the team is trying to figure out replacing it in AWS but I'm not sure what they're up to

Amazon’s hosted RabbitMQ is called Amazon MQ.

If you hear anything about their experience with Amazon MQ I’m curious. I haven’t tried it yet.