Ir idioma: selecci贸n ORM

Go gan贸 fama como uno de los lenguajes de programaci贸n m谩s simples, incluidas sus ventajas: facilidad para escribir y leer c贸digo, en la mayor铆a de los casos, soporte m谩s simple para la base de c贸digo. Hablamos de varias ventajas de Go, gracias a las cuales en SimbirSoft lo usamos en varios proyectos altamente cargados con varias arquitecturas, tanto de servicio web como de microservicio (SOA).

Solicitud


Este lenguaje de sistema es bueno para la mayor铆a de las tareas de red, microservicios y macro servicios, servicios web, as铆 como para herramientas del sistema; no sin raz贸n, a muchos expertos de DevOps les encanta. Go encuentra su uso en Machine Learning, y algunos desarrolladores incluso escriben sitios web con 茅l. En nuestra pr谩ctica, recurrimos a Go cuando desarrollamos CRM y productos de software separados para uso interno, por ejemplo, para compa帽铆as de seguros. El repositorio est谩ndar de idiomas Go tambi茅n tiene un paquete para el desarrollo m贸vil, este paquete a煤n es compatible, aunque hay herramientas m谩s adecuadas para esto.

Go: desarrollo y reconocimiento


En Google, el desarrollo del lenguaje Go comenz贸 en 2007. Antes de eso, la compa帽铆a usaba Java, Python y C ++, sin embargo, ten铆an ciertos inconvenientes (en particular, alto consumo de memoria) o uso limitado. Entonces Google comenz贸 a desarrollar un nuevo lenguaje para sus necesidades.

驴Cu谩les son los requisitos para el idioma?

  • Un archivo ejecutable (sin dependencias)
  • Compilaci贸n r谩pida
  • Tiempo de ejecuci贸n r谩pido (al menos a la par con Java y C ++)
  • Recolector de basura minimizando la fuga de recursos
  • Optimizaci贸n para sistemas multiprocesador.
  • Mecanograf铆a est谩tica
  • Minimalismo
  • Ligereza sint谩ctica
  • Multiparadigness (imperativo, funcional, orientado a objetos)

Para aquellos que no trabajan con Go, recuerden brevemente la historia de su creaci贸n. Google comenz贸 a pensar en la especificaci贸n del idioma en 2007. La versi贸n 1.0 tuvo lugar en 2012, y en 2015 se lanz贸 la versi贸n 1.5, ya sin una sola l铆nea de c贸digo C ++. A partir de ese momento, el lenguaje se compila, lo que nos permiti贸 acelerar el desarrollo de tareas individuales en Go.

La edad promedio de reconocimiento de un nuevo idioma en la comunidad es de aproximadamente 10 a帽os, pero Go ya es uno de los idiomas m谩s populares. En junio de 2019, Go subi贸 15潞 en t茅rminos de popularidad en el mundo, seg煤n el 铆ndice TIOBE , agregando tres posiciones en un a帽o. Entre las razones de su 茅xito est谩n las siguientes:

  • Biblioteca est谩ndar fuerte
  • Buena sintonizaci贸n est谩ndar
  • Las funciones m谩s necesarias se presentan en el "cuadro", y las bibliotecas se dan a c贸digo abierto
  • Comunidad muy amigable

Por ejemplo, los siguientes paquetes est谩n incluidos en la biblioteca est谩ndar (la lista est谩 incompleta):



Ilustraci贸n - github.com/ashleymcnamara/gophers

Si no se siente c贸modo con la velocidad de su aplicaci贸n u otros par谩metros, puede trabajar con el perfilador listo para usar. Para hacer esto, necesitas:
  • Importar perfil de registro: importar _ "net / http / pprof"
  • Agregue un servidor http para recibir resultados del generador de perfiles: vaya a http.ListenAndServe ("0.0.0.0:8080", nil)

Ir herramientas


Uno de los beneficios de Go es su amplio conjunto de herramientas est谩ndar. En nuestra opini贸n, hemos seleccionado algunas de las utilidades m谩s interesantes (de hecho, hay muchas m谩s):

  • benchcmp: comparaci贸n de referencia, rendimiento antes y despu茅s de los cambios
  • go cover - an谩lisis de la cobertura del c贸digo por pruebas
  • godoc - generaci贸n de documentaci贸n basada en comentarios
  • Goimports: an谩lisis de importaci贸n (eliminaci贸n de elementos no utilizados, adici贸n de elementos faltantes)
  • gorename - refactorizaci贸n
  • presente - ajuste de presentaci贸n
  • ir al veterinario: error frecuente
  • Go Test: ejecuta pruebas y puntos de referencia
  • vaya a arreglar: corrija los cambios al cambiar la API (antes de la versi贸n 1.0)
  • go tool pprof - perfilado
  • Ir fmt - formateo de c贸digo por estilo de c贸digo
  • Detector de carrera: encontrar una carrera de datos en tiempo de ejecuci贸n

Competitividad


Otra fortaleza de Go es que es f谩cil escribir c贸digo competitivo en este idioma. Para hacer esto, simplemente use palabras clave antes de llamar a la funci贸n.



Ir a entrenar


Si desea programar en Go, el inicio tomar谩 relativamente poco tiempo. Los desarrolladores - Core Team - apoyan el curso A Tour of Go en varios idiomas, incluido el ruso. Este curso se puede completar en solo 1-3 d铆as. En t茅rminos de aprendizaje, Go es uno de los idiomas m谩s simples.

Entonces, qu茅 leer:


ORM en Go


Se cree que una de las debilidades de Go es ORM. Quiz谩s esto se deba en parte al hecho de que el lenguaje es joven; en 茅l, muchas herramientas necesarias apenas comienzan a desarrollarse. En particular, puede usar el paquete database / sql para trabajar con bases de datos. 驴Cu谩les son los requisitos para el paquete?

  • Paquete general para todas las bases de datos sql
  • Port谩til: no contiene ninguna caracter铆stica en el campo de trabajar con bases de datos. Idealmente, todo deber铆a funcionar correctamente si cambia el controlador.
  • Conversi贸n de tipos Go a tipos de bases de datos est谩ndar (deber铆a ser posible procesar tipos espec铆ficos)
  • Contiene grupo de conexi贸n
  • Seguridad de roscas para gorutinas

Consulta SELECT de muestra utilizando la base de datos / sql


defer rows.Close() for rows.Next() { var message string err := rows.Scan(&message) if err != nil { log.Panic(err) } fmt.Println(message) } if err := rows.Err(); err != nil { log.Panic(err) } 

Como puede ver en el ejemplo, se deber谩n realizar muchas acciones de plantilla cada vez. Por ejemplo:

  • cerrar objeto de fila: diferir filas. Cerrar ()
  • verificar errores err: = rows.Err (); err! = nulo desde no est谩 claro por qu茅 filas.Next () nos devolvi贸 falso

De todo esto, quiero usar algo m谩s universal y simple, por ejemplo, ORM.

Tipos de implementaciones de ORM


Cuando los desarrolladores se enfrentan a la elecci贸n de ORM para trabajar con Go, a menudo se gu铆an por la calificaci贸n en el github. Cuando elegimos ORM para nosotros, Beego obtuvo la mejor calificaci贸n (18 mil "estrellas"). Sin embargo, en la pr谩ctica, ORM es parte del marco, por lo que la evaluaci贸n no es bastante objetiva (si selecciona solo ORM). Tambi茅n entre los l铆deres, Gorm, que se ha desarrollado desde 2013, admite transacciones y tiene muchas otras ventajas.



Sin embargo, como ha demostrado nuestra experiencia con Gorm, es posible que surjan ciertos problemas al usarlo, especialmente al probar: por ejemplo, la carrera de datos o la eliminaci贸n de una clave for谩nea. Podemos suponer las siguientes causas de tales errores en Gorm:

  • Se compromete inmediatamente en master
  • Etiquetas faltantes
  • Constructor sql impredecible

Por el momento, en nuestro trabajo, preferimos varios ORM que no utilizan la interfaz {}: estos son Kallax, Reform y Sqlboiler. Usualmente usamos el paquete Golang para migraciones y el repositorio de orm-bench con los puntos de referencia ORM en Go. Al mismo tiempo, no debe perseguir solo puntos de referencia. M谩s a menudo, la velocidad no es tan importante como la calidad del c贸digo y su funcionalidad.

Para resumir


Las ventajas del lenguaje Go para el desarrollador y para las empresas incluyen una mayor productividad del desarrollo, la capacidad de usar menos servidores, la facilidad sint谩ctica y un tiempo de capacitaci贸n m谩s r谩pido para los nuevos desarrolladores, un gran conjunto de herramientas y una comunidad amigable. A pesar de que es un idioma joven, est谩 en constante crecimiento y desarrollo. Las caracter铆sticas de Go lo convierten en el lenguaje 贸ptimo para una amplia variedad de proyectos, desde tareas de red hasta microservicios y blockchain.

El art铆culo fue preparado sobre la base de nuestro informe en la reuni贸n Hot Backend en Samara.

Source: https://habr.com/ru/post/458074/


All Articles