So far in Dawntrail, on Crystal, the only time things got really bad when somehow we managed to shove 1k people into a single instance for a single boss fate. The server survived but it was not a pleasant experience. The other instances, however, were working great.
Hmm... 1k player on one server instance and the server can't handle it. Sounds like a normal issue with the update tick, that's the limitation.

If they are used the basic 1&1 how to build a MMO-Server the map, client and network should run on different threads (of course multithreaded) and glued together via push-pop queues.
If this is the case, the map-thread updates everything happening on the map, build the packets out of the box which aren't requires client datas (monster move, vfx, s.o.) and hand them over to the routine which publishes them to the clients in range (normally the server should know where are the clients are located on the map and this routine is publishing parallelized).
Basically everything on the map which's not static is in a queue on the map and this queue will be processed by every update tick.
Please keep in mind, this object-queue is normally not proccessed multithreaded.
That's the easy part.

The hard one is, when you or 1k ppl intercating with the boss, if you gettn the aggro the boss will ask for your position and turn around.
For this you have to get the position from your player-object, whichs mostly in a mutexed region, so every other routine has to wait until the active one has finished the access since the C++ below C++14 or C# dosn't have specialized read many - write once mutex, if not custom implemented like ACE was doing long time ago.
Now we have to push this packet to the players involved (this does the "clients in range" routine).

Getting further: All of them doing damage to the boss, it gets the spell data you hit with, calls a sub to calculate the damage and passes everything to the boss-script too, in case it has to react to your actions.
Now we'll send the response to you and every player in range.
Please keep in mind, this will handled by the map-tick for every player, boss, mob, NPC, s.o. in the object-queue.

The tricky part
The player-object. Normally the map and its queue keeping track of it, unfortunately you have to wait until it's your player-objects turn to be updated (damage calculation, get collision, update position, send data, s.o.).

Oh and there is more: The script engine SE is using for the bosses. I guess it's LUA.
Compared to native compiled routines, LUA is kinda "slow", but it has a huge advantage:
You can change the scripts and reload on runtime.


Had to shorten everything... hope this will help a tiny bit to understand what is going on under the hood of a MMO-server.
(Programmed such server things long time ago, so everything is kinda vague)

Songbirds as an example (one of the most famous bard groups)
Don't know them. ¯\_(ツ)_/¯