func New(clusterID, nodeID string, isDev bool, managers *managers.Managers) (*Global, error) {
	m, err := metrics.New(clusterID, nodeID, false, managers.Admin(), managers.Sync(), !isDev)
	if err != nil {
		return nil, err
	}
	le, err := letsencrypt.New()
	if err != nil {
		return nil, err
	}
	r := routing.New()
	c := caching.Init(clusterID, nodeID)
	c.SetAdminModule(managers.Admin())
	r.SetCachingModule(c)
	return &Global{letsencrypt: le, metrics: m, routing: r, caching: c}, nil
}
New creates a new global object
package global
import (
	"github.com/spaceuptech/space-cloud/gateway/managers"
	"github.com/spaceuptech/space-cloud/gateway/modules/global/caching"
	"github.com/spaceuptech/space-cloud/gateway/modules/global/letsencrypt"
	"github.com/spaceuptech/space-cloud/gateway/modules/global/metrics"
	"github.com/spaceuptech/space-cloud/gateway/modules/global/routing"
)
type Global struct {
	letsencrypt *letsencrypt.LetsEncrypt
	metrics     *metrics.Module
	routing     *routing.Routing
	caching     *caching.Cache
}