Tanto o Couchbase quanto o Go têm objetivos semelhantes de escalabilidade e facilidade de uso. O alinhamento natural resulta em uma ótima combinação entre o Couchbase e o Go. Os desenvolvedores de aplicativos precisam de sistemas de gerenciamento de dados escaláveis, como o Couchbase, para os sistemas que projetam. Por isso, hoje tenho o prazer de anunciar que o Couchbase está introduzindo um SDK em Go para facilitar a escalabilidade e a integração simples com seus próprios projetos de desenvolvimento em Go.

Há vários motivos pelos quais nós do Couchbase adoramos Go:

  1. O Go facilita a criação de aplicativos eficientes prontos para alta simultaneidade.
  2. O Go facilita o trabalho com JSON na criação de aplicativos simples, confiáveis e eficientes. 
  3. A Go é uma plataforma poderosa e bem documentada, cujo objetivo é manter a sintaxe e a biblioteca padrão simples, permitindo que a comunidade desenvolva o restante. 

Vamos dar uma olhada em cada um deles.

Alta simultaneidade

O foco da Go é capacitar os desenvolvedores com construções simples que facilitam a montagem de programas altamente simultâneos. Com isso, os aplicativos escritos em Go podem ser escalonados com o mínimo de esforço. À medida que o hardware e as arquiteturas de sistemas distribuídos evoluem, os programas criados em Go têm o DNA para usar esses recursos de forma eficiente para escalonar para um número ainda maior de usuários. O Couchbase tem objetivos semelhantes. Queremos permitir que o banco de dados escolhido pelo desenvolvedor do aplicativo seja dimensionado com o mínimo de esforço. Em Go, a construção para escala é feita principalmente por meio de primitivos conhecidos como goroutines, que expressam a lógica a ser executada em paralelo, e canais, que movem os dados com segurança pela lógica paralela.

O Couchbase SDK para Go funciona bem com essas construções. Desde o início, procuramos oferecer ao desenvolvedor de aplicativos em Go uma área de superfície de API que se encaixa em um aplicativo usando goroutines e canais. O SDK foi projetado para trabalhar facilmente com a simultaneidade expressa pelo desenvolvedor do aplicativo, sem adicionar sobrecarga em seu próprio gerenciamento do trabalho solicitado. Resultado final? Com o mínimo de esforço, o aplicativo obtém o benefício de todo o desempenho e a escala do cluster do Couchbase Server. O Go SDK abstrai os detalhes do que precisa acontecer ao dimensionar o cluster do Couchbase Server. 

Facilidade de desenvolvimento

Outra maneira pela qual o nosso SDK para Go se mistura perfeitamente com a filosofia em torno de Go é ser simples de configurar e usar em um aplicativo. Reconhecendo que um aplicativo em Go definirá as estruturas de dados com as quais trabalhará em goroutines e canais, o SDK do Couchbase para Go oferece aos desenvolvedores uma maneira simples de expressar como consultar e armazenar dados em um cluster do Couchbase Server. A linguagem Go tem excelente suporte para mapear JSON para tipos de dados em Go. O Go SDK aproveita isso nas ações que os desenvolvedores solicitam dele. Ao consultar ou adicionar dados, o SDK fará o marshal e o unmarshal das respostas JSON nas estruturas em Go definidas pelo aplicativo.

O SDK do Couchbase para Go oferece suporte a novos recursos do Couchbase Server que facilitam o desenvolvimento de aplicativos. Os recursos do Couchbase nova linguagem de consulta N1QL estende o SQL para trabalhar com documentos JSON, permitindo que os desenvolvedores consultem facilmente de forma familiar. Com a capacidade do N1QL de consultar facilmente dados estruturados em JSON na ponta dos dedos de um desenvolvedor de Go, os atos de encontrar, manipular e armazenar dados se tornam fáceis.

Simples na superfície, mas extensível

A comunidade Go busca a simplicidade, mantendo a biblioteca padrão e a sintaxe simples na superfície, sem esconder as primitivas daqueles que precisam delas. Usando o desejo da comunidade Go de simplicidade com recursos profundos, criamos duas camadas no Go SDK.

Em primeiro lugar, para satisfazer o desenvolvedor que procura uma capacidade direta de trabalhar com JSON mapeado para estruturas da linguagem Go, criamos uma interface simples, conhecida como gocb, que oferece ao desenvolvedor operações fáceis de entender e seguras quanto ao tipo. Essa interface também se integra rapidamente à estrutura de goroutine síncrona em Go.

Há algumas situações em que um desenvolvedor precisa integrar o Couchbase em uma estrutura maior que se espera que seja usada por outros desenvolvedores. Um exemplo pode ser uma nova estrutura de aplicativo que precise de uma interface pura e assíncrona ou um componente reativo no meio da arquitetura que movimenta dados entre sistemas. Esses desenvolvedores podem precisar interagir de perto nos níveis mais baixos de como o SDK do Couchbase interage com o cluster do Couchbase Server. Também pode haver ocasiões em que os desenvolvedores queiram ignorar o empacotamento de dados para economizar um pouco mais de processamento extra ou um desejo de mudar para uma interface 100% assíncrona para IO. As necessidades de cada um desses casos são atendidas pela camada gocbcore no SDK do Couchbase para Go.

O que vem a seguir

O software está em constante evolução e continuaremos a trabalhar com os aprimoramentos provenientes da comunidade Go. O Google fez grandes avanços no gerenciamento de memória e na facilidade de desenvolvimento do Go 1.5. Esperamos que as novas ferramentas para desenvolvedores e o redesenho do gerenciamento de memória nos ajudem com as versões futuras do Couchbase Server, enquanto aqueles que desenvolvem seus próprios programas em Go podem aproveitar as mudanças imediatamente com o Couchbase SDK for Go, que suporta o Go 1.5 atualmente.

E para os componentes do Couchbase que usam Go? Esse futuro está sendo construído agora. Temos uma série de novos projetos publicado como código aberto que esperamos que cheguem nas próximas versões do Couchbase Server e do Couchbase Mobile. A maioria desses projetos também é escrita em Go.

Estamos animados para ver o que os desenvolvedores criam com nosso novo Couchbase SDK para Go.

Você encontrará exemplos de código e locais para os bits e a documentação em Blog de Brett Lawson sobre a GA. Brett é o engenheiro-chefe do Go SDK.

Autor

Postado por Matt Ingenthron, diretor sênior de engenharia de SDK, Couchbase

Matt Ingenthron é o diretor sênior de engenharia da Couchbase, onde se concentra na interface do desenvolvedor em SDKs, conectores e outros projetos. Ele contribuiu para o projeto memcached, foi um dos mantenedores do cliente Java spymemcached e um dos principais desenvolvedores do Couchbase.

Deixar uma resposta