You are on page 1of 6

6/5/2019 Concurrencia y paralelismo: cómo Sengrid usa Go

Planes Iniciar sesión Menú

< Blog

 Concurrencia y paralelismo: cómo Sengrid usa Go


14
jrsequera 2711 Puntos  hace 2 años

Siempre trato de usar analogías para entender toda clase de conceptos, pues a
partir de algo sencillo es fácil extrapolar a problemas de mayor complejidad,
misma lógica. Por eso abordaré el concepto de concurrencia y en qué se
diferencia con paralelismo o procesos en paralelo.

Al nal hablaré cómo Sendgrid, una compañía de servicios de marketing por


email, utiliza Go como lenguaje primario para el desarrollo de sus aplicaciones.

¿Qué es concurrencia y paralelismo?

Cuando tienes varias tareas que ejecutar y las haces al mismo tiempo necesitas
una concurrencia.

Ejemplo

Imagina que tienes dos tareas en el día: llegar de la casa al trabajo (Tarea 1) y
hacer una presentación (Tarea 2).

Para llegar del trabajo a la casa tienes que tomar tres trenes: A B y C y esto
 toma 2 horas. Share

14
Para hacer la presentación toma de tu tiempo 4 horas.
https://platzi.com/blog/concurrencia-paralelismo-go-sengrid/ 1/6
6/5/2019 Concurrencia y paralelismo: cómo Sengrid usa Go

Puedes ejecutar las tareas de tres maneras:

Ejecución secuencial: Puedes ir al trabajo y a la llegada empezar a hacer la


presentación. Así entonces, el total de tiempo para ejecutar las dos tareas en este
caso, sería de 6 horas.

Ejecución concurrente: te das cuenta que puedes emplear el tiempo en el que


permaneces sentado en el tren para sacar tu laptop y adelantar la presentación,
mientras llegas el trabajo. Los procesos son interrumpidos, pues no puedes
trabajar en tu presentación mientras haces la la para cada tren y es importante
notar, que ambas tareas son ejecutadas por una misma persona.

Ejecución paralela: En este caso, tienes un compañero de equipo al cual le pides


que trabaje contigo en la presentación. Al nal llegas al trabajo y tienes la
presentación lista. En este caso, nota que el trabajo de presentación fue
ejecutado por dos personas

Para resumir:

En concurrencia trabajas en tareas que son ejecutadas al mismo tiempo y


de forma independiente.
En paralelismo, divides el trabajo en sub-tareas para que pueda ser
nalizado por más ejecutores.

Es especialmente en procesos concurrentes donde Go es fuerte gracias a


Goroutines.

package main

import "fmt"

func f(n int) {


for i := 0; i < 10; i++ {
fmt.Println(n, ":", i)
}
}


func main() {

Share
14 go f(0)

https://platzi.com/blog/concurrencia-paralelismo-go-sengrid/ 2/6
6/5/2019 Concurrencia y paralelismo: cómo Sengrid usa Go

var input string


fmt.Scanln(&input)
}

Este programa consiste en dos Goroutines:

1. La primera, es la función implícita (main function)


2. La segunda es cuand se llama go f(0).

En goroutines se ejecuta la siguiente función sin necesidad de que la anterior


esté nalizada y con la ayuda de Scaln el programa no termina sin haber dado la
oportunidad de imprimir todos los números.

Sendgrid y la adopción de Go

Sendgrid es herramienta usada por empresas como Uber, Spotify o Airbnb para
el envío de emails masivos y tiene un trá co de 500 millones de emails enviados
diariamente. Su lenguaje de backend en sus inicios fue Perl, cambiando a Python
tiempo después.

“Estos lenguajes no cumplían con las necesidades del negocio y por


tanto tomaron la decisión de cambiar a otros lenguajes, entre las
opciones estaban Java, Scala y Go.”. Comenta Tim Jenkins, co-founder de
Sendgrid.

Uno de sus grandes retos en desarrollo ha sido el uso de programación


concurrente y la inclusión de este concepto en Go fue una de las razones
principales para su adopción en Sendgrid. Aunque hay más ingenieros que
desarrollan en Java, hacer programación concurrente es más complejo, diferente
a Go.

Por otra parte, aunque son pocos los desarrolladores en el lenguaje de Google, su
comunidad tiende a ser más entusiasta y realmente interesada en aprender
 
Share
14

https://platzi.com/blog/concurrencia-paralelismo-go-sengrid/ 3/6
6/5/2019 Concurrencia y paralelismo: cómo Sengrid usa Go

cosas nuevas y experimentar.Esta ha sido la clase de desarrolladores que


quieren en Sendgrid, según dice Tim en su blog.

Al nal, la decisión no sólo estuvo al rededor de adoptar a Go como lenguaje de


backend, sino aportar todos sus desarrollos de manera OpenSource con el
objetivo de fortalecer la librerías y su comunidad. Aprende Go y desarrolla tus
aplicaciones de backend en el Curso de Programación en Go.

Jose
@jrsequera 2711 Puntos  hace 2 años Todas sus entradas

    Insertar código  Enlace  Imagen   

Suma tu comentario +2 

alejandromendezocampo 19 Puntos  2 años



1 <h2>senDgrid 😉</h2>

lizx-guzelx 23 Puntos  un año



1 không nào mà mình nói đến điều đó nữa https://www.bkori.com/phim-xx/tokyo-hot làm gì nhỉ mình chỉ mời
các bạn đón xem dể các bạn tự mình cảm nhận

Entradas relacionadas


5

¿Cómo aportamos con soluciones a los problemas de nuestras ciudades? IoT es la solución 
 Share
14

https://platzi.com/blog/concurrencia-paralelismo-go-sengrid/ 4/6
6/5/2019 Concurrencia y paralelismo: cómo Sengrid usa Go

Son in nitas necesidades las que podemos encontrar y buscarles solución. Podrás pensar que
solo eres un ciudadano y preguntarte ¿qué podría

Karobot


7

Flujo de trabajo en Motion Graphics

Si estás suscrito al canal de youtube de Platzi o no te pierdes los PlatziLive los jueves, es probable
que hayas visto videos animados como

iKenshu


6

¿Qué es IoT?

En los últimos años se ha hablado sobre una tendencia en tecnología en la cual todo está
conectado a internet, lo llamamos: “Internet de las

eduardo-wero-contreras

Preguntas frecuentes Contáctanos Prensa Conferencias Términos y Condiciones Privacidad Estudiantes

Hola

Cambiar idioma

Español 

Entérate de todas las novedades en educación, negocios y tecnología

Correo electrónico Suscríbete

Ver todas

   
 
Share
14
Platzi
https://platzi.com/blog/concurrencia-paralelismo-go-sengrid/ 5/6
6/5/2019 Concurrencia y paralelismo: cómo Sengrid usa Go

Educación online de calidad

Reconocidos y premiados por

De LATAM con para el mundo

 
Share
14

https://platzi.com/blog/concurrencia-paralelismo-go-sengrid/ 6/6

You might also like