github.com/thiagoyeds/go-cloud@v0.26.0/README.md (about)

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