¿Qué es la pila de tecnología de Udacity?

Prepárese para obtener más respuestas de las que esperaba …

Para ampliar un poco lo que Piotr mencionó, estas son algunas de las razones por las que elegimos la tecnología que tenemos hoy, algunos de los pros y los contras con los que nos hemos encontrado en el camino, e incluso un poco sobre dónde podría llevar el futuro nuestra pila tecnológica

Google App Engine para el back-end

La escalabilidad de App Engine ha sido un gran beneficio para nuestro equipo. Somos un equipo de ingeniería relativamente pequeño, y aunque App Engine tiene sus peculiaridades (consistencia eventual y latencia aleatoria, ¿alguien?) El hecho de que no tenemos que dedicar mucho tiempo al mantenimiento de los servidores o la escalabilidad / confiabilidad de El hardware nos da una ventaja fantástica.

Usamos la variante Python de GAE porque Python es un lenguaje encantador que es fácil de codificar y leer 🙂

Si estás interesado en aprender más sobre el motor de aplicaciones, ¡aquí tienes un descarado complemento de Udacity! Curso de desarrollo web en línea: cómo crear un blog enseña los fundamentos de desarrollo web, incluidos algunos sobre el uso de App Engine bajo el capó.

MongoDB para recopilar análisis

La velocidad. Oh hombre. La velocidad. (Por lo que estamos haciendo con él).

Volcamos una gran cantidad de datos de actividad en nuestra base de datos Mongo, desde eventos de registro hasta resultados de cuestionarios y acciones de Twitter. Con todos ustedes trabajando en nuestro servidor (¡nos encanta!), Los datos llegan.

Almacenar y extraer nuestros datos de Mongo es, para nosotros, todo sobre rendimiento y flexibilidad. Sí, en algún momento destacaremos lo que podemos hacer en este ámbito, pero desde que hicimos el salto a fines de enero, trabajar con datos a mayor escala ha sido muy fácil.

¿Ejemplos de lo que estamos haciendo? Todo, desde las pruebas A / B del contenido del sitio web (¿animar a los estudiantes a compartir su progreso en Facebook les ayuda a llegar al final del curso?) A buscar contenido de prueba roto o involuntariamente difícil (“Solo el 5% de nuestros estudiantes finalmente lo hizo bien ? Hmm … “)

Uno de los enormes beneficios de los MOOC es la capacidad de utilizar datos a gran escala para mejorar la forma en que entregamos material educativo, y MongoDB realmente nos ha permitido llegar a ese punto sin una inversión de tiempo irrazonable en el rendimiento y mantenimiento de la base de datos.

AWS para la ejecución de código

Para las asignaciones de programación, necesitamos poder ejecutar su código en un entorno completo, y nuestro sistema de clasificación de espacio aislado en AWS hace exactamente eso. Este es otro lugar donde la escala y la confiabilidad del hardware se eliminan de la gran lista de cosas por las que debemos preocuparnos, y estamos de acuerdo con eso.

Todo, desde su primer programa Python, hasta su código CUDA enormemente corpulento, se ejecuta en este entorno y nos permite ofrecer una gama mucho más amplia de lenguajes / entornos de programación desde el navegador de lo que de otra manera sería posible.

Al igual que con cualquier configuración de “Make A talk to B”, a veces recibimos interrupciones del servicio (¡muy pocas veces! ¡Gracias, Google y Amazon!), Pero el hecho de que un estudiante puede aprender a codificar en Python desde una computadora de biblioteca compartida sin tener que instalar algo? Eso es genial 🙂

AngularJS para JavaScript

Angular. Es. Asombroso.

Hemos intentado todo, desde Ember.js (V1 del sitio web de Udacity, que se retiró este enero, era todo Ember), Backbone.js, Knockout y, al final, Angular fue la solución adecuada para nosotros (aunque aumentamos con Underscore.js para obtener la bondad completa de JS).

Los servicios inyectables, las pruebas como ciudadano de primera clase, la comunidad increíble y solidaria … es sinceramente un placer trabajar con ellos. Una vez que te preparas, desarrollar con Angular es un ejercicio de increíble reutilización y “¡Hey, sí! Así es como debería funcionar esto.

Me gustaría mencionar explícitamente que Angular se tomó un poco de tiempo cuando era joven para descubrir qué, exactamente fue … Unos viajes por Europa, un romance vertiginoso con MVC y la orientación de algunos buenos amigos más tarde, es un marco verdaderamente estelar. La documentación / tutoriales en algún momento aún muestran artefactos de su fase de autodescubrimiento, así que echa un vistazo a los Grupos de Meetup de AngularJS para obtener lo último y lo mejor.

Por último, Angular 1.2 está a punto de salir y todo nuestro equipo de front-end está extremadamente emocionado de ver esa caída. Están agregando muchas características nuevas, solucionando algunas peculiaridades menores y mayores, y generalmente mejorando todo aún más.

Bootstrap y MENOS para peinar

La decisión aquí fue mucho menos clara que el lado Javascript de la ciudad.

En primer lugar, quiero decir que Bootstrap es bastante fantástico para las startups. El uso de bootstrap le dará un diseño sólido, si es decididamente bootstrap, y sacará a su MVP de la puerta en una fracción del tiempo que le tomaría solo manejar la compatibilidad con IE. (Aunque, para ser justos, IE11 está llegando allí, debería quemarme en la hoguera por reconocer eso. Lo sé).

Ahora, por lo menos divertido: cuando llega el momento de dejar la relativa comodidad de Bootstrap y entrar en el mundo de “¿Qué pasa si quiero hacer algo que Bootstrap no hace?” Las cosas se ponen difíciles. Y hinchado. Y un poco doloroso.

Incluso compilando nuestra propia versión extremadamente ajustada y ajustada de Bootstrap (en lugar de simplemente cargar bootstrap de vainilla y luego poner en cascada nuestras propias reglas), les enviamos MUCHOS CSS. No es ideal, pero en el mundo de obtener sus clases y características de manera oportuna, cumple su propósito.

En una versión futura del sitio, comenzaremos a eliminar gradualmente nuestros trozos de bootstrap menos utilizados en favor de nuestro propio marco de trabajo propio.

En el frente de cosecha propia: nuestro estilo general coincide bastante con las ideas detrás de SMACS (por el increíble Jonathan Snook), y toma un poco de las fantásticas ideas de Nicole Sullivan de Nicole Sullivan sobre OOCSS. Intentamos crear módulos y reglas CSS reutilizables y extensibles que nos ayuden a usar nuestro CSS una y otra vez. ¡Imagina eso!

Finalmente, “¿Por qué MENOS? ¿Por qué no SASS? ”Debido a que Bootstrap está escrito en MENOS, y si crees que quiero ir cambiando entre sobrescribir Bootstrap en MENOS y Udacity en SASS, tienes otra cosa por venir … 🙂

Y he terminado

Ahí lo tienes, de abajo hacia arriba, cómo funciona Udacity. Como mencionó Piotr, esta es la instantánea tecnológica de hoy ; Una de las cosas fantásticas de trabajar en un proyecto en evolución como Udacity, es la capacidad de usar tecnología nueva y mejor a medida que esté disponible.

Haré todo lo posible para agregar a las excelentes respuestas de Quora User y Piotr Kaminski. Los productos que componen la pila tecnológica de Udacity incluyen: AngularJS, Apache (Commons, Kafka), Atlassian JIRA, Bootstrap, Docker, Fabric, GitHub, JavaScript, Layer, MongoDB, PagerDuty, Python, R, Redis, Reviewable, Ruby on Rails , Stetho, Transifex, Comodo SSL, Crashlytics, Disqus, Go, Google (App Engine, Computer Engine), Linode, New Relic, WordPress y WP Engine.

Además, aquí hay una lista de otros productos de software que Udacity está usando internamente:

  • Marketing : Blueshift, Facebook Ads, Parse Push, Postmark
  • Ventas y soporte : ProsperWorks, Salesforce Sales Cloud, SatisMeter, OptinMonster
  • Analytics : Amplitud, Google Analytics, Optimizely, Segment
  • HR : Andela, Dribble Jobs, Kin, Lever
  • Productividad : Adobe eSign Services, DocuSign, Asana, Dropbox

Para obtener una lista completa del software utilizado por Udacity, consulte: Pila de Udacity | Siftery

(Descargo de responsabilidad: los datos anteriores se obtuvieron de Siftery y han sido verificados por personas que trabajan en Udacity)

Usamos Python en App Engine, Mongo con scripts Python en un cuadro local para análisis, OSQA en Linode para los foros y un poco de código C (creo) en AWS para ejecutar código de estudiante de espacio aislado. En el front-end, es AngularJS con Bootstrap y LESS. Al menos esa es la instantánea tecnológica a partir de este escrito …

Pila de tecnología front-end de Udacity – Udacity Eng & Data

Aquí Udacity nombra su pila completa de front-end. ¡Echale un vistazo!

Sin embargo, no estoy seguro de cuál es su pila de tecnología de fondo.

[[Udacity Tech Stack]]

Es posible que desee comprobar esta respuesta ¿Cuál es la pila de tecnología de Udacity?