Skip to content

Understanding the "container" conceptΒ #21

@bruno-

Description

@bruno-

Hi,
this is not really an issue, but I opened one since this project doesn't have github discussions yet.

I'm curious how to better understand the "container" concept from this gem.

My first association to "containers" is docker and the accompanying devops containers technology. I think the name of this gem was chosen intentionally to associate with these technologies, right?

When thinking about docker and "devops containers" the model I have in my head is:

  • One "container image" = one service.
  • One container = one process = one running instance of "container image".

With the model of "one container = one process" in mind, I was a little surprised to discover this gem actually runs and manages multiple processes by design. This actually makes sense (what's the use of running just a single process?) but it broke my model "one container = one process".

After this I started to think more "one async container = one service with multiple identical processes". All good so far.

What really surprised me was code from "falcon virtual" command:

https://github.com/socketry/falcon/blob/676475da61f2ad8534902c73208d5683e4180496/lib/falcon/controller/virtual.rb#L89-L112

Falcon virtual container spawns multiple processes with multiple responsibilities:

  • redirect process
  • proxy process
  • a number of falcon host commands (which are async container processes themself)

This broke my mental model of "one async container =~ one service". Now, I'm more inclined to think async container is like a supervisor, managing one or more services, each running a predefined number of processes.

What are your thoughts on this? What is the "official" way to think of the "container" concept?
Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions