code: func (c etcdClient) SaveService(service *Service) error {
  	ctx, cancel := context.WithTimeout(c.ctx, etcdTimeout)
  	defer cancel()
  
  	value, err := json.Marshal(&service)
  	if err != nil {
  		return err
  	}
  	_, err = c.client.Put(ctx, service.Key, string(value))
  	if err != nil {
  		return err
  	}
  	return nil
  }
docs: // SaveService persists service data into etcd