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:
- Hospedando um site NodeJS / Express?
- Compilando módulos de nó C ++?
- 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
fonte
Respostas:
£ 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.
fonte
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:
É 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:
fonte
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.
fonte
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 :)
fonte
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.
fonte
"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.
fonte
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.
fonte
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.
fonte
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).
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.
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.
fonte
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.
fonte