Vale a pena mudar da tecnologia da Microsoft para o Linux, o NodeJS e outras estruturas de código aberto para economizar dinheiro para uma start-up? [fechadas]


32

No momento, estou me envolvendo em uma startup, sou o único desenvolvedor envolvido no momento, e os outros caras estão deixando todas as decisões de tecnologia para mim no momento.

No meu trabalho diário, trabalho em uma casa de software que usa a tecnologia da Microsoft diariamente, utilizamos .NET, SqlServer, Windows Server etc. No entanto, percebo que, como uma startup, precisamos manter os custos baixos e depois de ter Uma breve olhada no custo de hospedagem do Windows Fiquei chocado ao ver alguns dos preços de um servidor dedicado. O mais barato que encontrei foi de £ 100 por mês. Além disso, se a empresa precisar aumentar de escala no futuro e acabarmos precisando de vários servidores, poderíamos acabar gastando US $ 10.000,00 por ano em licenças do SQL Server / Windows Server etc.

Então, dei uma olhada rápida no preço da hospedagem Linux para um servidor dedicado e vi que o preço era muito menor do que a hospedagem no Windows. Um lugar era oferecer uma máquina com 2 núcleos por menos de £ 20 por mês.

Isso me fez pensar que talvez o caminho a seguir seja de código aberto no Linux.

Enquanto escrevo muito Javascript no trabalho (estou trabalhando em um aplicativo de backbone de página única no momento), pensei que talvez fosse legal usar o NodeJS e uma estrutura da web como o Express. Eu então pensei que, em vez de usar o SQL, por que não usar um banco de dados NoSQL de código aberto como o MongoDB, que oferece grande suporte ao NodeJS?

Minha única preocupação é que parte do trabalho que o aplicativo fará será a construção dinâmica de imagens e várias outras coisas relacionadas à imagem, ou seja, coisas que pesam bastante na CPU - então estou pensando em escrever alguma coisa com CPU pesada em C ++ e consumi-lo como um módulo no Node.

Esse é o plano de fundo - mas basicamente o Linux é uma boa combinação para:

  1. Hospedando um site NodeJS / Express?
  2. Compilando módulos de nó C ++?
  3. Usando um banco de dados NoSQL como o MongoDB?

E é uma boa ideia mudar para essas tecnologias desconhecidas para economizar dinheiro?


ATUALIZAÇÃO DE 3 MESES

Estou trabalhando nisso há alguns meses, então pensei em fazer uma atualização caso alguém esteja interessado.

No final, decidi não usar uma pilha do NodeJS e Linux pelo simples motivo de tempo. Estou fazendo essa inicialização ao lado, por isso estou trabalhando 9 horas por dia, depois voltando para casa e trabalhando até tarde na inicialização. Enquanto estiver trabalhando dessa maneira, obviamente preciso ser o mais eficiente possível com o meu tempo ou nunca acabarei enviando o produto.

Depois de seguir alguns conselhos sobre este tópico, solicitei o Microsoft BizSpark e fui aceito. Isso significa que agora tenho acesso à licença do Visual Studio, licença do Windows Server etc., tudo de graça. O que é incrível. Felizmente, no momento em que formos obrigados a começar a pagar por tudo, estaremos entregando o suficiente para que isso não se torne um problema.

Porém, não acho que estou usando apenas a tecnologia da Microsoft, pois tentei usar coisas de código aberto sempre que possível. O principal local que fiz isso é minha camada de dados, onde decidi usar o PostgreSQL e o MongoDB. Também estou usando o BackboneJS no meu front end.

Abaixo está um resumo das estruturas / técnicas que estou usando atualmente:

  • Material de banco de dados padrão: PostreSQL
  • Log e armazenamento de dados: MongoDB
  • ORM: Estrutura de entidade 5
  • Bibliotecas principais: .NET (C #)
  • Estrutura da Web: ASP.NET MVC3
  • Interface do usuário: Razor view engine / BackboneJS

3
Você já investigou o Mono? C # e a maior parte da estrutura, no Linux. Eu não usei isso com raiva, é apenas um pensamento.
TarkaDaal

5
Nos níveis iniciais de inicialização, não há nada que você não possa obter gratuitamente da Microsoft que não atenda às suas necessidades. Depois disso, você pode utilizar o programa BizSpark para facilitar a inicialização até obter uma receita significativa. Mesmo como uma startup que usa produtos abertos, você provavelmente, em algum momento, acabará com um produto de custo, como o Oracle DB ou o que quer que seja quando crescer o suficiente.
Rig

1
Na verdade, estou vendo o BizSpark hoje, você pode obter basicamente todo o software deles de graça / até que sua empresa esteja ganhando US $ 1 milhão por ano. Bom negócio, na verdade, acho que se começar a girar 1 milhão por ano, algumas centenas de libras por mês em servidores será um problema adorável!
Dormitor

2
@dormisher: Bizspark dura apenas 3 anos. Então você pode garantir que a MS baterá na porta oferecendo "revisar suas necessidades de licenciamento". microsoft.com/bizspark/faqs.aspx#16
gbjbaanb

1
@gbjbaanb, "A computação é a segunda maior causa de gases de efeito estufa (ao lado das companhias aéreas)" ... Você tem uma fonte confiável para esse lixo? Ou você está apenas repetindo o absurdo que alguém lhe contou? A maioria das fontes que eu pesquisei no passado tráfego put automóvel no número 1.
riwalk

Respostas:


35

£ 100 / mês? Quanto você custa? Quanto vai custar seu treinamento ?

Se custa £ 100 / mês, mas você pode obter um aplicativo .NET em um mês, enquanto você precisará de pelo menos 3 a 6 meses para que o aplicativo node.js / C ++ seja executado, vá para o .NET. A sério. Seu tempo é muito mais caro que esses pequenos £ 100 / mês.

Idealmente, sim, você está certo em sua análise. O que você esqueceu é quanto tempo levará para você construir tudo isso (ou seja, meses), especialmente em uma tecnologia que você não conhece.

Agora, não me entenda mal, sou um grande fã do Node.js e de quem gosta (basta ver o meu perfil no github ...). Passei mais do que tempo suficiente para saber quando usá-lo. Usá-lo quando você não o conhece em um ambiente de inicialização (para onde você precisa transportar ) não é realmente a melhor solução.

Além disso, eu realmente não tenho certeza se isso poderia funcionar, mas não se esqueça do Mono.

PS: saber como usar o jQuery é uma ajuda muito pequena para o node.js. Conhecer o javascript é uma grande ajuda. Não confunda os dois.


Pensei em quanto tempo vai me levar e estou dividido entre o .NET e o Node. É realmente muito difícil saber quanto tempo vai demorar para eu usar o Node. Você vê que o site real ficará principalmente no cliente; portanto, a maioria da lógica de negócios estará realmente no cliente. Portanto, nesse aspecto, .NET ou Node - isso realmente não importa. Eu não acho que escrever um conjunto de APIs no back-end no ASP.NET WebAPI vs Node fará uma enorme diferença. E acho que se eu usar um ORM em cima do MongoDB, tudo o que estou fazendo realmente é brincar com o JSON, nada complicado.
Dormisher

1
@dormisher Se é apenas um servidor REST, então sim, acho que a parte do nó não será uma dor (e existem ferramentas melhores do que expressar :-)). Para a parte pesada da CPU, você claramente precisa fazê-lo em C ++. Depende de como você pode lidar com isso.
Florian Margaine 17/07/2012


4
Eu realmente gostaria que as pessoas parassem de dizer coisas como "Mono is .NET on Linux!" Não é. É uma aproximação de fac-símile. Está perto, mas há uma curva de aprendizado em abundância. Além disso, as ferramentas de desenvolvimento não são tão refinadas.
Rig

4
"a maioria da lógica de negócios estará realmente no cliente". Portanto, a maioria da lógica de negócios estará disponível em texto sem formatação para qualquer pessoa que esteja visualizando seu site? Pode querer repensar isso.
Adrian J. Moreno

14

Freqüentemente, vale a pena mudar para uma pilha de código aberto, mas é mais provável que ela seja impulsionada por uma combinação de fatores:

  • Custo - sim, você economizará algum dinheiro em licenciamento e hospedagem. Mas provavelmente não é suficiente para influenciar a decisão na maioria dos casos. Se você não pode pagar ou angariar alguns milhares de dólares, tem certeza de que deve fazer uma startup, qualquer que seja o espaço pretendido? Seu tempo vale mais do que uma pequena quantia em dinheiro.
  • Evitando o bloqueio da plataforma : importante se você deseja ter a flexibilidade de aumentar a escala sem depender de uma única plataforma controlada pelo fornecedor. Você não quer que o destino tecnológico da sua empresa esteja atrelado ao capricho de um fornecedor (particularmente um como a Microsoft, que não é o mais conhecido pela consistência de longo prazo em suas tecnologias).
  • Tecnologias específicas - o mundo do código aberto tem algumas soluções impressionantes que você pode preferir (todas as demais são iguais) sobre os equivalentes da Microsoft. Veja algumas das soluções de big data baseadas em Java, como Hadoop ou Cassandra, por exemplo ...
  • Produtividade - algumas das soluções de código aberto são impressionantemente produtivas quando você se familiariza com elas - Ruby on Rails, Clojure etc.
  • Comunidade - as comunidades de código aberto são muito úteis e geralmente podem ajudá-lo a resolver muitos problemas gratuitamente, seja através de fóruns, documentação on-line, salas de IRC etc.

É claro que você precisa equilibrar isso com o tempo que levará para aprender novas plataformas e tecnologias de código aberto, se atualmente você possui principalmente as habilidades da Microsoft.

No geral, é quase impossível:

  • Se você já tem uma mistura de habilidades, geralmente recomendo seguir a rota de código aberto. Minha experiência é que funciona melhor a longo prazo.
  • Se você possui apenas as habilidades da Microsoft, acho que provavelmente desejará continuar com a Microsoft apenas pelo motivo de ser mais rápido em colocar em funcionamento. As startups precisam se mover rapidamente, e aprender uma pilha de tecnologia completamente nova não é um problema extra que você deseja ter em seu caminho.

3
Se você usar o C ++ (como eles sugerem), eles ainda terão a plataforma bloqueada, apenas outra plataforma ... E quanto às comunidades úteis, na maioria das vezes a resposta padrão é "aqui está a fonte, descubra você mesmo "ou" se você doar o suficiente,
PODEMOS

8

O custo dos produtos Microsoft pode não ser tão ruim quanto você pensa. A Microsoft possui vários esquemas disponíveis que reduzem bastante o custo de seu software. A maioria deles é voltada para empresas de desenvolvimento de software, mas pode haver um pacote que atenda às suas necessidades.

Exemplos:

BizSpark - Software MS grátis para startups

TechNet - Software barato para MS - em torno de US $ 199 - US $ 599 por ano.

Pode valer a pena investigar, você pode se qualificar para algumas das ofertas.


3
Bizspark - 3 anos de material grátis. Sem Technet / MSDN, mas não para uso em produção. Portanto, embora você possa desenvolvê-lo, não poderá implantar seu código, a menos que pague por todas as licenças completas.
Gbjbaanb

@gbjbaanb - O que há de errado com 3 anos de material grátis? O Technet / MSDN não é gratuito, é para desenvolvimento, que é o que eles estão fazendo.
Ramhound 18/07/2012

1
@ Ramhound: a resposta sugeriu o Technet para eles, eles queriam saber quanto custa as licenças de produção. Muitas pessoas pensam que um sub-sistema MSND ou Technet oferece a eles software livre (até que a MS faça uma auditoria). O OP nunca solicitou licenças de desenvolvedor, apenas SQLServer e Windows. 3 anos de graça são ótimos, até o ano 4 e você precisa descobrir quantas coisas se acostumou.
Gbjbaanb

Microsoft vai oferecer licenciamento desconto após os 3 anos se você não é um fabricante de dinheiro enorme .. se você está ganhando dinheiro .. tenho que pagar o fisco
hanzolo

6

Não é apenas o custo desse servidor de 100 libras / mês, você precisará de uma cópia devidamente licenciada do Windows, Visual Studio, etc etc para trabalhar. Isso aumenta consideravelmente se você fizer isso sem recorrer à pirataria de software. E quando você começar a escalar e exigir muito mais servidores, e replicar o SQLServer, a redundância e tudo o mais ... bem, lembre-se de que a MS não ganha bilhões de dólares com a divisão de servidores e ferramentas porque a distribui. Embora o custo do seu tempo enquanto você esteja em alta velocidade seja maior do que usar o que você já sabe, a longo prazo, os benefícios do custo do OSS superam em muito o seu investimento inicial no tempo.

De maneira geral, embora você tenha receio de tentar fazer isso usando uma tecnologia desconhecida, você deve perceber que estará trabalhando com nova tecnologia o tempo todo. O uso do node.js não é particularmente difícil, especialmente se você já conhece o javascript, portanto, o custo adicional de familiarizar-se com ele será medido em dias e não em meses. Existem vários tutoriais e exemplos que o ajudarão a executar o código do protótipo rapidamente, e as chances são de que você atinja uma parede de reescrita assim que sua inicialização for bem-sucedida, independentemente do idioma em que você escrever todo o seu código.

De qualquer forma, o Linux é perfeitamente adequado para a codificação C / C ++, você encontrará um dos sistemas mais populares para Linux, se não o mais popular. O MongoDB também é uma boa escolha, aparentemente o suporte da 10gen é muito bom. O Node.js também é bom, embora você possa escrever a maioria do servidor no nó ou usá-lo como um wrapper de passagem simples no código C ++, dependendo de como você se sente confortável com um desses idiomas.

E escala bem. Eu sugiro que você fique de olho no Postgresql, pois agora ele possui um tipo de coluna JSON, que fornecerá muitos dos benefícios dos DBs NoSQL, mas também permitirá recursos de banco de dados relacional. O Postgresql é sólido, usei-o como parte de um sistema para os serviços de emergência, para que você confie na confiabilidade (menos tempo de inatividade do que o SQLServer no mesmo projeto!)

Para IDEs no Linux, você deseja eclipse. É como o Visual Studio, embora instalar os pacotes para o CDT (C dev tools) seja um pouco mais complicado.

Por fim, é bom aprender coisas novas, você pode aproveitar a experiência do Linux tanto que detesta ir trabalhar :)


8
"você quer eclipse. É como o Visual Studio" Eu levanto a bandeira BS principal lá. O Eclipse nem está no mesmo nível do Visual Studio. Seus anos atrás. Talvez uma década.
Rig

4
O software da Microsoft é gratuito para startups. BizSpark . As startups estão com pouco dinheiro. Eles devem passar um tempo mínimo treinando ou aprendendo. Quando você "começar a escalar e exigir muito mais servidores" e precisar pagar à Microsoft, espero que você esteja obtendo uma receita substancial. Você será capaz de pagar. Você, pessoalmente, provavelmente estará agora em uma sala de reuniões ou em uma casa de praia de um milhão de dólares e delegará esses problemas a seus lacaios. Não se preocupe demais com a escalabilidade a longo prazo. Preocupe-se em obter clientes e ganhar dinheiro o mais rápido possível.
18712 MarkJ às

4
O @Rig Eclipse é muito bom, parece com o VS, depura como o VS e possui muitos recursos como o VS. As semelhanças terminam quando você olha atentamente, mas não encontrei muita diferença na codificação diária.
Gbjbaanb

2
Eu acho que há uma razão pela qual a maior parte da internet funciona com Linux e OSS. A maioria das startups também não vende para a Microsoft US $ 8 bilhões. Então, você está realmente trocando ganhos de curto prazo (que também não vou convencer de que custam muito) por custos de longo prazo que serão prejudiciais ao seu fluxo de caixa. O fluxo de caixa é muito importante para startups.
Gbjbaanb

3
@gbjbaanb Dizer que Eclipse é "como" o visual studio é dizer que um sapo é como um príncipe.
Rig

4

Eu realmente não tenho uma opinião sobre a parte do servidor da sua pergunta (o nó funciona muito bem na minha opinião, supondo que você saiba javascript). No entanto, direi que os bancos de dados noSQL funcionam muito bem com servidores linux. Atualmente, estou usando uma implementação do CouchDB (replicação fácil, whooo!), Em um servidor Linux e adoro isso. Quanto à compilação dos módulos C ++, eu recomendaria amarrar o trabalho intensivo da CPU em javascript. Depois de fazê-lo funcionar e decidir devagar, suba a colina do módulo C ++. Na minha experiência, tendo manipulação de imagem codificada, o nó pode acabar funcionando muito bem para suas necessidades de CPU.


1
Acho que o único banco de dados que encontrei e que não funciona bem com servidores Linux é o MS SQL Server.
TMN

2

"Primeiro, faça. Depois, faça certo. Depois, faça bom ."

Eu sugeriria o lançamento o mais cedo possível, de uma tecnologia que tornasse isso possível. Se você estiver preocupado em não ter opções posteriormente, codifique de forma que seja possível trocar módulos e migrar lentamente para outra coisa. Lembre-se de que a empresa precisa ser popular o suficiente para justificá-la e você precisa ter um produto em breve.


2

Como uma pequena startup, você ainda não precisa de servidores dedicados. Você pode escolher a nuvem, que é mais barata e já inclui licenças da MS. E você estaria usando a mesma pilha que atualmente.

Há muitos motivos para mudar para a plataforma Open Source, mas economizar alguns dólares em hospedagem não é um deles.

Além disso, lembre-se de que a plataforma SysOps para Unix / Linux geralmente recebe mais que o SysOps for Windows. Assim, sua "economia" pode acabar custando mais.


1

Você está realmente olhando para as principais mudanças de paradigma aqui com as tecnologias desconhecidas. Tive um bom sucesso ao converter aplicativos ASP.NET 2.0 e executá-los em mono com bibliotecas de terceiros. http://www.ubiquityhosting.com/ fornece hospedagem mono barata. Tanto o MySql quanto o Postgres suportam conectores ADO.NET, o que economiza muito tempo de desenvolvimento. Normalmente, desenvolvo todos os meus bancos de dados no sql server management studio e faço pequenas alterações na saída da tarefa gerar scripts sql para fazê-los funcionar no mysql \ postgres. Eu imagino que funcionaria de maneira semelhante para ORMs como o NHibernate.

Quanto a um aplicativo C ++, você sempre pode hospedar algumas caixas se o trabalho de back-end for pesado em CPU e não em largura de banda para manter os custos baixos, evitando servidores dedicados. Máquinas de núcleo triplo com 2 a 4 GB de RAM são baratas, com o Linux rodando em cima delas.

Por fim, é melhor concentrar-se mais nos recursos, interface do usuário \ UX, interface gráfica e publicidade que venderão seu aplicativo em vez da pilha de tecnologia subjacente. Se você começar a receber muito tráfego imediatamente, poderá sempre mudar para o azure ou amazon para lidar melhor com a carga.


1

No meu trabalho diário, trabalho em uma casa de software que usa a tecnologia da Microsoft diariamente, utilizamos .NET, SqlServer, Windows Server etc. No entanto, percebo que, como uma startup, precisamos manter os custos baixos e depois de ter uma breve olhada no custo de hospedagem do Windows Fiquei chocado ao ver alguns dos preços de um servidor dedicado. O mais barato que encontrei foi de £ 100 por mês. Além disso, se a empresa precisar aumentar de escala no futuro e acabarmos precisando de vários servidores, poderíamos acabar gastando US $ 10.000,00 por ano em licenças do SQL Server / Windows Server etc.

Se você atingir o tipo de escala que exige esse tipo de dinheiro, em teoria sua receita corresponderá a essas despesas e você poderá obter melhores negócios e hospedar coisas com seu próprio hardware. Uma das razões pelas quais suas cotações são tão altas é porque você aluga o hardware e não o compra e o hospeda (cerca de facebook, Amazon, Microsoft).

Então, dei uma olhada rápida no preço da hospedagem Linux para um servidor dedicado e vi que o preço era muito menor do que a hospedagem no Windows. Um lugar era oferecer uma máquina com 2 núcleos por menos de £ 20 por mês.

Minha primeira pergunta é "o que há de errado com a empresa que oferece esse tipo de preço" e quanto custava o servidor linux na mesma empresa que o servidor windows custaria? Eu sei que estou fazendo uma pergunta em uma resposta, mas a pergunta em si é a resposta.

Enquanto escrevo muito Javascript no trabalho (estou trabalhando em um aplicativo de backbone de página única no momento), pensei que talvez fosse legal usar o NodeJS e uma estrutura da web como o Express. Eu então pensei que, em vez de usar o SQL, por que não usar um banco de dados NoSQL de código aberto como o MongoDB, que oferece grande suporte ao NodeJS?

Minha única preocupação é que parte do trabalho que o aplicativo fará será a construção dinâmica de imagens e várias outras coisas relacionadas à imagem, ou seja, coisas que pesam bastante na CPU - então estou pensando em escrever alguma coisa com CPU pesada em C ++ e consumi-lo como um módulo no Node.

Minha única sugestão é usar o que você está familiarizado. Use os programas existentes para ajudar empresas como a sua a obterem sucesso. Depois de obter esse sucesso, você poderá implementar e fazer praticamente todas as alterações que desejar. Se você obtiver esse sucesso e conseguir pagar preços mais altos, poderá decidir que não é realmente um problema.

Como eu disse, suas preocupações são sólidas, mas você está olhando na escala correta, analisou as projeções de negócios para ajudá-lo a decidir o que fazer? Sei que você já decidiu (em pouco tempo) o que basicamente fará.

Apenas tente olhar para o quadro geral, você não estará pagando a uma única empresa esse tipo de dinheiro para hospedar seus servidores, provavelmente faria isso sozinho.


0

Quase 10 anos atrás, eu estava na mesma situação. No entanto, todo o meu software da Microsoft foi entregue a mim e um parente que era gerente de uma grande loja da Microsoft me ajudou no desenvolvimento. Um ano e US $ 50 mil em despesas depois, a Microsoft fez alterações no .NET, que deram tudo errado e tivemos que começar de novo (Resumindo a história. Não pergunte.).

Seguindo o conselho de meu parente, mudamos para o FreeBSD e Linux e, três meses depois, reconstruímos tudo praticamente sem usar as mesmas pessoas. Agora somos uma pequena e próspera empresa de desenvolvimento para web e não tivemos mais que comprar nenhum software (ou hardware) desde então.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.