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 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 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.
Usuarios destacados
Cliente | Breve introducción | Proyectos usando go |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Comienza
Ir a libros para la computación en la nube
-
Creación de microservicios con Go
-
Arquitectura de software práctica con Golang
-
Creación de servicios web RESTful con Go
-
Dominar los servicios web de Go
Frameworks web
-
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.
Routers
-
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
Template Engines
-
html/template
Un motor de plantillas HTML de biblioteca estándar
-
flosch/pongo2
Una sintaxis de Django como lenguaje de plantillas
Bases de datos y controladores
-
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
Bibliotecas Web
-
markbates/goth
Autenticación para aplicaciones web
-
jinzhu/gorm
Una biblioteca ORM para Go
-
dgrijalva/jwt-go
Una implementación Go de tokens web json