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: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.
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.
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:
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.
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.
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.
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.
Gracias por compartir mas con nosotros sobre los retos técnicos que enfreta el teamPlatzi dia a dia 😉
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?
Hola darvin_orozco a mi me parece muy buena idea eso que propones, Saludos
Gracias @hhimely todo sea por aprender 😉
Buena idea. a mi también me gustaría ver como fue este proceso.
Además está bien detallado 👍
Hagan backup!!! jeje
Escencial para un punto de retorno
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 🤓?
En total acuerdo con lo que propones. ¿Tú utilizas Redis?
Hola Marvin, si, lo utilizo comúnmente para el guardado de sesiones con Nodejs y express-session
Darvin* ❕
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 ejecutabahttp://locahost:8000/users?page=1http://locahost:8000/users?page=2 ...
y asi… hasta que eterminaba y pasaba a la siguiente estructura a migrar.
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.
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.
En total acuerdo con lo que dices. Todo aprenderemos de un proyecto real a gran escala.
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
Hola, la decisión principal del cambio ¿Siempre es por el performance cuando la base de datos crece mucho?
No siempre
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.
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í…
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.
¡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”
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 !.
Hola, con calidad de datos ¿A qué te refieres específicamente?
Saludos
Me parace interesante como AWS facilita un trabajo como lo es el migrar las bases de datos de un sitio tan grande como Platzi.
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.
Si, excelente petición, una actualización del curso de PG
Es bueno saber que son abiertos a compartir esas cosas, hacen que los estudiantes piensen en casos reales y decisiones Enterprise vitales. 👍🏻
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í!!!
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.
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
En total acuerdo con lo que solicitas, así, todos aprendemos.
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. 😃
Interesante
¿En qué puntos específicos MySQL no da el ancho para tener que cambiar a PostgreSQL?.
¿Cómo PostgreSQL los soluciona?
Saludos
¡Interesantes preguntas! Tus respuestas van más del lado técnico, ¿verdad, el por qué cambiarse de MySQL a PostgreSQL?
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.
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?
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.
♪♪♪ El apocalipsis ha llegado, con solo una instrucción ♪♪♪
.
.
.
♪♪♪ No te olvides de poner el WHERE en el DELETE FROM ♪♪♪
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.
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.
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.
Platzi Live de la migración jejeje ok no.
Pd. no olviden el where en el delete
Hola, cuando inicia el curso de PostgreSQL?
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 😉
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?
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 😄
corijanme si me equivoco por favor. Saludos ✋
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.
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.
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.
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.
Nos falta un curso de Odoo que suele ser el ERP para las Mypes de Latinoamerica
Con estos reportes si compro acciones de platzi
Y el plan de remediación en caso de falla?
Espero que el plan de recuperación en caso de falla, sea tema de otro post.
Muchas gracias por compartirnos esta información
😃 Muchas gracias por esta valiosa informacion, los estudiantes apreciamos mucho poder ver y aprender movimientos y deciciciones valiosas.
X 2
Todo sea por mejorar
gracias por la información no sabia a que posgreSQL soporta JSON
Gracias por la aclaracion y conocimiento
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
Buena suerte
Justo estoy programando mis horarios para amanecerme de jueves a viernes 😦
ok no broma 😅
Excelente, vamo a darle, éxito.
¿En qué partes de Platzi utilizan MongoDB?
En otras oportunidades han comentado que lo usan en el sistema de puntajes y chats, si mal no recuerdo.
Yo pensé que siempre habían ocupado Postgres O.o, De Backend Django y Front React. O ya cambiaron su Stack?
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.”
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.
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.
Gracias, Totales.
Gracias por compartir estas cosas con nosotros.
¡Genial! Espero con ansias los futuros proyectos de platzi. Seguro crearan cosas increíbles.
Excelente lectura
Excelente información!
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.
Que bueno leer este tipo de post porque nos muestra de manera concisa lo que pasa detrás cámaras con los procesos tecnológicos de una empresa y es fundamental para los developers saber como ocurren los mismos
Tema de gran inspiración para todos aquellos que aspiramos a crear aplicaciones que sean utilizadas a gran escala.
¡Felicidades!
Genial
interesante revisión de un caso real
Gracias por hacer parte a la comunidad de sus cambios y ayudarnos a entender 😃
Wao excelente consejo sobre una migracion y sus experiencias en estas
Excelente, manejando las buenas practicas desde el principio, uno puede ahorrar mucho tiempo en el futuro.
Oh que bien no sabía de esta migración, vengo del curso de Postgres!
Excelente ver una empresa de enseñanza en linea, tenga este tipo de flexibilidad en su tecnologia y herramientas
Buen post, ¡gracias!
Interesante experiencia.
Solo un comentario, en esencia imagino que migrar a otra DDBB es una mega-insert, pero respetando las características del nuevo sistema y sin afectar las consultas que hagan los usuarios.