What is the smart and efficient way to build a login server & a lobby system & matchmaking system & 1:1 battle in game server?

  architecture, boost-asio, c++, server

I want to build a game server has a login, lobby, matchmaking and 1:1 battle system.

The logic I have thought is below.
simple server logic

This is my personal project and I am not sure the volume of this server instance.
I am using boost-asio for this,
I wonder how to handle a login, lobby, matchmaking system in one instance of server.

My questions are ..

  1. Do I need to build login server, lobby server, matchmaking server for each?
  2. If matching is completed, how to instantiate battle server what uses a UDP socket for real time service. I wonder because before I make a login, lobby server with TCP socket only.

Any answers can help me out.

Source: Windows Questions C++