/ 12.Mar.2008 at 02:17am

Hoje recebi mais um e-mail de uma pessoa perguntando “Será que Ruby on Rails serve para criar aplicações grandes e robustas, como um ERP?”
Me perguntam muito isso. Sendo direto ao assunto, se alguém me perguntasse isso no meio do caminho e precisasse de uma resposta rápida acho que o mais coerente seria dizer “Não”. Mas não parem aqui! A resposta mais longa seria “Talvez”.
Enterprise Resource Planning. Essa palavra chega a ser meio alienígena dentro de certos círculos de desenvolvedores. Para começar não é muito fácil encontrar desenvolvedores que tenham real experiência do que é realmente um ERP. O definição da Wikipedia não é suficiente para entender do que isso se trata.
Porém ERPs estão por aí há décadas, literalmente. O maior de todos, a SAP, já tem mais de 30 anos. Compare com a Web que atingiu o público para valer mesmo só depois de 1995, ou seja, pouco mais de 1 década. Mas não vamos subestimá-la! As tecnologias de internet permitiram aos ERPs darem um grande salto de qualidade, coisa que com certeza ajudou a acelerar a globalização e o capitalismo moderno.
Comece com uma pequena empresa. Ela fabrica alguns produtos e quer um sistema que os ajude a controlar suas vendas. Existem centenas com esse perfil, vide as enormes quantidades de tutoriais de “Shopping Carts”. Para muitos, isso é um grande sistema. Vejamos as coisas mais óbvias:

São os comportamentos óbvios. Agora vejamos o que tem por trás disso:
E isso é apenas um resumo altamente grosseiro e curto. Cada um desses bullet points compõe enormes e intrincados processos e procedimentos que, na sua soma, formam uma Empresa. Em maior ou menor grau, toda empresa tem esses processos, algumas micro-empresas talvez apenas não tenham uma separação tão clara porque uma única pessoa acaba acumulando funções de gestor, contador, vendedor tudo ao mesmo tempo. Por exemplo, um profissional autônomo, como consultores, médicos, ou qualquer pessoa jurídica é essencialmente uma empresa de uma pessoa só. Controlar finanças, investimentos, projetos, relacionar com clientes, contatos, translado, viagens, etc são todos processos.
Antigamente só havia uma forma de controlar isso: vastas cadeias hierárquicas com diversos caciques em diversos departamentos controlando tudo literalmente no grito e no papel. De 60 anos para cá, os computadores automatizados permitiram achatar as hierarquias, diminuir a burocracia do controle manual e tornar as empresas mais e mais competitivas. O desafio de toda empresa é enxugar seus processos para que eles sejam mais velozes e mais maleáveis ao ritmo do mercado.
Sem entrar na parte na parte puramente de processos, como automatizar esses processos?
Bom, você pode começar como todos começam: comprando um pedaço de cada vez. Hoje você precisa controlar suas finanças, então vai no mercado e adquire um sistema financeiro. Agora você precisa controlar seu estoque, então volta ao mercado e compra um sistema de estoque. Agora você contratou mais pessoas e precisa gerenciar seus funcionários, então compra um sistema de recursos humanos. Sua empresa tem grande enfoque em atendimento ao cliente, com call center próprio e tudo mais, então vai ao mercado e compra um sistema de CRM. Desse suporte você envia muitos técnicos às ruas, por exemplo, para reparos e suporte técnico, daí volta ao mercado e adquire um sistema de fields force automation. E assim por diante.
E finalmente, você descobre que tem muitos sistemas e contrata um gerente de TI que terá a amarga tarefa de fazer todos esses sistemas conversarem entre si. E quando o mais recém-contratado chega ele fantasia “como seria bom se já existisse tudo isso integrado …”
Claro que existe, e esse é o papel dos ERP: Planejamento de Recursos de uma Empresa. E daí figuram nomes grandes como SAP, Oracle (que é um conglomerado com empresas como J.D.Edward e Peoplesoft). No Brasil existem ERPs nacionais para pequenas e médias empresas como Microsiga e Datasul.

E por que as empresas, quando começam, já não adquirem produtos completos como esse? Simples: porque não compensa. Sistemas pesados como esse só fazem sentido quando sua empresa já tem processos consolidados e estáveis, nem que sejam na base do papel. Se sua empresa cresceu sendo paternalista, centralizada, sem valores e missões consolidadas, um ERP pode ser uma catástrofe.
Uma empresa moderna precisa de “Planejamento”, precisa de “Previsibilidade”. Toda boa empresa de diversas estratégias de negócio e elas não vem simplesmente ao acaso ou pelo bom ou mau humor do seu presidente (leiam mais sobre Balanced Scorecards, por exemplo, de Kaplan e Norton). Exatamente por isso usa-se Enterprise Resource Planning. Isso vem do entendimento que não existem recursos infinitos, nem capital infinito e muito menos tempo infinito. A empresa que melhor souber aproveitar a escassez desses recursos é que se tornará mais competitiva dentro de seu mercado. É o princípio da Economia.
Processos de negócio, apesar de serem cobertos por uma ampla gama literária, não são receitas de bolo que podem ser facilmente seguidas passo a passo. Existem vários guidelines, linhas mestras, que não se pode negligenciar, mas existe um amplo vazio que precisa de muito fine tuning, tweaking, ajustes diários até até que todas as engrenagens girem com o menor atrito possível.
Uma empresa que está começando do zero não tem esse know-how, esse conhecimento nem essa experiência. Por isso que sistema automatizados não fazem bem a elas: não há o que automatizar ainda. Fora do básico, como contabilidade, uma planilha o resto é tempo. Entre consultores até temos uma piada sobre ERP = Excel Resource Planning, querendo dizer que um dia o Microsoft Excel seria o líder de ERPs já que tantas empresas controlam tudo sobre dezenas e dezenas de planilhas. Aliás, um adendo, não existe planilha melhor que o Excel, talvez o melhor produto que a Microsoft já lançou. Dela dependem o bem estar de centenas de empresas pelo mundo. E não pensem que apenas pequenas empresas tem processos caóticos. Mesmo empresas multi-milionárias ainda tem sérios problemas de processos, mandos e desmandos, ‘jeitinhos’ e toda gama de más atitudes que eventualmente podem acabar por limá-la do mercado. A menos, claro, que tenha a dinheiro do governo por trás, cof Petrobrás cof. Sem brincadeira, empresas públicas estão entre as mais desorganizadas e ineficientes de todas, salvo raras exceções. É o único caso onde se tem virtualmente ‘dinheiro infinito’ e, como todos sabemos, só nos tornamos eficientes quando temos escassez de recursos. Abundância sempre nos torna preguiçosos e ineficientes.
Pois bem. Sua empresa prosperou, cresceu, abriu filiais, contratou pessoas, aumentou a produção, investiu em capacitação, melhoria de processos, etc. Chegou a hora de dar continuidade nesse processo de fine tuning e integrar e automatizar os diversos processos para torná-los mais ágeis. Eis que entra a decisão: escrever in house, ou adquirir no mercado? O movimento mais seguro para corporações gigantes é unir várias estratégias: adquirir no mercado o que é considerado commodity e desenvolver in house o que é considerado crítico.
Na área de pequenas empresas existem os sistemas proprietários, ou in house, desenvolvidas dentro da própria empresa que as utiliza. Nesse nicho figurou durante muito tempo plataformas como dBase, Clipper, Dataflex, Powerbuilder, FoxPro, Visual Basic e, até o começo deste século, Delphi. Agora com todos esses fora da jogada, os olhos se voltaram aos novos players: Microsoft .NET e Java J2EE.
Finalmente, de volta à pergunta original: “Ruby on Rails serve para desenvolver um ERP?” A resposta é “Não” . Primeiro de tudo: se alguém está me perguntando isso, não tem idéia do que é um ERP nem o que é um “sistema robusto”. São palavras abstratas de quem nunca se encontrou preso no meio das engrenagens de processos de grandes empresas.

O cerne por trás do sucesso de sistemas como as da ERP está em uma palavra-chave: “Integração”. “Processos integrados”. Integração significa que não existem 10 sistemas, cada um com 10 tabelas repetindo os mesmos clientes, os mesmos produtos, as mesmas contas contábeis, as mesmas regras de precificação, as mesmas listas de funcionários. Duplicação de dados é o primeiro problema crítico que acontece quando você adquire diversos pequenos sistemas separados. E não estou falando de duplicação como backup, mas literalmente em sistemas separados onde atualizar os dados de clientes significa entrar manualmente em 10 sistemas e redigitá-los o tempo todo, ou mesmo recarregar arquivos textos de lá para cá. Erros humanos e erros de procedimento são uma das causas de ineficiência.
As pessoas subestimam os ERPs e as empresas que as fabricam. “Oras, é apenas um banco de dados, meia dúzia de tabelas e algumas telinhas para entrar dados. Deve ser absolutamente trivial construir algo assim no fim de semana.” 30 anos entregando processos em mercados tão variados, indo desde a Aeroespacial até o Varejo massivo (redes de hipermercados) é algo que meia dúzia de programadores precisariam de algumas vidas para compreender.
Claro, ninguém está falando em substituir uma SAP. Estamos falando de mini-ERPs, processos simples, de baixa escala, para micro e pequenas empresas. Isso sim é viável, e mesmo assim ainda é um desafio. Estou sendo bastante repetitivo nisso para que o conceito fique bem claro: não subestime processos de negócios. Corolário: o programador mais inteligente provavelmente será um péssimo analista de negócios. Entender um algoritmo de computador e entender um processo de vendas são coisas completamente distintas e que exigem um corpo de conhecimentos vasto e totalmente diferentes.
Isso dito, no nicho das pequenas empresas existem várias, dezenas, que começaram a desenvolver seus sistemas há cerca de 10 ou 15 anos atrás. Hoje eles tem sistemas em Clipper ou em Delphi, rodando em produção e controlando a empresa diariamente. Já tentaram ao máximo dar sobrevida a esses sistemas, mas está cada vez mais difícil expandir a empresa sentada sobre sistemas arcaicos que já deram o que tinham que dar. Sua equipe de clipeiros ou delpheiros está obsoleta mas você não quer se desfazer deles já que, neste ponto, o programador finalmente já incorporou os processos da empresa onde trabalha há tanto tempo. O que fazer?
Programei muito em dBase/Clipper entre 1989 e 1994, fiz pequenos sistemas contábeis, sistemas de controle de estoque, o arroz com feijão da época. Comecei a aprender Delphi em 1995, na versão 1.0 de 16-bits. Em paralelo ao Delphi também aprendi Visual Basic 3.0.
Até hoje essas plataformas ainda existem de uma forma ou de outra. Já aprender Java é difícil. Muito difícil. Eu pessoalmente comecei a aprender Java na versão 0.9x em 1995. Acompanhei toda sua evolução e todo o espantoso mercado que se formou à sua volta. Até hoje, “orientação a objetos” é uma abstração que desafia muitos delpheiros e vbzeiros.
Pela minha experiência, na média, um bom programador Java (ou seja, um programador minimamente útil) não se forma em menos de 2 anos. Estamos falando em aprender todos os principais truques do livro, Design Patterns, J2EE, tudo que se deve usar e tudo que não se deve usar. Segurança, Escalabiliade, Performance, Modularização, Mensagens assíncronas, Integração de sistemas, protocolos, etc, etc. A lista é longa.

Uma empresa que tem uma equipe de delpheiros que trabalham lá há anos não quer se desfazer deles. Alguns viram gerentes ou recebem algum cargo administrativo, mas nem sempre dá para fazer isso com todos. Fazer um sistema na plataforma Java (J2EE + todos os outros projetos complementares open source) é muito mais complexo do que a maioria dos gerentes de TI imagina. Quero dizer, codificar uma primeira versão que minimamente funciona é fácil, ela até talvez rode. Incrementá-la, expandí-la já é outra história. Normalmente, uma empresa vai gastar um bom tempo capacitando seus funcionários, contratando outros no mercado, criando uma primeira versão, usá-la por algum tempo e no final ela precisará jogar tudo fora e começar novamente ou desistir e finalmente comprar algo mais pronto no mercado. Já vi isso acontecer muitas vezes.
Tudo que eu disse exemplificando com Java também vale para .NET, apesar que .NET já é um pouco mais produtivo do que Java, na média.
Atualmente, alguns leram por aí (talvez aqui? :-) sobre esse tal de Ruby on Rails. Como ele é altamente produtivo, como é muito fácil para qualquer programador aprender a usá-la, etc. A promessa RoR começou a se espalhar. Antes que isso se torne um problema já aviso: Ruby on Rails não é Java, não vai substituir o Java. RoR equivale ao Java Spring+Hibernate, mas não chega nem perto da complexidade de um J2EE. RoR é apenas o front-end.
Mas será que não consigo criar alguns processos em RoR? Controle de Finanças, Controle de Recursos Humanos, Vendas, etc em RoR? Claro que consegue. Mas não significa que você deva, pelo menos não da forma como está pensando.
Isso dito, é bem possível sim criar um pequeno ERP em RoR, mas eu preciso partir de algumas premissas: os programadores envolvidos precisam ser exímios programadores e ao mesmo tempo ter pelo menos noções de processos corporativos. Júnior e programadores baratos da Índia não servem. A empresa precisará de muita paciência e terá que ter processos maduros que possam ser facilmente descritos. A cultura da empresa não pode ser aversa a novidades.

O programador precisa entender muito bem o que significa modularizar, particionar processos. Como criar múltiplas aplicações RoR e quais estratégias usará para fazer com todas elas se comuniquem entre si depois. Muito processamento precisará ser feito em background, ou seja, não dentro da aplicação Rails. Serviços extras como BackgroundRB ou cron jobs precisarão ser muito bem coordenados entre si.
Não é trivial, mas não é impossível chegar a uma arquitetura razoável para se criar um pequeno ERP em RoR. Com bons programadores, um projeto bem gerenciado e objetivos realistas, acho que é possível. Mas são muitos “se”, por isso, na dúvida, prefiro dizer “não” à pessoa que me pergunta, pois eu não conheço suas circunstâncias.
É o que eu sempre digo: sempre diga “não”. Na dúvida me contrate, daí entra o trabalho de um consultor: avaliar as necessidades do cliente, levantar os processos, levantar os buracos (gaps) desses processos, os pontos fracos, os pontos de melhoria, recursos disponíveis (custo, tempo e pessoas) e finalmente chegar a um plano de ação realista e somente nesse ponto pode começar a se definir o que seriam o conjunto de tecnologias necessárias para implementar a idéia.
Ninguém pergunta “este trator serve para minha grande obra?” sem antes sequer ter a planta baixa da “grande” obra. Portanto não pergunte “tecnologia X serve para minha grande aplicação?” sem antes ter uma idéia muito clara de onde se quer chegar. E isso não vale apenas para Ruby on Rails, vale para Java, vale para .NET, para qualquer coisa.
Mencionei isso antes, mas deixe-me elaborar. Os ERPs maduros do mercado, como SAP, foram surpreendidos pela Web. Por muito tempo não ficou claro como integrar as duas coisas: ERPs e Web. Uma das coisas atraiu certo mercado foi o de deixar as engrenagens robustas e pesadas no back-end e integrá-las a tecnologias mais flexíveis no front-end. Por exemplo, um painel HTML para call centers, que os atendentes poderiam usar para ter acessos mais rápidos aos diversos dados necessários para atender um cliente e anotar seus chamados. O front-end ou interface web, são terminais burros (dumb terminals) para coleta e pesquisa simples de dados. Esses dados são enviados para os grandes back-ends como os da SAP onde são efetivamente processados e integrados aos processos corporativos.
Esse é outro ponto onde Ruby on Rails pode ajudar. Você já tem um ERP que controla sua empresa, quer agora ter uma presença na Web para uma loja virtual, ou um atendimento ao cliente virtual, daí você faria um front-end Web em RoR e os dados coletados na página web seriam depois enviados de volta aos ERPs, que fariam o processamento de verdade.
Ou então você já tem alguns sistemas mais novos feitos em Java/J2EE. Quer front-ends para todos os seus EJBs? Também podem ser feitos front-ends RoR. Front-ends Web são commodities. RoR pode ou não ajudar a baratear esses custos. Normalmente estamos falando de custos perdidos. Não se tem receita direta desse tipo de front-end (por isso os departamentos de TI parecem tão “muquiranas” às vezes). Para a empresa como um todo, esse aplicativozinho Web não é importante, é apenas um custo necessário. Por isso o desenvolvedor não deve se sentir muito frustrado se seu cliente não parece dar ao projeto a devida “importância”, porque o que pode lhe parecer “importante” a eles é “dispensável”. A maioria dos projetos são assim: os desenvolvedores, inicialmente, parecem dar mais importância a um projeto do que ele realmente é. Por isso tantos se frustram e eventualmente se conformam a ser programadores de cadastros, como já descrevi uma vez.

JRuby e Rubinius parecem segurar a chave para maior viabilidade de Ruby on Rails dentro de um ambiente corporativo. Com JRuby você mantém o legado da empresa, os sistemas e processos que já existem, e aproveita a maior produtividade de Ruby on Rails usando JRuby. A vantagem é a integração imediata e automática com toda a enorme quantidade de bibliotecas Java disponíveis tanto no mundo open source quanto os ativos da própria empresa.
Com Rubinius talvez resolva-se o grande problema de performance, deployment e outros entraves que se opõe à boa produtividade do Rails. Com sorte, isso talvez ajude a tornar Ruby mais próximo de Java sem ser o Java.
Pelo menos para uma coisa Ruby e Rails já serviu: para acelerar a evolução e a concorrência dentro do mercado de plataformas. Levantou grandes discussões no mundo Java e incitou diversas mudanças para versões futuras e incentivou a criação de linguagens e frameworks concorrentes como Groovy e Grails. Mesmo que RoR não chegue ao mundo Enterprise para valer, pelo menos já deixou sua marca e cumpriu seu papel como catalizador de mudanças de paradigma.
Concluindo: “RoR serve para o mundo Enterprise?”, como consultor, a resposta é “Talvez”. Minha recomendação: analise criticamente o framework. Crie pequenas aplicações para alguma necessidade imediata da empresa. Entenda os pontos fortes e fracos. Avalie quais são as necessidades da empresa em curto e médio prazo, quais suas expectativas e quais os objetivos empíricos que se quer atingir. Depois de uma avaliação completa, tome sua própria decisão. Não ouça o que outros lhe dizem. Nem se incomode em perguntar: as pessoas normalmente respondem o que é melhor para elas mesmas e não para seu problema. O único que entende do próprio problema é você mesmo, e quem vai se responsabilizar por ela também é você, portanto é melhor que tome uma decisão educada.
A melhor decisão é que leva em consideração a melhor relação custo-benefício. E não digo isso apenas nas cifras entre custo imediato e receita imediata. Motivação dos funcionários é importante. Empreendedorismo. Riscos. Talvez você tenha estudado o suficiente e decidiu que vale a pena investir agora e colher os frutos quanto, por exemplo, o Rubinius se tornar maduro. A Engine Yard pensou assim já que está investindo tanto tempo e dinheiro nisso. Não estou dizendo que é “a” resposta, mas dentro de determinadas circunstâncias pode fazer sentido.
Alguns podem ter decidido que Oracle Applications ou Microsoft Dynamics fazem mais sentido. Tanto faz, contanto que seja uma decisão bem embasada. Negócios não é lugar para fanatismo, fanboys, ou decisões dogmatizadas e muito menos ignorantes. Se você for um empreendedor e também um programador – por gosto – e quer unir o útil ao agradável a você, tanto melhor, desde que não se traia a básica equação do custo-benefício: o lado empreendedor sempre tem que falar mais forte que o lado programador.
Depois de um longo texto, sinto muito por não ter uma resposta no estilo passo-a-passo, mas fazer o que? É por isso que o mundo precisa de consultores ;-)
32 Comments
Excelente texto, Akita.
Acho importante que você, que é, com justiça, uma referência na comunidade Rails, seja tão sobrio em relação às escolhas tecnológicas.
Dessa forma você contribui para que a comunidade Rails não se torne xenofóbica, e nem seja vista desta maneira. Até porque, se tem alguém que tem motivo para ignorar qualquer desvantagem do Rails e responder a pergunta principal desse post com um alto e sonoro “sim”, esse alguém é você, considerando o que você representa para a comunidade Rails e aonde o Rails te levou.
Além disso, devo dizer que concordo totalmente com a sua postura. Atualmente o Rails é a minha plataforma preferida, mas eu, ainda, não sou um empreendedor, portanto escolher uma plataforma para mim significa apenas escolher a que eu irei estudar mais e aquela que com a qual eu desejo trabalhar.
Eventualmente, quando eu me tornar um empreendedor, não vou mais poder fazer escolhas tecnológicas baseadas na paixão por uma plataforma de desenvolvimento. Isso quer dizer que talvez algumas situações excluam o Rails devido às suas desvantagens.
Se bem que eu acredito e espero que quando esse momento chegar, muitas das deficiências do Rails já vão ter sido resolvidas pelo JRuby ou pelo Rubinius ou pelo IronRuby, ou quem sabe até mesmo pelo MRI. Dessa forma, o Rails poderia se tornar uma escolha educada, como você costuma dizer, para situações onde hoje ele simplesmente não se adequa devido ao seu próprio príncipio básico de não ser um martelo universal. Mas caso isto não aconteça, é preciso ter a seriedade de reconhecer o fato e escolher a melhor tecnlogia para resolver a situação.
Até porque, não podemos esquecer que no fim das contas é disso que se tratam as linguagens de programação/frameworks: resolver problemas.
elomarns / 12.Mar.2008 at 04:18am
Ótimo texto! A explicação sobre ERP foi a menos ruim que vi até hoje.
felipe / 12.Mar.2008 at 09:17am
É como eu digo e você mencionou também. Rails (assim como o Firefox) já “venceu”, pois mesmo que suma em breve, já modificou a visão de framework e destacou a importância de aspectos não técnicos como a motivação e a “felicidade” do desenvolvedor. Mesmo não sendo o framework mais usado, tornou-se referência para todos os outros, inclusive os líderes.
lucas / 12.Mar.2008 at 09:46am
Muito, muito interessante. Aprendi um monte de coisas. Mas quero questionar a sua implicação que a Web é um mero “front-end” para regras de negocio. Me parece que não é no interesse de empresas encarar a Web assim e que devem aplicar as lições da Web (bom resumo por Tim Bray aqui: http://www.tbray.org/ongoing/When/200x/2007/12/12/XBRL-Web)
Veja a triste história de vendedores de livros no final dos anos noventa. Colocaram um front-end com o endereço da sua loja na Web. Resultado: todo mundo foi para Amazon, que usou a Web como parte integral do seu negócio. Aí, os vendedores de livros colocaram os seus catálogo online, mas sem preços, sem possibilidade de linkar para livros. Resultado: todo mundo foi para Amazon, que deu um URL para cada livro, colocou preços, permitiu resenhas.
A Web não deve ser encarado como mero frontend. Empresas que não reconhecem isto vão estar em grande desvantagem. A Web é naturalmente aberta, uma plataforma neutra (não tenha medo que outros usam a sua plataforma), distribuida, robusta. Reproduzir velhas maneiras de fazer negócio na Web não vai dar certo.
Resumindo, acho que a verdadeira questão não é até onde RoR vai servir para o mundo corporativo, mas como empresas vão aplicar as lições da Web.
ewout ter haar / 12.Mar.2008 at 10:07am
Eu penso que, em se tratando de ERP, o mais importante é dominar e documentar ao máximo possível a inteligência da coisa, as regras e variações. Devo focar no que ele deve fazer e não em como fazer. Se eu apostei numa linguagem e ela está me entravando eu reescrevo em outra. Sei que não é tão simples assim. Outra coisa: não temso em Rais e sim em Ruby. Rais é um resultado. Não penso em Delphi e sim em Object Pascal. E em se tratando de Delphi : ele não morreu muito, muito pelo contrário, uma indicação é o Tiobe.
eraldo / 12.Mar.2008 at 10:33am
Olá Akita,
Ainda vou ler o texto, mas já adianto que esse tipo de dúvida é normal para quem tá começando. Foi normal para mim. Assim como é normal te procurarem, já que você tem uma ótima visibilidade na Comunidade.
Creio que com o tempo (no meu caso, poucos meses…) a gente “desencana” um pouco com esse negócio de performance, performance, performance! Principalmente depois que a gente lê o “Getting Real”...
Agora deixe eu ler o texto ;-)
Forte abraço,
paulo cassiano / 12.Mar.2008 at 11:07am
@Ewout, deixe-me esclarecer. Não estou desmerecendo a “Web”, muito pelo contrário, eu disse que a Web permitiu aos ERPs darem um grande salto de qualidade.
Porém, usamos o termo “Web” para definir muitas coisas diferentes. O termo genérico “Web” resume o conjunto de tecnologias que permitem a teia mundial. Daí estamos falando desde HTML, protocolo HTTP, TCP/IP, sistemas operacionais robustos (Unix), etc etc.
Agora, quando falo em front-end, quero dizer literalmente a camada responsável por gerar HTML. PHP se encaixa nisso, Ruby on Rails também.
Por trás é necessário haver algum outro sistema, independente de que linguagem que é feito. Seja em Java/J2EE, seja em ABAP/4 ou poderia ser feito até mesmo em Ruby (conjunto de cronjobs, ou tarefas assíncronas em servidores BackgroundRB por exemplo).
Começa a ficar muito pesado fazer aplicações muito complexas em RoR pelo fato dele ter que carregar múltiplos processos cada um com uma cópia inteira da aplicação duplicada em memória. Diferente de J2EE onde a aplicação é carregada apenas uma vez e as requisições simultâneas são gerenciadas por worker threads em vez de worker processes.
E mesmo assim, em Java, existem 2 containers: o responsável pelo front-end e o container EJB responsável pela lógica de negócio, componentes distribuidos, segurança, transações, integração, comunicação, etc.
A “cara” é somente um front-end mesmo, um sistema de cadastros. Colocar 100% da lógica de negócio nessa camada é meio complicado. Dependendo do tamanho da aplicação é viável, se for muito grande é inviável.
Por trás do website Amazon.com deve haver um sistema de back-end bastante complexo que amarra todos os processos que resumi acima. No e-Bay, e em todos os outros e-commerce, existe o front-end Web que é um coletor de pedidos e um sistema back-end responsável por efetivamente processar e gerenciar esses pedidos. É isso que eu quis dizer.
akitaonrails / 12.Mar.2008 at 11:26am
Aliás, para deixar mais claro, que ninguém pense que estou levantando a bandeira e que RoR não é capaz de fazer as coisas.
Obviamente é!
Mas a pergunta foi muito específica: “RoR faz ERP?” Por isso gastei tanto tempo explicando o que é um ERP primeiro.
A resposta correta é que um ERP é um conjunto de tecnologias e plataformas. Uma única linguagem não faz um ERP.
O próprio SAP ECC (antigo R/3) é formado por uma mistura de kernel em C multi-plataforma, aplicações escritas em ABAP/4 multi-banco de dados, integração via diversos protocolos desde texto até binário-proprietário e suporte a extensões em C# e Java. Outras integrações envolvem, por exemplo, usar o Microsoft Excel como front-end para o Business Warehouse (o software de Data Warehouse da SAP) poder fazer análises multi-dimensionais. Estamos falando de um software grande, literalmente, com dezenas de milhares de tabelas e um dicionário de dados massivo e monstruoso em múltiplas linguagens e localizações, o que inclui não somente tradução de texto como regionalização de impostos e tudo mais.
akitaonrails / 12.Mar.2008 at 11:37am
Sensacional! A chamativa para o “contrate-me como seu consultor” é a melhor =P
wallace gonçalves / 12.Mar.2008 at 01:07pm
Excelente post Akita.
Este é um grande diferencial de bons profissionais.
Você é um dos grandes idealizadores de RoR brasileiro, mas mesmo assim sem fanatismos inexplicáveis ou vícios ignorantes. Por estas e outras acompanho o blog.
Obrigado.
luis eduardo bohrer da silva / 12.Mar.2008 at 02:04pm
Lendo mais este excelente texto, ficou claro o que o Akita quis dizer.
Pelo que eu entendi com RoR voce até conseguiria fazer um ERP, mas com certeza não seria a melhor solução. Creio que o JRuby poderia até dar um “gás” nesta area voltado para enterprises.
Parabens pelo texto.
clovis / 12.Mar.2008 at 06:30pm
Acho que é o maior artigo que já li na web. :D . Brincadeira, muito bom o artigo, parabens Akita.
Obrigado.
daniel / 12.Mar.2008 at 06:53pm
Perguntinha passatempo, vamos lá, conhecimentos gerais :-) Quem sabe quem é o tiozão de óculos escuros no começo do artigo?
akitaonrails / 12.Mar.2008 at 07:08pm
Olá Fábio, é por textos como esse que sou fã desse blog. Está na minha lista de favoritos e na lista dos blogs altamente recomendados. Esse seria um assunto muito, mas muito bom para aparecer lá no RailsPodCast.. o que acha? Parabéns pelo seu trabalho e terei o maior prazer em te conhecer pessoalmente no FISL… Abraços
fausto / 12.Mar.2008 at 07:49pm
Obrigado por mais um capítulo extra do “Repensando a web…”
rondy / 12.Mar.2008 at 11:50pm
ola! akita parabéns pelo artigo muito bom… agora vc falou em Balanced Scorecard, bem atualmente faço parte de um equipe de um sistema de bsc,e lhe pergunto vc implementaria um sistema de “bsc” em php? ou ruby?(ou qualquer outra linguagem de script) no qual temos varios requisitos como alta disponibilidade de acesso, grande volume de dados tanto para carga quanto para consulta?
posso continuar achando que meu chefe esta errado ao querer enpurrar php(atenção nada contra php aqui ok?) pela garganta abaixo?
bruno / 13.Mar.2008 at 01:12am
“Nesse nicho figurou durante muito tempo plataformas como dBase, Clipper, Dataflex, Powerbuilder, FoxPro, Visual Basic e, até o começo deste século, Delphi. Agora com todos esses fora da jogada, os olhos se voltaram aos novos players: Microsoft .NET e Java J2EE.”
Diga-me uma empresa que usa estes “novos players”, ou melhor, que tenha um ERP completo usando estas novas tecnologias, que posso listas pelo menos umas dez que ainda usa os que vc listou como ‘fora da jogada’.
Vc perdeu uma oportunidade de não dizer uma inverdade.
Um abraço, continuo sendo seu fã.
joão / 13.Mar.2008 at 09:48am
“Será que Ruby on Rails serve para criar aplicações grandes e robustas, como um ERP?”
“Servir? sim claro, mas o problema não é o RoR. E sim os ‘programadores de blogs’.”
Eu realmente fico muito triste quando começo a ler um livro ou tutorial que sempre começa: “Vamos começar fazendo nosso blog, onde temos post e este has_many comments”. Caramba será que RoR server somente para fazer blogs?
Tudo bem que ficou conhecido quando foi mostrado a construção de blog em, sei lá quantos minutos, mas já não estar na hora de acabar com isto e começarmos a mostrar algo mais real???? Eu acredito que a comunidade já passou desta fase de fazer Blogs e continuamos com….criar nosso blog…
Tenha santa paciência.
joão / 13.Mar.2008 at 10:18am
@Joao, você está confundindo as coisas. Eu não disse nada disso.
Leia a pergunta original, ela é muito específica: “ERPs”.
Outros exemplos existem. Eu mesmo não faço websites de entretenimento, estou fazendo aplicações comerciais de intranet com Rails. A 37signals tem pelo menos 2 grandes produtos nessa categoria: Basecamp (gerenciador de projetos) e Highrise (micro-CRM).
Outros produtos open source também são usados para aplicações desse tipo. Vide SugarCRM que é originalmente feito em PHP.
Existem ERPs open source. Basta procurar. Adempiere/Compiere (Java), GNU Enterprise (Java), OpenBravo (Java), OpenBlueLab (Java/Misto), webERP (LAMP) e outros.
Eles já servem muitas empresas, o que demonstra que não é impossível pensar num ERP em RoR.
Mude a perspectiva: “eu sou um programador, ou uma equipe pequena de programadores. Minha empresa precisa de um ERP. O que fazer?” A melhora coisa a se fazer? Compre um que tenha mercado estável, nacional ou de fora. Se a empresa já não tem um ERP, ou seja, não tem experiência com ERPs, não tente fazer um. É como tentar fazer um buffet de casamento sem saber cozinhar: contrate um terceiro que com certeza absoluta, fará melhor.
Sobre “Diga-me uma empresa que usa estes “novos players”, ou melhor, que tenha um ERP completo usando estas novas tecnologias, que posso listas pelo menos umas dez que ainda usa os que vc listou como ‘fora da jogada’.” você não entendeu: eu disse que várias empresas, estão usando sistemas feitos em tecnologia morta. Neste momento, os gerentes de TI estão entrando no momento crítico: as empresas precisam crescer, o sistema interno precisa melhorar – seja em funcionalidade, performance, etc – e já não existe mais suporte do fornecedor, não existe mais programador no mercado, etc. O que eles estão pensando? Ou comprar um ERP de terceiros ou desenvolver tudo do zero em .NET ou Java. Não consigo pensar em nenhuma boa razão para uma empresa estar pensando em começar a desenvolver, do zero, um sistema em Clipper :-)
akitaonrails / 13.Mar.2008 at 11:06am
E antes que se cogite: não, nenhum desses sistemas open source chega perto do que um SAP ou Oracle oferecem. Está a algumas ordens de grandeza de distância.
Não estou dizendo que elas são ruins, muito pelo contrário. A Starbucks fez deployment de SugarCRM para gerenciar suas mais de 5 mil filiais.
É MUITO caso a caso. Se a empresa tem os recursos (tempo, dinheiro, pessoas), a vontade tecnológica, etc, tem mais chances de aparecer com soluções inusitadas e inovadoras.
A realidade da maioria das empresas brasileiras não é essa. TI, no Brasil, é efetivamente considerado custo, não algo estratégico como poderia ser. Novamente, não são todos, mas pelo menos aqui em São Paulo, dentre as empresas que tem cacife para adquirir um SAP, esse é o comportamento.
Só para outra perspectiva. Pacotes como SAP, Sage, Oracle, etc sempre custaram muito caro. Hoje em dia considera-se que eles estão muito baratos, ou seja, são pechinchas de menos de US$ 100 mil para adquirir. A licença mais barata para cada usuário, por mês, é de US$ 150 e acreditem, isso é muito barato pelos padrões da SAP. A SAP considera ‘pequena empresa’ aquela que tem entre 100 e 500 funcionários. Estamos falando de escala!
akitaonrails / 13.Mar.2008 at 11:20am
Agora fiquei curioso em saber quem eh o tiozão da foto com a taça de champgne….
clovis / 13.Mar.2008 at 11:24am
Blz Akita talvez eu, e outros também, tenhamos confudidos as coisas.
Acho que estou mesmo é estressado de ver tantos exemplo de Blogs em RoR :)
E por falar em livros que somente Abordam Blogs, parece que tem um novo Livro no pedaço que é mais para ‘Power User’ um tal de ‘Advanced Rails’
Mas blz, eu também não escreveria um ERP em Clipper :-)
Um abraço.
joão / 13.Mar.2008 at 12:27pm
@Akita
Gostei da leitura, serve bem como referência para o assunto que voce abordou.
Não sei se já escreveram, sobre o carinha lá do começo do artigo, o carinha da foto é o Larry Ellison =)
T+
proteu alcebidiano / 13.Mar.2008 at 01:15pm
@Joao, sem stress :-)
@Proteu, Bingo! Isso mesmo :-) O dono da Oracle.
akitaonrails / 13.Mar.2008 at 03:05pm
Beleza de texto. Grande opnião. Sóbria e inspira confiança.
Parabéns
brunopedroso / 13.Mar.2008 at 09:46pm
Olá joão, acho que você está um pouco equivocado. Toda linguagem, ferramenta ou tecnologia precisa de muitos tutoriais básicos para poder atrair muitos participantes… Um blogzinho é uma boa forma de exemplificar boa parte dos conceitos que um iniciante precisa saber sobre o framework. Não acho que está errado de forma alguma termos exemplos básicos. Se vc precisa de algo mais avançado leia o código do rails e do ruby, leia livros de outras tecnologias e tente implementar em ruby e depois coloque em um svn ou faça um tutorial explicando como fez… ai sim vc vai estar ajudando e mostrando que o rails serve para coisas alem de blog. Dei uma olhada no conteudo do avanced rails e não achei muita graça preferi comprar o Rails Way. Livro bom eu ainda estou esperando o do Akita pq o primeiro foi bem legal, nunca li um livro inteiro de 400 paginas em duas semanas. Falando nisso, e ai Akita… quando sai?
daniel lopes / 14.Mar.2008 at 01:15am
@Daniel Lopes
Realmente o ‘Rails Way’ possui conteúdo bem mais bacana, e boa pergunta… Quando sai o novo livro Akita?
Abraços.
joão / 14.Mar.2008 at 09:44am
Se eu fosse cunstruir um ERP de verdade eu usaria como linguagen nada mais do que Assembly, C++ ou ObjectPascal com bibliotecas de acesso a dados totalmente desenvolvidades dentro da minha empresa ou então adquiridos os fontes de terceiros. Esses fontes deveriam ser em C ou C++(no mínimo máximo…). Para camada de rede usaria um protocolo tb desenvolvido dentro da empresa. Nada de usar Browsers como IE, Firefox. Teria um navegador próprio, enxuto (só fazer o que o ERP precisa). Para interoperabilidade com outros sistemas teriamos pontos de entrada e saída, algo parecido com o Siga. Enfim: Quero dizer com isso que num ERP o mais importante é a inteligência do negócio, performance e longevidade. Nunca apostaria num linguagem criada a menos de 10 anos. Repido Rais é apenas um produto da boa linguagem chamada Ruby que por sua vez não serve para criar ERP, Nem Python e nem qualquer coisa que seja interpretada. ERP é algo caro e muito, muito sério. Velocidade de desenvolvimento não é o mais importante a ser considerado.
eraldo / 14.Mar.2008 at 12:12pm
Texto antológico, Akita. Guardado no favoritos, no bookmarks, no del.icio.us e no HD. :)
Parabéns!
marcelo baltar / 14.Mar.2008 at 04:55pm
Me da vergonha ver um topico destes.
Só quero deixar uma resalva para TODOS aqui! “QUALQUER LINGUAGEM ORIENTADA A OBJETO” PODE CRIAR QUALQUER TIPO DE SISTEMA… BI, ERP, WHATEVER…
Acho ridículo alguém que se diz consultor chegar a falar algo assim:
-“Ruby on Rails serve para desenvolver um ERP?” A resposta é “Não”.-O correto não é falar se a linguagem (com ou sem framework) é capaz ou não e sim se a empresa tem interesse ou não em trabalhar com ela. Aí vem o trabalho de ver os prós e contras e verificar se é compatível com o que a empresa procura.
Vamos lá, mais uma vez: “QUALQUER LINGUAGEM ORIENTADA A OBJETO” PODE CRIAR QUALQUER TIPO DE SISTEMA… BI, ERP, WHATEVER…
ironico / 20.Mar.2008 at 10:05pm
@ironico, você efetivamente leu além do primeiro parágrafo? Segundo, não. Só porque é possível fazer alguma coisa não significa que vc deva. Terceiro, não, ser OO não significa nada. O que importa é se a linguagem é Turing complete ou não. Você poderia tentar fazer um Erp – da categoria que expliquei – usando Javascript. Não recomendo, porém. Só se vc for masoquista.
akitaonrails / 21.Mar.2008 at 01:46am
Grande texto, estou começando a me interessar por ruby/rails vejo que por aqui vou aprender muito. Abraço.
alisson sales / 08.Apr.2008 at 11:26pm
Leave a Comment