github.com/cornelk/go-cloud@v0.17.1/README.md (about) 1 # The Go Cloud Development Kit (Go CDK) 2 3 _Write once, run on any cloud ☁️_ 4 5 [![Build Status](https://travis-ci.com/google/go-cloud.svg?branch=master)][travis] 6 [![godoc](https://godoc.org/github.com/google/go-cloud?status.svg)][godoc] 7 [![Coverage](https://codecov.io/gh/google/go-cloud/branch/master/graph/badge.svg)](https://codecov.io/gh/google/go-cloud) 8 [![Go Report Card](https://goreportcard.com/badge/github.com/google/go-cloud)](https://goreportcard.com/report/github.com/google/go-cloud) 9 10 <p align="center"> 11 <img width="509" height="276" src="internal/website/static/go-cdk-logo-gopherblue.png" alt=""> 12 </p> 13 14 The Go Cloud Development Kit (Go CDK) allows Go application developers to 15 seamlessly deploy cloud applications on any combination of cloud providers. It 16 does this by providing stable, idiomatic interfaces for common uses like storage 17 and databases. Think `database/sql` for cloud products. 18 19 Imagine writing this to read from blob storage (like Google Cloud Storage or 20 S3): 21 22 ```go 23 ctx := context.Background() 24 bucket, err := blob.OpenBucket(ctx, "s3://my-bucket") 25 if err != nil { 26 return err 27 } 28 defer bucket.Close() 29 blobReader, err := bucket.NewReader(ctx, "my-blob", nil) 30 if err != nil { 31 return err 32 } 33 ``` 34 35 and being able to run that code on any cloud you want, avoiding all the ceremony 36 of cloud-specific authorization, tracing, SDKs and all the other code required 37 to make an application portable across cloud platforms. 38 39 The project works well with a code generator called 40 [Wire](https://github.com/google/wire/blob/master/README.md). It creates 41 human-readable code that only imports the cloud SDKs for services you use. This 42 allows the Go CDK to grow to support any number of cloud services, without 43 increasing compile times or binary sizes, and avoiding any side effects from 44 `init()` functions. 45 46 You can learn more about the project from our [announcement blog post][], or our 47 talk at Next 2018: 48 49 [![Video: Building Go Applications for the Open Cloud (Cloud Next '18)](https://img.youtube.com/vi/_2ZwhvIkgek/0.jpg)][video] 50 51 [announcement blog post]: https://blog.golang.org/go-cloud 52 [godoc]: https://godoc.org/github.com/google/go-cloud 53 [travis]: https://travis-ci.com/google/go-cloud 54 [video]: https://www.youtube.com/watch?v=_2ZwhvIkgek 55 56 ## Installation 57 58 ```shell 59 # First "cd" into your project directory if you have one to ensure "go get" uses 60 # Go modules (or not) appropriately. See "go help modules" for more info. 61 go get gocloud.dev 62 ``` 63 64 The Go CDK builds at the latest stable release of Go. Previous Go versions may 65 compile but are not supported. 66 67 ## Documentation 68 69 Documentation for the project lives primarily on https://gocloud.dev/, including 70 [tutorials][]. 71 72 You can also browse Go package reference on [godoc.org][godoc]. 73 74 [tutorials]: https://gocloud.dev/tutorials/ 75 76 ## Project status 77 78 The APIs are still in alpha, but we think they are production-ready and are 79 actively looking for feedback from early adopters. If you have comments or 80 questions, you can post to the [go-cloud mailing list][] or email us at 81 go-cdk-feedback@google.com. 82 83 ## Current features 84 85 The Go CDK provides generic APIs for: 86 87 * Unstructured binary (blob) storage 88 * Publish/Subscribe (pubsub) 89 * Variables that change at runtime (runtimevar) 90 * Connecting to MySQL and PostgreSQL databases (mysql, postgres) 91 * Server startup and diagnostics: request logging, tracing, and health 92 checking (server) 93 94 ## Contributing 95 96 Thank you for your interest in contributing to the Go Cloud Development 97 Kit! :heart: 98 99 Everyone is welcome to contribute, whether it's in the form of code, 100 documentation, bug reports, feature requests, or anything else. We encourage you 101 to experiment with the Go CDK and make contributions to help evolve it to meet 102 your needs! 103 104 The GitHub repository at [google/go-cloud][go-cloud] contains some driver 105 implementations for each portable API. We intend to include 106 [Google Cloud Platform][gcp], [Amazon Web Services][aws], and [Azure][azure] 107 implementations, as well as prominent open source services and at least one 108 implementation suitable for use in local testing. Unfortunately, we cannot 109 support every service directly from the project; however, we encourage 110 contributions in separate repositories. 111 112 If you create a repository that implements the Go CDK interfaces for other 113 services, let us know! We would be happy to link to it here and give you a 114 heads-up before making any breaking changes. 115 116 See [the contributing guide](./CONTRIBUTING.md) for more details. 117 118 [go-cloud]: https://github.com/google/go-cloud 119 [gcp]: http://cloud.google.com 120 [aws]: http://aws.amazon.com 121 [azure]: https://azure.microsoft.com/ 122 123 ## Community 124 125 You can contact us on the [go-cloud mailing list][]. 126 127 This project is covered by the Go [Code of Conduct][]. 128 129 [Code of Conduct]: ./CODE_OF_CONDUCT.md 130 [go-cloud mailing list]: https://groups.google.com/forum/#!forum/go-cloud 131 132 ## Legal disclaimer 133 134 The Go CDK is open-source and released under an [Apache 2.0 135 License](https://github.com/google/go-cloud/blob/master/LICENSE). Copyright © 136 2018–2019 The Go Cloud Development Kit Authors. 137 138 If you are looking for the website of GoCloud Systems, which is unrelated to the 139 Go CDK, visit https://gocloud.systems.