public static function getDataService(array $instanceConfig)
    {
        $instanceDetails = parse_url($instanceConfig['Instance']);

        if (isset($instanceDetails['host']) === false || isset($instanceDetails['scheme']) === false) {
            $exceptionMessage = sprintf('Error while parsing instance configuration "%s"', $instanceConfig['Instance']);
            throw new \RuntimeException($exceptionMessage, 1415453791);
        }

        if (!array_key_exists('port', $instanceDetails)) {
            $instanceDetails['port'] = null;
        }

        $instanceConfig['Instance'] = $instanceDetails;

        $scheme = strtoupper($instanceConfig['Instance']['scheme']);
        switch ($scheme) {
            case 'SSH':
                $dataService = static::bootstrapSSHDataService($instanceConfig);
                break;
            case 'HTTPS':
            case 'HTTP':
                unset($instanceConfig['KeyFile']);
                $dataService = static::bootstrapHTTPDataService($instanceConfig);
                break;
            default:
                $exceptionMessage = sprintf('Data service for scheme "%s" is not available', $scheme);
                throw new \RuntimeException($exceptionMessage, 1364130057);
        }

        return $dataService;
    }