leopardslab / gocloud

☁️ Go API for open cloud
Apache License 2.0
119 stars 142 forks source link

Make gocloud development scalable #101

Closed OddCN closed 6 years ago

OddCN commented 6 years ago

Now we don't need to add function definitions for all the modules in all the cloud providers even if that provider doesn't support that particular module.

separately

Now we can develop each module of each provider separately

for example

Digital Ocean does not support container service. so

gocloud.DigitalOceanProvider().Compute()
gocloud.DigitalOceanProvider().Storage()
gocloud.DigitalOceanProvider().LoadBalancer()
gocloud.DigitalOceanProvider().DNS()

gocloud.DigitalOceanProvider() can only call these four.

for example

development for Vultr support is only compute module done. so now there is only .Compute()

gocloud.VultrProvider().Compute()

for example

For Machine Learning, in gocloud, only Amazon provider implemented interface for Machine Learning. Now we can access the Amazon provider 's ML by

 gocloud.AmazonProvider().MachineLearning().CreateMLModel()
 gocloud.AmazonProvider().MachineLearning().DeleteMLModel()
 gocloud.AmazonProvider().MachineLearning().GetMLModel()
 gocloud.AmazonProvider().MachineLearning().UpdateMLModel()

unified API

If different cloud providers provide the same service, such as compute storage dns, we implement the functionalities from same unified interface.

So this ensures that the API we provide is uniform

shlokgilda commented 6 years ago

This sounds really amazing!!