¿Vale la pena pasar de la tecnología de Microsoft a Linux, NodeJS y otros marcos de código abierto para ahorrar dinero para una nueva empresa? [cerrado]


32

Actualmente me estoy involucrando en una startup, soy el único desarrollador involucrado en este momento, y los otros muchachos me están dejando todas las decisiones tecnológicas en este momento.

Para mi trabajo diario, trabajo en una empresa de software que utiliza tecnología de Microsoft en el día a día, utilizamos .NET, SqlServer, Windows Server, etc. Sin embargo, me doy cuenta de que, como startup, necesitamos mantener los costos bajos, y después de tener Una breve mirada al costo del alojamiento para Windows Me sorprendió ver algunos de los precios de un servidor dedicado. El más barato que encontré fue de £ 100 al mes. Además, si la empresa necesita escalar en el futuro y terminamos necesitando varios servidores, podríamos terminar desembolsando £ 10 de £ 000 al año en licencias de SQL Server / Windows Server, etc.

Luego eché un vistazo rápido al precio del alojamiento de Linux para un servidor dedicado y vi que el precio era muuuucho más bajo que el alojamiento de Windows. Un lugar estaba ofreciendo una máquina con 2 núcleos por menos de £ 20 al mes.

Esto me hizo pensar que tal vez el camino a seguir es el código abierto en Linux.

Mientras escribo una gran cantidad de Javascript en el trabajo (estoy trabajando en una aplicación troncal de una sola página en este momento), pensé que tal vez NodeJS y un marco web como Express serían geniales de usar. Entonces pensé que en lugar de usar SQL, ¿por qué no usar una base de datos NoSQL de código abierto como MongoDB, que tiene un gran soporte en NodeJS?

Mi única preocupación es que parte del trabajo que realizará la aplicación será construir dinámicamente imágenes y varias otras cosas relacionadas con la imagen, es decir, cosas que son bastante pesadas para la CPU, así que estoy pensando en escribir algo que sea muy pesado para la CPU en C ++ y consumiéndolo como un módulo en Node.

Ese es el trasfondo, pero básicamente Linux es una buena combinación para:

  1. ¿Alojando un sitio NodeJS / Express?
  2. ¿Compilando módulos de nodo C ++?
  3. ¿Usa una base de datos NoSQL como MongoDB?

¿Y es una buena idea pasar a estas tecnologías desconocidas para ahorrar dinero?


ACTUALIZACIÓN DE 3 MESES

He estado trabajando en esto durante los últimos meses, así que pensé en dar una actualización en caso de que alguien esté interesado.

Al final decidí no usar una pila NodeJS y Linux por la simple razón del tiempo. Estoy haciendo esta puesta en marcha de forma paralela, así que estoy trabajando 9 horas al día, luego me voy a casa y trabajo hasta tarde en la puesta en marcha. Mientras trabajo de esta manera, obviamente necesito ser lo más eficiente posible con mi tiempo, o nunca terminaré enviando el producto.

Después de tomar algunos de los consejos sobre este hilo, solicité Microsoft BizSpark y fui aceptado. Esto significa que ahora tengo acceso a la licencia de Visual Studio, la licencia de Windows Server, etc., todo de forma gratuita. Lo cual es asombroso. Afortunadamente, para cuando tengamos que comenzar a pagar por todo lo que entregaremos lo suficiente como para que no sea un problema.

Sin embargo, no creo que solo esté usando la tecnología de Microsoft, ya que he tratado de usar material de código abierto siempre que sea posible. El lugar principal donde hice esto es mi capa de datos, donde decidí usar PostgreSQL y MongoDB. También estoy usando BackboneJS en mi front-end.

A continuación se muestra un resumen de la tecnología / marcos que estoy usando actualmente:

  • Material de base de datos estándar: PostreSQL
  • Registro y almacén de datos: MongoDB
  • ORM: Entity Framework 5
  • Bibliotecas principales: .NET (C #)
  • Marco web: ASP.NET MVC3
  • Interfaz de usuario: Razor view engine / BackboneJS

3
¿Has investigado a Mono? C # y la mayor parte del framework, en Linux. No lo he usado con ira, es solo un pensamiento.
TarkaDaal

55
En los niveles iniciales de inicio, no hay nada que no pueda obtener gratis de Microsoft que no satisfaga sus necesidades. Después de eso, puede utilizar su programa BizSpark para facilitar el inicio hasta que obtenga ingresos significativos. Incluso como una startup que usa productos abiertos, probablemente en algún momento terminará con un producto de costo como Oracle DB o lo que sea una vez que crezca lo suficiente.
Plataforma

1
Realmente he estado mirando BizSpark hoy, puedes obtener básicamente todo su software gratis / hasta que tu negocio gane $ 1 millón al año. Buen trato realmente, creo que si comienza a generar más de 1 mil al año, ¡unos cientos de libras al mes en servidores serán un problema maravilloso!
dormisher

2
@dormisher: Bizspark solo dura 3 años. Entonces puede garantizar que MS llamará a la puerta ofreciendo "revisar sus necesidades de licencia". microsoft.com/bizspark/faqs.aspx#16
gbjbaanb

1
@gbjbaanb, "La informática es la segunda causa más alta de gases de efecto invernadero (junto a las aerolíneas)" ... ¿Tiene una fuente confiable para esa basura? ¿O simplemente estás repitiendo las tonterías que alguien más te dijo? La mayoría de las fuentes que investigé en el pasado ponen el tráfico de automóviles en el número 1.
Riwalk

Respuestas:


35

£ 100 / mes? ¿Cuánto le cuesta? ¿Cuánto va a costar tu entrenamiento ?

Si cuesta £ 100 / mes pero puede obtener una aplicación .NET en un mes, mientras que necesitará al menos 3 a 6 meses para ejecutar su aplicación node.js / C ++, vaya a .NET. Seriamente. Su tiempo es mucho más caro que estos pequeños £ 100 / mes.

Idealmente, sí, tienes razón en tu análisis. Lo que olvidó es cuánto tiempo le llevará construir todo esto (es decir, meses) especialmente en una tecnología que no conoce.

Ahora no me malinterpreten, soy un gran admirador de Node.js y los gustos (solo vea mi perfil de github ...). He pasado más que suficiente tiempo para saber cuándo usarlo. Usarlo cuando no lo sabes en un entorno de inicio (donde necesitas enviar ) no es realmente la mejor solución.

Además, no estoy seguro de si esto podría funcionar, pero no te olvides de Mono.

PD: saber cómo usar jQuery es una ayuda muy pequeña para node.js. Conocer JavaScript es de gran ayuda. No confundas ambos.


He pensado cuánto tiempo me llevará, y estoy dividido entre .NET y Node. Es realmente difícil saber cuánto tiempo más me llevará usar Node. Verá que el sitio real se ubicará principalmente en el cliente, por lo que la mayoría de la lógica de negocios estará en el cliente. Entonces, en ese sentido .NET o Node, realmente no importa. No creo que escribir un conjunto de API en el back-end en ASP.NET WebAPI vs Node vaya a hacer una gran diferencia. Y me imagino que si uso un ORM encima de MongoDB, todo lo que estoy haciendo es jugar con JSON, nada complicado.
dormisher

1
@dormisher Si es solo un servidor REST, entonces sí, supongo que la parte del nodo no será un problema (y hay mejores herramientas que expresar :-)). Para la parte pesada de la CPU, claramente tienes que hacerlo en C ++. Depende de cómo puedas manejar esto.
Florian Margaine

1
Restify por ejemplo
Florian Margaine

44
Realmente deseo que la gente deje de decir cosas como "¡Mono es .NET en Linux!" No lo es Es una aproximación facsímil. Está cerca pero hay mucha curva de aprendizaje. Además, las herramientas de desarrollo no son tan refinadas.
Plataforma

44
"la mayoría de la lógica de negocios estará realmente en el cliente" ¿Entonces la mayoría de la lógica de negocios estará disponible en texto plano para cualquiera que vea su sitio? Tal vez quiera repensar eso.
Adrian J. Moreno

14

Con frecuencia vale la pena pasar a una pila de código abierto, pero es más probable que se deba a una combinación de factores:

  • Costo : sí, ahorrará dinero en licencias y alojamiento. Pero probablemente no sea suficiente para influir en la decisión en la mayoría de los casos. Si no puede permitirse o recaudar unos pocos miles de dólares, ¿está realmente seguro de que debería hacer una startup en cualquier espacio al que se dirija? Su tiempo vale más que una pequeña cantidad de efectivo.
  • Evitar el bloqueo de la plataforma : importante si desea tener la flexibilidad para escalar sin depender de una única plataforma controlada por el proveedor. No desea que el destino tecnológico de su empresa esté vinculado al capricho de un proveedor (particularmente uno como Microsoft, que no es el más conocido por su coherencia a largo plazo en sus tecnologías).
  • Tecnologías específicas : el mundo de código abierto tiene algunas soluciones impresionantes que puede preferir (todo lo demás es igual) sobre los equivalentes de Microsoft. Mire algunas de las soluciones de big data basadas en Java como Hadoop o Cassandra, por ejemplo ...
  • Productividad : algunas de las soluciones de código abierto son increíblemente productivas una vez que se pone al día con ellas : Ruby on Rails, Clojure, etc.
  • Comunidad : las comunidades de código abierto son muy útiles y generalmente pueden ayudarlo a resolver muchos problemas de forma gratuita, ya sea a través de foros, documentación en línea, salas de IRC, etc.

Debe equilibrar esto, por supuesto, con el tiempo que tomará aprender nuevas plataformas y tecnologías de código abierto si actualmente tiene principalmente habilidades de Microsoft.

Es una llamada cercana en general:

  • Si ya tiene una combinación de habilidades, generalmente le recomendaría ir a la ruta de código abierto. Mi experiencia es que funciona mejor a largo plazo.
  • Si solo tiene habilidades de Microsoft, entonces creo que probablemente querrá quedarse con Microsoft simplemente por la razón de que será más rápido en funcionamiento. Las startups necesitan moverse rápido, y aprender una pila de tecnología completamente nueva no es un problema adicional que quieras tener en tu plato.

3
Si va (como lo sugieren) C ++ todavía van a tener bloqueo de plataforma, solo otra plataforma ... Y en cuanto a las comunidades útiles, la respuesta estándar es: "Aquí está la fuente, descúbrelo tú mismo". "o" si donas lo suficiente,
PODEMOS

8

El costo de los productos de Microsoft podría no ser tan malo como cree. Microsoft tiene varios esquemas disponibles que reducen en gran medida el costo de su software. La mayoría de ellos están dirigidos a empresas de desarrollo de software, pero puede haber un paquete que satisfaga sus necesidades.

Ejemplos:

BizSpark - Software gratuito de MS para startups

TechNet - Software MS barato - alrededor de $ 199 - $ 599 al año.

Puede valer la pena analizarlo, es posible que califique para algunas de las ofertas.


3
Bizspark - 3 años de cosas gratis. Technet / MSDN: gratis, pero no para uso en producción. Entonces, aunque puede desarrollar con él, no puede implementar su código a menos que pague por todas las licencias completas.
gbjbaanb

@gbjbaanb - ¿Qué tiene de malo 3 años de cosas gratis? Technet / MSDN no es gratis, es para desarrollo, que es lo que están haciendo.
Ramhound

1
@Ramhound: la respuesta sugirió Technet para ellos, querían saber cuánto cuestan las licencias de producción. Demasiadas personas piensan que un MSND o Technet sub les da software gratuito (hasta que MS los audita). Sin embargo, el OP nunca solicitó licencias de desarrollo, solo SQLServer y Windows. 3 años gratis es genial, hasta que llegue el año 4 y tengas que averiguar a qué cosas te has acostumbrado.
gbjbaanb

Microsoft ofrecerá licencias de descuento después de 3 años si no eres un gran
generador de

6

No es solo el costo de ese servidor de £ 100 / mes, necesitará una copia con licencia adecuada de Windows, Visual Studio, etc. para trabajar. Estos se suman considerablemente si lo hace sin recurrir a la piratería de software. Y una vez que comience a escalar y requiera muchos más servidores, y replicar SQLServer, redundancia y todo lo demás ... bueno, recuerde que MS no gana miles de millones de dólares de su división de Servidor y Herramientas porque lo regalan. Si bien el costo de su tiempo mientras se pone al día será mayor que el uso de lo que ya sabe, a largo plazo, los beneficios del costo de OSS superarán con creces su inversión inicial en tiempo.

En general, si bien puede ser cauteloso de probar esto con tecnología desconocida, debe darse cuenta de que de todos modos trabajará con tecnología nueva todo el tiempo. Usar node.js no es particularmente difícil, especialmente si ya conoce JavaScript, por lo que su costo adicional de familiarizarse un poco más se medirá en días en lugar de meses. Hay muchos tutoriales y ejemplos que lo pondrán en funcionamiento con el código prototipo en muy poco tiempo, y es probable que llegue a un muro de reescritura una vez que su inicio sea exitoso, sin importar en qué idioma escriba todo su código.

De todos modos, Linux se adapta perfectamente a la codificación C / C ++, encontrará que es uno de los sistemas más populares para Linux, si no el más popular. MongoDB también es una buena opción, aparentemente el soporte de 10gen es bastante bueno. Node.js también es bueno, aunque puede terminar escribiendo la mayoría de su servidor en el nodo, o usándolo como un simple contenedor de transferencia a su código C ++, dependiendo de qué tan cómodo se sienta con cualquiera de esos lenguajes.

Y se escala bien. Le sugiero que vigile Postgresql, ya que ahora tiene un tipo de columna JSON que le brindará muchos de los beneficios de los DB NoSQL, pero también le permitirá las características de DB relacionales. Postgresql es sólido como una roca, lo utilicé como parte de un sistema para los servicios de emergencia para que pueda confiar en su confiabilidad (¡menos tiempo de inactividad que el SQLServer en el mismo proyecto en realidad!

Para IDEs en Linux, desea eclipse. Es como Visual Studio, aunque instalar los paquetes para CDT (herramientas de desarrollo de C) es un poco más complicado.

Por último, es bueno aprender cosas nuevas, es posible que disfrutes tanto de la experiencia de Linux que odiarás ir a trabajar :)


8
"quieres eclipse. Es como Visual Studio" Levanto la bandera BS principal allí. Eclipse ni siquiera está en el mismo nivel de Visual Studio. Sus años detrás de esto. Quizás una década.
Plataforma

44
El software de Microsoft es gratuito para nuevas empresas. BizSpark . Las startups tienen poco dinero. Deben pasar un tiempo mínimo entrenando o aprendiendo. Una vez que "comience a escalar y requiera cargas de más servidores", y tenga que pagar a Microsoft, espero que obtenga ingresos sustanciales. Podrás permitírtelo. Usted, personalmente, probablemente ahora estará en una sala de juntas o incluso en una casa de playa de un millón de dólares, y delegará estos problemas a sus cobardes. No se preocupe demasiado por la escalabilidad a largo plazo. Preocúpese por conseguir clientes y ganar dinero lo antes posible.
MarkJ

44
@Rig Eclipse es muy bueno, parece VS, se depura como VS y tiene muchas características como VS. Las similitudes terminan cuando te fijas bien, pero no encontré mucha diferencia en la codificación del día a día.
gbjbaanb

2
Creo que hay una razón por la cual la mayor parte de Internet se ejecuta en Linux y OSS. La mayoría de las nuevas empresas tampoco se venden a Microsoft por $ 8 mil millones. Entonces, realmente está intercambiando ganancias a corto plazo (que tampoco estoy convencido de que sea tanto costo) por costos a largo plazo que se comerán sus flujos de efectivo. El flujo de caja es muy importante para las startups.
gbjbaanb

3
@gbjbaanb Decir que Eclipse es "como" un estudio visual es decir que una rana es como un príncipe.
Plataforma

4

Realmente no tengo una opinión sobre la parte del servidor de su pregunta (el nodo funciona bien en mi opinión, suponiendo que conozca JavaScript). Sin embargo, diré que las bases de datos noSQL funcionan muy bien con servidores Linux. Actualmente estoy usando una implementación de CouchDB, (replicación fácil ¡whooo!), En un servidor Linux y me encanta. En cuanto a la compilación de los módulos C ++, recomendaría vincular el trabajo intensivo de la CPU en javascript. Después de que funcione y decida que es lento, suba la colina del módulo C ++. En mi experiencia, habiendo codificado la manipulación de imágenes, el nodo puede terminar funcionando bien para sus necesidades de CPU.


1
Creo que la única base de datos con la que me he encontrado que no funciona bien con servidores Linux es MS SQL Server.
TMN

2

"Primero, hazlo. Luego, hazlo bien. Luego, hazlo bien ".

Sugeriría lanzar lo antes posible, una tecnología que lo haga posible. Si le preocupa no tener opciones más adelante, codifique de tal manera que sea posible intercambiar módulos y migrar lentamente a otra cosa. Solo recuerde que el negocio debe ser lo suficientemente popular como para garantizarlo, y que pronto tendrá un producto que funcione.


2

Como una pequeña empresa aún no necesita servidores dedicados. Puede elegir la nube, que es más barata y ya incluye licencias de MS. Y estarías usando la misma pila que actualmente.

Hay muchas razones para cambiar a la plataforma Open Source, pero ahorrar unos pocos dólares en hosting no es una de ellas.

Además, tenga en cuenta que SysOps para la plataforma Unix / Linux generalmente se paga más que SysOps para Windows. Por lo tanto, su "ahorro" podría terminar costándole más.


1

Realmente estás viendo cambios importantes de paradigma aquí con las tecnologías desconocidas. Tuve un gran éxito al convertir aplicaciones ASP.NET 2.0 y ejecutarlas sobre mono con bibliotecas de terceros. http://www.ubiquityhosting.com/ ofrece alojamiento mono barato. Tanto MySql como Postgres admiten conectores ADO.NET, lo que le ahorra mucho tiempo de desarrollo. Normalmente desarrollo todas mis bases de datos en el estudio de administración de servidores sql y luego hago pequeños cambios en la salida de la tarea de generar scripts sql para que funcionen en mysql \ postgres. Me imagino que funcionaría de manera similar para ORM como NHibernate.

En cuanto a una aplicación C ++, siempre puede alojar algunos boxe usted mismo si el trabajo de backend es pesado en la CPU y no en el ancho de banda para evitar costos bajos y evitar servidores dedicados. Las máquinas de triple núcleo con 2 a 4 GB de RAM son baratas con Linux que se ejecuta sobre ellas.

Finalmente, es mejor concentrar más esfuerzo en las características, UI \ UX, interfaz gráfica y publicidad que venderán su aplicación en lugar de la pila de tecnología subyacente. Si comienza a recibir mucho tráfico de inmediato, siempre puede moverse a azul o amazon para manejar mejor la carga.


1

Para mi trabajo diario, trabajo en una casa de software que utiliza tecnología de Microsoft en el día a día, utilizamos .NET, SqlServer, Windows Server, etc. Sin embargo, me doy cuenta de que, como startup, necesitamos mantener los costos bajos, y después de tener Una breve mirada al costo del alojamiento para Windows Me sorprendió ver algunos de los precios de un servidor dedicado. El más barato que encontré fue de £ 100 al mes. Además, si el negocio necesita escalar en el futuro y terminamos necesitando múltiples servidores, podríamos terminar desembolsando £ 10 de £ 000 al año en licencias de SQL Server / Windows Server, etc.

Si alcanza el tipo de escala que requiere ese tipo de dinero, entonces, en teoría, sus ingresos coincidirán con esos gastos y podrá obtener mejores ofertas y alojar cosas con su propio hardware. Una de las razones por las que sus cotizaciones son tan altas es porque alquila hardware y no lo compra y lo aloja usted mismo (cerca de Facebook, Amazon, Microsoft).

Luego eché un vistazo rápido al precio del alojamiento de Linux para un servidor dedicado y vi que el precio era muuuucho más bajo que el alojamiento de Windows. Un lugar estaba ofreciendo una máquina con 2 núcleos por menos de £ 20 al mes.

Mi primera pregunta es "¿qué hay de malo en que la compañía ofrezca ese tipo de precios" y cuánto costaría el servidor Linux en la misma compañía que el servidor Windows? Sé que estoy haciendo una pregunta en una respuesta, pero la pregunta en sí es la respuesta.

Mientras escribo una gran cantidad de Javascript en el trabajo (estoy trabajando en una aplicación troncal de una sola página en este momento), pensé que tal vez NodeJS y un marco web como Express serían geniales de usar. Entonces pensé que en lugar de usar SQL, ¿por qué no usar una base de datos NoSQL de código abierto como MongoDB, que tiene un gran soporte en NodeJS?

Mi única preocupación es que parte del trabajo que realizará la aplicación será construir dinámicamente imágenes y varias otras cosas relacionadas con la imagen, es decir, cosas que son bastante pesadas para la CPU, así que estoy pensando en escribir algo que sea muy pesado para la CPU en C ++ y consumiéndolo como un módulo en Node.

Mi única sugerencia es usar aquello con lo que estás familiarizado. Use los programas que existen para ayudar a las empresas como la suya a tener éxito, una vez que tenga ese éxito, puede implementar y realizar prácticamente CUALQUIER cambio que desee. Si obtiene ese éxito y puede pagar los precios más altos, podría decidir que en realidad no es un problema.

Como dije, sus preocupaciones son sólidas, pero ¿lo está mirando desde la escala correcta? ¿Ha visto las proyecciones comerciales para ayudarlo a decidir qué hacer? Me doy cuenta de que ya has decidido (en poco tiempo) lo que básicamente vas a hacer.

Solo trate de ver la imagen más grande, no le pagará a una sola compañía ese tipo de dinero para alojar sus servidores, es probable que lo haga usted mismo.


0

Hace casi 10 años, estaba en la misma situación. Sin embargo, todo mi software de Microsoft me fue entregado y tuve un pariente que era gerente en una gran tienda de Microsoft que me ayudó con el desarrollo. Un año y $ 50K en gastos más tarde, Microsoft realizó cambios en .NET que pusieron todo en un círculo y tuvimos que comenzar de nuevo (Larga historia corta. No preguntes).

Siguiendo el consejo de mi pariente, cambiamos a FreeBSD y Linux y, tres meses después, reconstruimos todo por prácticamente nada utilizando las mismas personas. Somos una pequeña empresa de desarrollo web próspera ahora y no hemos tenido que comprar ningún software (o hardware) desde entonces.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.