Go para servicios de red y nube

Descripción general

Go ayuda a las empresas a construir y escalar sistemas de computación en la nube

A medida que las aplicaciones y el procesamiento se trasladan a la nube, la concurrencia se convierte en un problema muy importante. Los sistemas de computación en la nube, por su propia naturaleza, comparten y escalan recursos. Coordinar el acceso a recursos compartidos es un problema que afecta el procesamiento de todas las aplicaciones en la nube y requiere lenguajes de programación "explícitamente orientados a desarrollar aplicaciones concurrentes altamente confiables".

Go hace que escalar como empresa sea muy fácil. Esto es muy importante porque, a medida que nuestro equipo de ingeniería crece, cada servicio puede ser gestionado por una unidad diferente.

Beneficios clave

Abordar el equilibrio entre el tiempo del ciclo de desarrollo y el rendimiento del servidor

Go se creó para abordar exactamente estas necesidades de concurrencia para aplicaciones escaladas, microservicios y desarrollo en la nube. De hecho, más del 75 por ciento de los proyectos de Cloud Native Computing Foundation están escritos en Go.

Go ayuda a reducir la necesidad de hacer esta compensación, con sus tiempos de compilación rápidos que permiten el desarrollo iterativo, menor uso de memoria y CPU. Los servidores creados con Go experimentan tiempos de inicio instantáneos y son más baratos de ejecutar en implementaciones de pago por uso y sin servidor.

Aborda los desafíos con la nube moderna, ofreciendo API idiomáticas estándar

Go aborda muchos desafíos que enfrentan los desarrolladores con la nube moderna, ofreciendo API idiomáticas estándar y concurrencia integrada para aprovechar los procesadores multinúcleo. La baja latencia y el ajuste "sin botones" de Go hacen de Go un excelente equilibrio entre rendimiento y productividad, lo que otorga a los equipos de ingeniería el poder de elegir y el poder de moverse.

Caso de uso

Usa Go para Cloud Computing

Las fortalezas de Go brillan cuando se trata de servicios de building. Su velocidad y soporte integrado para la concurrencia dan como resultado servicios rápidos y eficientes, mientras que el tipado estática, las herramientas sólidas y el énfasis en la simplicidad y la legibilidad ayudan a crear código confiable y fácil de mantener.

Go tiene un ecosistema sólido que respalda el desarrollo de servicios. La biblioteca estándar ⬀ incluye paquetes para necesidades comunes como servidores y clientes HTTP, análisis JSON/XML, bases de datos SQL y una variedad de funciones de seguridad/cifrado, mientras que el tiempo de ejecución Go incluye herramientas para race detection ⬀, benchmarking ⬀/profiling, generación de código y análisis de código estático.

Los principales proveedores de Cloud (GCP, AWS, Azure) tienen API Go para sus servicios y bibliotecas populares de código abierto brindan soporte para herramientas API. (Swagger), transporte (búferes de protocolo, gRPC), monitoreo (OpenCensus), mapeo relacional de objetos (gORM) y autenticación (JWT). La comunidad de código abierto también ha proporcionado varios frameworks de servicios, incluidos Go Kit, Go Micro y Gizmo, que puede ser una excelente manera de comenzar rápidamente.

Herramientas Go para Cloud Computing

Docker Docker

Docker es una plataforma como servicio que entrega software en contenedores. Los contenedores agrupan software, bibliotecas y archivos de configuración, están alojados en un Docker Engine y se ejecutan en un único kernel de sistema operativo (que utiliza menos recursos del sistema que las máquinas virtuales).

Los desarrolladores de la nube usan Docker para administrar su código Go y admitir múltiples plataformas, ya que Docker admite el flujo de trabajo de desarrollo y el proceso de implementación.

Kubernetes Kubernetes

Kubernetes es un sistema de orquestación de contenedores de código abierto, escrito en Go, para automatizar la implementación de aplicaciones web. Las aplicaciones web a menudo se crean utilizando contenedores (como se indicó anteriormente) empaquetados con sus dependencias y configuraciones. Kubernetes ayuda a implementar y administrar esos contenedores a escala. Los programadores de la nube utilizan Kubernetes para crear, entregar y escalar aplicaciones en contenedores rápidamente, gestionando la creciente complejidad a través de API que controlan cómo se ejecutarán los contenedores.

Cliente Breve introducción Proyectos usando go
Google Google Google Google Cloud utiliza Go en su ecosistema de productos y herramientas, incluidos Kubernetes, gVisor, Knative, Istio y Anthos. Go es totalmente compatible con Google Cloud en todas las API y runtimes.
Capital One Capital One Capital One Capital One usa Go para impulsar la API de ofertas de crédito, un servicio crítico. El equipo de ingeniería también está construyendo su arquitectura sin servidor con Go, citando la velocidad y simplicidad de Go, y mencionando que "[ellos] no querían funcionar en serverless sin Go".
Dropbox Dropbox Dropbox Dropbox se creó en Python, pero en 2013 decidió migrar sus backends de rendimiento crítico a Go. Hoy en día, la mayor parte de la infraestructura de la empresa está escrita en Go.

Comienza

Ir a libros para la computación en la nube

  • Buffalo

    Un framework para el desarrollo web rápido en Go, curando bibliotecas Go y JS juntas.

  • Echo

    Un framework web Go minimalista, extensible y de alto rendimiento

  • Flamingo

    Un framework rápido de código abierto basado en Go con una arquitectura limpia y escalable

  • Gin

    Un framework web escrito en Go, con una API tipo martini.

  • Gorilla

    Un kit de herramientas web para el lenguaje de programación Go.

Ver más
  • julienschmidt/httprouter

    Un enrutador de solicitudes HTTP liviano y de alto rendimiento

  • gorilla/mux

    Un potente enrutador HTTP y comparador de URL para crear servidores web Go con 🦍

  • Chi

    Un enrutador liviano, idiomático y componible para crear servicios Go HTTP.

  • net/http

    Un paquete HTTP de biblioteca estándar

Ver más
  • html/template

    Un motor de plantillas HTML de biblioteca estándar

  • flosch/pongo2

    Una sintaxis de Django como lenguaje de plantillas

Ver más
  • database/sql

    Una interfaz de biblioteca estándar con soporte de controladores para MySQL, Postgres, Oracle, MS SQL, BigQuery y la mayoría de las bases de datos SQL

  • mongo-driver/mongo

    El controlador compatible con MongoDB para Go

  • elastic/go-elasticsearch

    Un cliente Elasticsearch para Go

  • GORM

    Una biblioteca ORM para Go

  • Bleve

    Búsqueda e indexación de texto completo para Go

  • CockroachDB

    Una evolución de la base de datos, diseñada para la nube para ofrecer SQL distribuido, resiliente y consistente a escala

Ver más
Ver más
  • gopherjs

    Un compilador de Go a JavaScript que permite a los desarrolladores escribir código de interfaz de usuario en Go que se ejecutará en todos los navegadores.

Ver más