81

El apagón de Platzi / Migramos de MySQL a PostgreSQL

6548Puntos

hace 10 meses

Fundamentos de Bases de Datos
Fundamentos de Bases de Datos

Fundamentos de Bases de Datos

Antes de utilizar cualquier tecnología para bases de datos debes entender los fundamentos de diseño y modelado requeridos para que tengas la mejor arquitectura posible. Crea tus propios modelos de bases de datos con las mejores prácticas desde cero.

Vamos a apagar Platzi. On/Off. Durante la madrugada del Jueves tendremos una ventana de mantenimiento de una hora, durante este tiempo estaremos en un intensivo proceso de migración. Platzi se mueve de MySQL a PostgreSQL para su fuente de datos principal.


Para dejar las cosas claras. Primero ¿Qué es una Base de Datos?

Alberto Alcocer:(2018). Curso de SQL y MySQL

Es un lugar donde podemos ir almacenando datos puntuales de cualquier cantidad de cosas para después operar sobre ellos y convertirlos en información. Esa información convertirla en operaciones de negocio y las operaciones de negocio convertirlas en dinero, crecimiento, sabiduría lo que sea.

Para entender más te recomiendo este excelente y sencillo post que explica a profundidad los fundamentos de este tema.


¿Por qué estamos haciendo esta migración?

Actualmente en Platzi usamos más de una Base de Datos para distintas tareas, tenemos cierta parte en MongoDB, otra parte en Redis, que son distintos tipos de Bases de Datos, e incluso ya usamos PostgreSQL, pero nuestro repositorio principal está en MySQL.

Para el punto donde estamos con Platzi en este momento PostgreSQL nos ofrece características más interesantes que nos permitirán optimizar ciertos procesos y facilitar el trabajo del equipo de Ingeniería. Adicionalmente tras la migración estaremos en mejor posición para obtener información sobre lo que está ocurriendo en la base de datos y de esa forma tomar mejores decisiones y de forma más rápida.

Los cambios difíciles duelen, pero son necesarios y es parte de crecer. Es más fácil no hacerlo y seguir ignorando los problemas, por eso muy pocos lo hacen. Haciendo las cosas fáciles nadie ha cambiado al mundo.

¿Por qué PostgreSQL?

En palabras de Anibal Rojas. VP de Engineering en Platzi.

MySQL es una excelente base de datos, y nos ha funcionado muy bien en Platzi, tiene un gran performance y rendimiento, sin embargo Platzi ha crecido y PostgreSQL nos ofrece características que nos van facilitar no solo el desarrollo de nuevos features sino a aprovechar los datos que tenemos almacenada para tomar mejores decisiones de negocio de forma más segura.

Entre las características más relevantes de PostgreSQL que nos llevaron a elegirla están:

  • Mejor soporte para expresar y almacenar lógica de negocios compleja
  • Soporte JSON para data no estructurada.
  • Mayor capacidad de introspección para entender qué está sucediendo dentro de la base de datos
  • Más facilidades para queries complejos que le permiten a los diferentes equipos de Platzi aprovecha los datos almacenados

¿Cómo se toma esta decisión en un equipo de ingeniería?

En este caso el proceso fue sencillo debido a que el equipo en general veía mucho potencial en migrar, y el equipo de DevOps se sentía muy a gusto con esta decisión. Las mejoras tanto desde el punto de vista operaciones como de desarrollo compensaban ampliamente el trabajo de migración.

backends.jpg

¿Cómo ha sido el proceso técnicamente?

Las dos Bases de Datos ya están en línea. Esto lo logramos usando una herramienta de AWS (Amazon Web Services) llamada AWS Database Migration Service, que hace una migración de la información que entra en MySQL y actualiza en tiempo real en PostgreSQL

Platzi está construido de forma de que es agnóstico con la base de datos, es decir se han seguido buenas prácticas que nos permite movernos sin tener un Lock-in a una base de datos determinada.

Aunque AWS DMS tiene algunas limitaciones… Por ejemplo: Los Booleanos, se manejan diferentes entre MySQL y PostgreSQL, y para esto el equipo de desarrollo en Platzi debe hacer procesamientos separados para que la información quede adecuadamente procesada. También los sequences tuvieron que ser ajustados y algunos otros detalles, pero en general el proceso fue bastante directo.

El proceso comenzó hace meses con experimentos de migración y evaluación de herramientas y en las últimas semanas hemos logrado la migración exitosa usando AWS DMS, ahora solo queda hacer el cambio definitivo que sucederá la madrugada del Jueves.

¿Entonces MySQL es malo?

No, MySQL no es mala opción.

Cabe aclarar que no es que MySQL no funcione, simplemente estamos en un punto en el que necesitamos características distintas para facilitar nuestro crecimiento.

Si estás comenzando en el mundo de las Bases de Datos MySQL te provee todo lo necesario para sea más fácil arrancar.


Para nuestros queridos estudiantes: Gracias por acompañarnos en este crecimiento, no te rindas que nosotros no lo hacemos. Recuerda que este Jueves entre 12:00 am y 1:00 am (GMT-5 MEX-COL) estaremos Off para seguir construyendo la mejor plataforma de educación del mundo.

Fundamentos de Bases de Datos
Fundamentos de Bases de Datos

Fundamentos de Bases de Datos

Antes de utilizar cualquier tecnología para bases de datos debes entender los fundamentos de diseño y modelado requeridos para que tengas la mejor arquitectura posible. Crea tus propios modelos de bases de datos con las mejores prácticas desde cero.
Fabián
Fabián
@foloarte

6548Puntos

hace 10 meses

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
19
5127Puntos

Gracias por compartir mas con nosotros sobre los retos técnicos que enfreta el teamPlatzi dia a dia 😉

6
9008Puntos
10 meses

Concuerdo contigo. Pero lo mejor, sería saber (a través de un post o vídeo) que nos cuenten los retos que enfrentaron cuando hicieron la plena migración. ¿Qué dices, es buena la idea?

2
409Puntos
10 meses

Hola darvin_orozco a mi me parece muy buena idea eso que propones, Saludos

1
9008Puntos
10 meses

Gracias @hhimely todo sea por aprender 😉

1
5137Puntos
8 meses

Buena idea. a mi también me gustaría ver como fue este proceso.

9
18348Puntos

Genial! ¿Podrían hacer otro post en el cual expliquen en qué casos de uso utilizan MongoDB y Redis en Platzi? Así mismo, hacer un curso dedico a Redis 🤓?

1
9008Puntos
10 meses

En total acuerdo con lo que propones. ¿Tú utilizas Redis?

2
18348Puntos
10 meses

Hola Marvin, si, lo utilizo comúnmente para el guardado de sesiones con Nodejs y express-session

9
1893Puntos

Sería genial luego de la migración, publiquen las metodología que usaron, la fase inicial, los obstáculos, como corroboraron que la migración fue un éxito, los resultados alcanzados. Sera excelente leerlo, ya que estos eventos no ocurren muy seguidos.

1
9008Puntos
10 meses

En total acuerdo con lo que dices. Todo aprenderemos de un proyecto real a gran escala.

6
8551Puntos

Excelente decicion, yo la tome hace algunos años de dejar Mysql y hacer mis apps en PostgreSql, aunque por razones diferentes, y ahora no extraño a mysql para nada

1
9008Puntos
10 meses

Hola, la decisión principal del cambio ¿Siempre es por el performance cuando la base de datos crece mucho?

5
8551Puntos
10 meses
  1. Después de la adquisición de Mysql por Oracle así como paso con java demoro mucho para lanzar actualizaciones desmejoro mucho y se quedo un poco relegada frente a todos los cambios que estaba haciendo Postgres
  2. Postgres ofrece muchas mas herramientas para la administrar las transacciones que están ocurriendo en tiempo real en la bd
  3. El catalogo de tipo s datos que maneja es mucho mas amplio que Mysql
  4. Las actualizaciones y mejoras son mucho mas constantes y periodicas
  5. PgAdmin tuvo una epoca negra con las v 4.0-v4.3 pero las nuevas han mejorado mucho el admin de la bd
  6. las opciones de sincronizacion entre db y es Brutal
4
8551Puntos
10 meses

Mysql lo sigo queriendo es muy bueno y ahora con el soporte de la comunidad de MariaDb se esperan grandes cosas, puedes usarlo en tus proyectos sin ningún problema.

2
3212Puntos
10 meses

Hay algunas cosas que los desarrolladores debemos tener claro y mas aun cuando se trabaja en proyectos comerciales ‘reales’. MySQL tiene dos tipos de licenciamiento. Uno comerial para (eso justamente) proyectos e iniciativas comerciales como Platzi Y OTRO tipo de licensiamiento que es Free Software (NO se confunda con Open Source), el licenciamiento es GLP, lo que significa que SI EFECTIVAMENTE puedes usarlo en tus proyectos SIN PAGAR nada, PERO tu proyecto SI O SI tiene que ser tambien GLP, https://www.mysql.com/products/community/ Entonces aquellos que quieren abrir su codigo fuente pues adelante con ese licenciamiento, pero los que no, TIENEN que pagar

5

Qué interesante Post! Me gustaría mucho si se hiciera un vídeo de cómo hacen la migración en vivo, me refiero de poder apreciar la atmósfera del momento, la tranquilidad o el nerviosismo de los encargados y así…

2
9008Puntos
10 meses

En total acuerdo contigo… sería excelente un vídeo donde nos enseñen cómo se hizo la migración (claro, con la privacidad correspondiente del caso). Apoyo total a tu petición.

5
9008Puntos

¡Enterado! Muchos éxitos en la migración. Creo que las 12:00 am es una excelente hora para no afectar a quienes en horario nocturno, seguimos aprendiendo.
Siempre aprendo a través de los diferentes posts, y en éste, me quedo con la lección de que: “AWS Database Migration Service, les ayuda a migrar la información que entra en MySQL y actualiza en tiempo real en PostgreSQL”

5
3487Puntos

uuuff eso es bastante trabajo, tuve una experiencia similar, solo que de era el mismo gestor de base de datos pero la schema de las tablas eran diferentes. Era un sistema que fué construido (de lo que le salia de la cabeza al cliente), por lo cual no tuvo una construcción de base de datos bien estructurada. Cuando se terminó el proyecto y quedó el producto resultante, hubo muchos problemas de optimización por lo cual me etocó la tarea de rehacer el sistema con una estructura de base de datos bien optimizada a lo que el producto era actualmente. Aparte de reconstruir el sistema a lo que se le llamó una segunda versión, tuve que hacer un proyecto aparte (En Laravel) que recogiera los datos de la base de datos vieja, los procesara para cambiar al nuevo schema y salvarlos en la nueva base de datos. Como era una base de datos GIGANTE, una ejecución en php no era suficiente para hacer todo ese proceso, que hice?, bueno creé un mini programita en python que ejecutara el Migrador de laravel a traves de una API con la funcion:
requests.get(url), y coloque los procesadores con un paginador a traves de la url, así por ejemplo cuando tocaba migrar los datos de los usuarios el miniprogramita ejecutaba

http://locahost:8000/users?page=1http://locahost:8000/users?page=2
...

y asi… hasta que eterminaba y pasaba a la siguiente estructura a migrar.

3
9008Puntos
10 meses

Excelente post, muchas gracias! Aprendemos gracias a tu experiencia que parece similar, pero tiene otros retos! Felicitaciones y mil gracias por compartir tu trabajo y experiencia.

4
12034Puntos

Con toda muchachos, los estaremos acompañando en el proceso, algunos desde nuestros computadores otros desde nuestras camas, soñando con que todo saldra muy bien. 😃

4
10336Puntos

Ya presencié una migración hace tres años, fue difícil y hasta ahora seguimos sufriendo la calidad de los datos, que bueno sería ver hacer esto al equipo de platzi.

Ojala compartan que tal fue la experiencia en algún live !.

1
9008Puntos
10 meses

Hola, con calidad de datos ¿A qué te refieres específicamente?
Saludos

4
14244Puntos

Me parace interesante como AWS facilita un trabajo como lo es el migrar las bases de datos de un sitio tan grande como Platzi.

4
22Puntos

Es bueno saber que son abiertos a compartir esas cosas, hacen que los estudiantes piensen en casos reales y decisiones Enterprise vitales. 👍🏻

4
1497Puntos

Excelente!!! Que bien sería que hoy en el PlatziLive se hable un poco de lo sucedido (para seguir aprendiendo). Gracias por la información y sigan creciendo… Nosotros también estaremos ahí!!!

2
9008Puntos
10 meses

En total acuerdo contigo! Incluso, se me ocurre, que el trabajo que hicieron bien podría ser un proyecto o más bien un caso de estudio para algún curso de BD.

4
4614Puntos

Excelente team platzi me encanta ver que tomen riegos de cambiar desde el core y a su vez el esos riesgos los tomen de forma controlada.
me encantaría ver un post donde se pueda hablar sobre estos pasos previos a la migración en más detalle

2
9008Puntos
10 meses

En total acuerdo con lo que solicitas, así, todos aprendemos.

4

Felicidades y mucho exito para la comunidad de Platzi, esperemos que la actualización del curso de PostgreSQL pueda estar pronta en la brevedad para así poder útilizar esta gran base de datos. Saludos desde Montevideo - Uruguay.

1
9008Puntos
10 meses

Si, excelente petición, una actualización del curso de PG

3
2196Puntos

Muy bien, pero me queda una duda, ¿Que ganaban al empezar con MySQL, en lugar de hacerlo desde el principio todo en Postgres? ¿Facilidad? ¿Practicidad?. Por ahí ví un comentario dónde preguntan en qué casos es bueno Mongo y en qué casos estructurado, supongo que lo explican en algún curso pero no estaría de más que lo hablarán también ya que hacen la mención.

5
4038Puntos
10 meses

Era lo que en el momento cubría las necesidades que se tenían, al crecer ya es necesario buscar un performance mejor, postgresql nos ofrece en este momento justo lo que necesitamos.

3
9008Puntos
10 meses

Así nos pasa a todos. Al inicio de un proyecto, evaluamos ciertas tecnologías y una se ajusta más a nuestras necesidades de ese momento, pero todo cambia… nunca sabes sí un buen sistema hoy, mañana ya no lo será y salga otro sistema que ahora se ajuste a tus necesidades que cambiaron mucho desde cuando iniciaste.

3
20Puntos

♪♪♪ El apocalipsis ha llegado, con solo una instrucción ♪♪♪
.
.
.
♪♪♪ No te olvides de poner el WHERE en el DELETE FROM ♪♪♪

3
8851Puntos

Platzi Live de la migración jejeje ok no.
Pd. no olviden el where en el delete

3
2348Puntos

Interesante

¿En qué puntos específicos MySQL no da el ancho para tener que cambiar a PostgreSQL?.

¿Cómo PostgreSQL los soluciona?

Saludos

1
9008Puntos
10 meses

¡Interesantes preguntas! Tus respuestas van más del lado técnico, ¿verdad, el por qué cambiarse de MySQL a PostgreSQL?

3
8907Puntos

Por esto y mas cosas soy fiel con platzi
No todas las empresas comparten sus entrañas con el mundo y mucho menos rinden cuentas de los cambios que hacen; No utilizan sus proceso internos para ayudar a sus estudiantes a comprender estos procesos complejos que en el día a día no son muy comunes.

Gracias Platzi por compartir.

3
6782Puntos

Hola, cuando inicia el curso de PostgreSQL?

1
32864Puntos
10 meses

El curso aún no tiene una fecha de lanzamiento definida, pero cuando así sea la verás pronto en platzi.com/agenda junto a los demás lanzamientos 😉

3
5809Puntos

Excelente, cuando comparten este tipo de artículos me siento en el lugar correcto, no solo porque son transparentes con los estudiantes, si no porque nos presentan casos reales y aplicaciones prácticas de todo lo que nos enseñan. Gracias.

2
9008Puntos
10 meses

En total acuerdo. Éste post y la plena ejecución de la migración se convierte en un digno caso de estudio para algún curso. Creo que Platzi debería aprovechar ésta situación para crear un caso de estudio o proyecto de alto impacto para sus estudiantes.

3
945Puntos

Aquí exponen que unas de las características que tiene PosgreSQL es: Soporte JSON para data no estructurada, pero MySql en su ultima version ya adquirio este super poder, jeje.

Miren como lo promocionan de forma tan creativa 😄

Image 011.jpg

corijanme si me equivoco por favor. Saludos ✋

1
9008Puntos
10 meses

Gracias por el aporte! Al parecer MySQL está mejorando mucho más de lo que ya era… sin embargo, parece ser que PostgreSQL está mucho mejor diseñado desde los inicios y siempre está un paso adelante respecto a los demás. ¿Qué piensas?
Saludos.

3
6113Puntos

Hola, muchas gracias por la información.

Hablo por mí, pero creo que sería genial que nos compartieran un ejemplo de algo que esperan hacer y no pudieron con MySQL.

Por ejemplo: Conectar 500 tablas en una consulta, Crear 100 Vistas y luego relacionarlas, Triggers, etc.

Lo digo porque seria genial poder visualizar que tipo de problemas se tienen empresas grandes para optar por estas decisiones.

1
9008Puntos
10 meses

Buena idea, lo que entiendo de tu petición es que sepamos a partir de qué “número” de tablas, consultas, etc. ya se debe pensar en usar PostgreSQL. ¿Es así, entendí bien?

3
3212Puntos

Solo algunas preguntas para mi curiosidad:

  • Porque no AuroraDB? no hubiese sido una eleccion mas natural?

  • Estan usand RDS PostgreSQL como PaaS y una base de datos manejada?

  • Tendra algo que ver con el costo de MySQL?

2
3813Puntos

😃 Muchas gracias por esta valiosa informacion, los estudiantes apreciamos mucho poder ver y aprender movimientos y deciciciones valiosas.

2
8765Puntos

Con estos reportes si compro acciones de platzi

2
1162Puntos

Gracias por compartir estas cosas con nosotros.

2
7604Puntos

¡Genial! Espero con ansias los futuros proyectos de platzi. Seguro crearan cosas increíbles.

2
24935Puntos

¿En qué partes de Platzi utilizan MongoDB?

3
81Puntos
10 meses

En otras oportunidades han comentado que lo usan en el sistema de puntajes y chats, si mal no recuerdo.

2
618Puntos

Excelente, vamo a darle, éxito.

2
2906Puntos

Y el plan de remediación en caso de falla?

1
9008Puntos
10 meses

Espero que el plan de recuperación en caso de falla, sea tema de otro post.

2

Consulta, desisdieron usar postgresql por lo que opensource al igual que mysql, y si ese no es el caso porque no considerar sql server u Oracle

2

gracias por la información no sabia a que posgreSQL soporta JSON

2
526Puntos

Gracias por compartirlo con nosotros, es excelente saberlo y saber a groso modo como se migra una base de datos ya que no tenia ni la menor idea siquiera de que plataformas existían , espero todo resulte bien, saludos.

2
1317Puntos

Seria bueno incluir casos concretos (obvio con información privada cambiada) en donde se muestre como se logró que Platzi fuera agnostico de base de datos relacional. O ejemplos que apoyen esta buena práctica de desarrollo.

2
3997Puntos

Muchas gracias por compartirnos esta información

2
1093Puntos

Justo estoy programando mis horarios para amanecerme de jueves a viernes 😦

ok no broma 😅

2
16498Puntos

Platzi muere despues de fallo en migracion de la base de datos.
Ok no

2
25657Puntos

Yo pensé que siempre habían ocupado Postgres O.o, De Backend Django y Front React. O ya cambiaron su Stack?

2
10 meses

según el post ya usaban PostgreSQL en una parte de la lógica de negocio.

“Actualmente en Platzi usamos más de una Base de Datos para distintas tareas, tenemos cierta parte MongoDB, otra parte de en Redis, e incluso ya usamos PostgreSQL, que son distintos tipos de bases de datos, pero nuestro repositorio principal está en MySQL.”

2
1865Puntos

Gracias por compartir sus proyectos, me parece interesante como venden sus cursos.
Tengo una consulta, Platzi con qué ERP trabaja, ya que estoy en una implementación de SAP y entiendo que hay muchos permisos para entrar a su base de datos, entiendo que el cliente no puede acceder a la BD, por eso me causa curiosidad.

1
24935Puntos
6 meses

Nos falta un curso de Odoo que suele ser el ERP para las Mypes de Latinoamerica

1

Tema de gran inspiración para todos aquellos que aspiramos a crear aplicaciones que sean utilizadas a gran escala.

¡Felicidades!

1
3787Puntos

Que gran ejemplo dan a nosotros los estudiantes, el hecho de que nos cuenten sus historias de éxito y/o fracaso hacen ver que detrás hay un gran equipo y que todo se puede hacer si así lo queremos.

1
3794Puntos

interesante revisión de un caso real