code: func (s *Server) Start(ctx context.Context) {
  	go func() {
  		defer s.Close()
  		<-ctx.Done()
  		logger := log.FromContext(ctx)
  		logger.Info("I have to go...")
  		logger.Info("Stopping server gracefully")
  		s.Stop()
  	}()
  
  	s.startTCPServers()
  	s.routinesPool.Go(func(stop chan bool) {
  		s.listenProviders(stop)
  	})
  	s.routinesPool.Go(func(stop chan bool) {
  		s.listenConfigurations(stop)
  	})
  	s.startProvider()
  	s.routinesPool.Go(func(stop chan bool) {
  		s.listenSignals(stop)
  	})
  }
docs: // Start starts the server and Stop/Close it when context is Done