Si construyeras Spotify desde cero hoy, ¿qué idiomas o tecnologías usarías?

1. El enfoque comercial que usaría es la metodología de inicio LEAN. por ejemplo: un enfoque de producto mínimo viable (MVP). También investigaría incentivos gubernamentales, subvenciones e incentivos fiscales para I + D. Una estructura correcta realmente puede ayudar con el flujo de caja.

2. También analizaría profundamente los programas creativos de socios que ofrecen las compañías de tecnología con las que podría tratar. Personalmente, iría con el programa Bizspark de Microsoft e intentaría calificar para el beneficio Bizspark Plus . Bizspark ofrece ~ us $ 100K de software por 3 años, Bizspark Plus nos agrega $ 120K de alojamiento de Azure por 1 año. AWS, Google y otros también tienen programas de inicio. No creo que sean tan buenos, pero tú podrías.

3. Debido a la gran escala, la audiencia internacional y la necesidad de tolerancia a fallas que alojaría en la nube . Tal vez podría encontrar una mejor oferta a través de varios servidores web locales o ejecutando mis propios centros de datos. Pero solo una vez tuve unos pocos cientos de millones en ingresos. Incluso entonces probablemente no.
Elegiría una solución Azure PAAS . Realmente me gusta su capacidad de escala automática. Además, no necesitaría a mi personal de TI para realizar actividades básicas de infraestructura como parchear sistemas y fallar.

4. Usaría SignalR para comunicarme en tiempo real con mi audiencia.

5. Lo más probable es que C # y .NET MVC para el lado del servidor dev. Con él, usaría la función Bloqueo de aplicaciones de registro semántico (SLAB) de Microsoft Enterprise Library 6.0. Es mucho mejor que emitir mensajes de error de texto sin formato, ya que es necesario analizarlos mediante Splunk.

6. El Almacén de datos puede necesitar más reflexión. Mis pensamientos iniciales son Azure Blob Storage para almacenar los archivos de sonido, es efectivamente una base de datos NoSQL KeyValue que Microsoft replica en múltiples centros de datos sin la necesidad de que yo codifique esto. (La versión local de SQL Server tiene algunas características realmente fuertes para transmitir y administrar archivos de audio y video muy grandes, pero actualmente no está disponible en la nube. Además, Azure Storage es mucho más barato).

El control y la facturación se pueden realizar en varias bases de datos SQL Azure de Azure . Suponiendo que mi aplicación se particiona fácilmente. Si no, necesitaría sopesar la opción de Azure SQL frente a alguna otra solución distribuida NoSQL.

7. La parte delantera es la opción más difícil. Como depende de cuán ricas sean las características que debe tener mi aplicación cliente. Si se trata simplemente de una búsqueda y una lista de canciones, entonces quizás los renderizados HTML5 puros a través de MVC RAZOR serían suficientes.

Cuanto más interactivo quisiera que fuera, más invertiría en las arquitecturas del lado del cliente. Personalmente no me gusta Javascript, hace poco para evitar errores de codificación. Por lo tanto, me aseguraría de usar una tecnología para mejorarla. Para una mejora mínima, iría con JQuery y JQueryUI. Para un pervertido más grande, usaría Typecript . Su precompilador genera Javascript pero le permite encontrar toneladas de sus errores de codificación en tiempo de compilación.

También puedo considerar usar un Framework. El más popular en la actualidad parece ser angular . Esto debería hacer que haga pruebas de usuario. Tal vez también usaría a Jasmine para ejecutar pruebas. Quizás D3 para gráficos. Si Angular es un poco pesado, mi otra opción sería KnockoutJs , realmente me gusta, ya que AJAX funciona muy bien y minimiza la mayor parte del Javascript que necesita escribir.


8. Si estuviera haciendo un montón de IU, también consideraría usar una herramienta de terceros . Considero que la Infragistics es realmente buena y funciona con muchos otros frameworks. Telerik es una ventanilla única completa, que es realmente poderosa si tienes un equipo de desarrolladores trabajando en múltiples proyectos.

9. Para la integración continua, mi elección es Visual Studio Online . Me da implementaciones instantáneas en mis proyectos de Azure. Obtengo un control de fuente centralizado, por lo que las personas que se olvidan de sincronizar antes del registro no son un problema. Y la capacidad de depuración y métrica de Application Insights es un ahorro de tiempo real, que mejora enormemente la calidad del proyecto.


Otras cosas notables a tener en cuenta. (si no le gusta usar productos de Microsoft y no quiere usar la versión gratuita de Visual Studio)

Notepad ++ es un editor de código de código de color correcto.

Octupus Deploy es ideal para la administración automatizada de versiones.

TeamCity ayuda con Build & releases.

TortoiseSVN es un buen ayudante para su sistema de gestión de código fuente de Subversion.

Chef , Puppet o Powershell es imprescindible para automatizar las operaciones de su entorno.