Rich Freeman via plug on 10 Sep 2024 07:32:14 -0700


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Self-hosted email server in Docker


So, I'm not going to get into any particular implementation, as for
all I know the product you're talking about is terrible.  However, I
do want to raise one concern:

On Tue, Sep 10, 2024 at 9:10 AM Rich Kulawiec via plug
<plug@lists.phillylinux.org> wrote:
>
> 3. The current trend of developing/building everything to run in VMs is a
> Bad Thing.  Yes, it's convenient, and yes, it allows skipping over lots
> of due diligence, and all that, but it also incurs the overhead (not
> just performance hit but complexity, security risks, etc.) of using VMs.
>
> This thing apparently uses 11 Docker volumes, and well, that's just nuts.

First, I doubt you're talking about "Docker volumes" as those are
essentially just mountpoints.  Maybe you're talking about Docker
containers.

Second, Docker containers aren't VMs, and don't have the same overhead
issues that VMs have.  They do entail some overhead, but well-designed
containers can be very light.  I just noticed that I forgot to kill an
ubuntu pod I have running on k8s and it was using 1MB of RAM, and
Ubuntu is hardly a lightweight container environment.  I've got an
nginx server sitting around using 4MB of RAM.  Of course applications
are going to do application things, and I have a pair of pods for my
UniFi controller eating 1.5GB of RAM (1GB for UniFi's Java goodness,
and 500MB for MongoDB).  I doubt that it would be using any less RAM
as a traditional service, but I would have to be concerned about
keeping Java working for one application that way.

With containers you can also do things like use MUSL for various
applications without having to worry about the impact on having it
installed at the host level, and so on.  I'd say the main overhead is
probably from non-shared libraries, but I'm guessing that this isn't
really that much in the scheme of things, and probably way less than
what the applications themselves waste.

Of course a RAM-hungry application is going to eat RAM no matter how
you host it.

For something like a mail server I imagine splitting up components can
help with load and high availability.  Containers also tend to very
cleanly separate binaries, configuration, and data.  That can of
course be done with traditional installation but the approach is much
more standardized with containers.  Like a more structured programming
language they tend to force you to define your interfaces, which is
good practice.  A mail server could easily have separate components
for ingestion, storage, authentication, spam filtering, other
processing, outgoing mail, and retrieval.  Many solutions already have
separate components for several of these since implementations can
vary.

-- 
Rich
___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug