Como um pequeno programa transformou um pequeno escritório em uma empresa federal com um lucro de mais de 100 milhões de rublos/mês

No final de dezembro de 2008, fui convidado para um dos serviços de táxi em Perm com o objetivo de automatizar os processos de negócio existentes. Em geral, recebi três tarefas fundamentais:


  • Desenvolva um pacote de software para call center com aplicativo mobile para taxistas e automatize processos internos de negócios.
  • Tudo tinha que ser feito no menor tempo possível.
  • Tenha seu próprio software, em vez de comprar de desenvolvedores terceirizados, que no futuro, à medida que o negócio se desenvolve, pode ser dimensionado de forma independente para condições de mercado em constante mudança.

Naquela época eu não entendia como funciona esse mercado e suas nuances, mas mesmo assim duas coisas eram óbvias para mim. O call center deve ser construído com base no software PBX de código aberto Asterisk. A troca de informações entre o call center e a aplicação móvel é essencialmente uma solução cliente-servidor com todos os padrões correspondentes para desenhar a arquitetura do projeto futuro e sua programação.

Após uma avaliação preliminar das tarefas, prazos e custos do projecto, e tendo acordado todas as questões necessárias com o proprietário do serviço de táxi, iniciei os trabalhos em Janeiro de 2009.

Olhando para o futuro, direi imediatamente. O resultado foi uma plataforma escalável executada em mais de 60 servidores em 12 cidades na Rússia e 2 no Cazaquistão. O lucro total da empresa foi de mais de 100 milhões de rublos/mês.

Estágio um. Protótipo

Como naquela época eu não tinha experiência prática em telefonia IP e conhecia apenas superficialmente o asterisk como parte de experimentos “domésticos”, decidiu-se começar a trabalhar com o desenvolvimento de uma aplicação móvel e parte de servidor. Ao mesmo tempo, colmatar lacunas de conhecimento sobre outras tarefas.

Se com o aplicativo mobile tudo ficou mais ou menos claro. Naquela época, ele só podia ser escrito em java para telefones simples, mas escrever um servidor que atendesse clientes móveis era um pouco mais complicado:

  • Qual sistema operacional do servidor será usado;
  • Com base na lógica de que se escolhe uma linguagem de programação para uma tarefa, e não vice-versa, e tendo em conta o ponto 1, qual a linguagem de programação ideal para a resolução de problemas;
  • Durante o projeto, foi necessário levar em consideração as altas cargas futuras esperadas no serviço;
  • Qual banco de dados pode garantir tolerância a falhas sob altas cargas e como manter um tempo de resposta rápido do banco de dados à medida que o número de solicitações aumenta;
  • O fator determinante foi a velocidade de desenvolvimento e a capacidade de escalar rapidamente o código
  • O custo do equipamento e sua manutenção no futuro (uma das condições do cliente é que os servidores estejam localizados no território sob seu controle);
  • Custo dos desenvolvedores que serão necessários nas próximas etapas de trabalho na plataforma;

Bem como muitas outras questões relacionadas ao design e desenvolvimento.

Antes de iniciar o trabalho no projeto, propus ao empresário a seguinte decisão estratégica: como o projeto é bastante complexo, sua implementação levará um tempo considerável, então primeiro crio uma versão MVP, que não levará muito tempo e dinheiro, mas que permitirá à sua empresa obter uma vantagem competitiva no mercado já “aqui e agora”, e também expandirá as suas capacidades como serviço de táxi. Por sua vez, essa solução intermediária me dará tempo para projetar a solução final com mais cuidado e tempo para experimentos técnicos. Ao mesmo tempo, não será garantido que a solução de software implementada seja projetada corretamente e poderá ser radicalmente redesenhada ou substituída no futuro, mas certamente executará a funcionalidade mínima necessária para “romper com os concorrentes”. O fundador do táxi gostou da ideia, então no final eles conseguiram.

Passei as primeiras duas semanas estudando os processos de negócios da empresa e estudando o funcionamento de um táxi por dentro. Conduziu uma análise de negócios sobre onde, o que e como pode ser automatizado e se é necessário. Que dificuldades e problemas os funcionários da empresa enfrentam? Como eles são resolvidos. Como é organizada a jornada de trabalho dos colaboradores da empresa. Quais ferramentas eles usam?

No final da terceira semana, após iniciar o trabalho e estudar assuntos de interesse na Internet, tendo em conta a vontade do empresário, bem como os meus próprios conhecimentos e capacidades da altura, decidiu-se aplicar a seguinte pilha :

  • Servidor de banco de dados: MsSQL (versão gratuita com limite de arquivos de banco de dados de até 2GB);
  • Desenvolvimento de um servidor atendendo clientes mobile em Delphi sob Windows, visto que já existia um servidor Windows no qual seria instalado o banco de dados, assim como o próprio ambiente de desenvolvimento facilita o rápido desenvolvimento;
  • Tendo em conta as baixas velocidades da Internet nos telemóveis em 2009, o protocolo de troca entre o cliente e o servidor deve ser binário. Isto reduzirá o tamanho dos pacotes de dados transmitidos e, como resultado, aumentará a estabilidade do trabalho dos clientes com o servidor;

Outras duas semanas foram gastas projetando o protocolo e o banco de dados. O resultado foram 12 pacotes que garantem a troca de todos os dados necessários entre o cliente mobile e o servidor e cerca de 20 tabelas no banco de dados. Fiz essa parte do trabalho levando em consideração o futuro, mesmo que tenha que mudar completamente a pilha de tecnologia, a estrutura dos pacotes e do banco de dados deve permanecer inalterada.

Após os trabalhos preparatórios, foi possível iniciar a implementação prática da ideia. Para acelerar um pouco o processo e liberar tempo para outras tarefas, fiz um rascunho do aplicativo móvel, esbocei a UI, em parte a UX, e envolvi um programador Java familiar no projeto. E ele se concentrou no desenvolvimento, design e testes do lado do servidor.

Ao final do segundo mês de trabalho no MVP, a primeira versão do protótipo servidor e cliente estava pronta.

E no final do terceiro mês, após testes sintéticos e de campo, correções de bugs, pequenas melhorias no protocolo e no banco de dados, o aplicativo estava pronto para produção. Foi isso que foi feito.

A partir deste momento começa a parte mais interessante e difícil do projeto.

Durante a transição dos motoristas para o novo software, foi organizado plantão XNUMX horas por dia. Já que nem todos podiam comparecer durante o horário de trabalho durante o dia. Além disso, administrativamente, por decisão obstinada do fundador da empresa, esta foi organizada de forma a que o login/senha fossem introduzidos pelo gestor do serviço de táxi e não fossem comunicados ao motorista. Da minha parte, foi necessário suporte técnico aos usuários em caso de falhas e imprevistos.

A Lei de Murphy nos diz: “Tudo o que pode dar errado, dará errado”. E foi exatamente assim que as coisas deram errado... Uma coisa foi quando eu e vários motoristas de táxi testamos o aplicativo em várias dezenas de pedidos de teste. E é uma questão completamente diferente quando mais de 500 motoristas na linha trabalham em tempo real com pedidos reais de pessoas reais.

A arquitetura do aplicativo móvel era simples e havia visivelmente menos bugs nele do que no servidor. Portanto, o foco principal do trabalho ficou no lado do servidor. A falha mais crítica do aplicativo foi o problema de desconexão do servidor quando a Internet do telefone foi perdida e a sessão foi restaurada novamente. E a Internet desapareceu com bastante frequência. Em primeiro lugar, naqueles anos, a Internet no telefone não era suficientemente estável. Em segundo lugar, havia muitos pontos cegos onde a Internet simplesmente não funcionava. Identificamos esse problema quase imediatamente e em XNUMX horas corrigimos e atualizamos todos os aplicativos instalados anteriormente.

O servidor apresentou principalmente erros no algoritmo de distribuição de pedidos e processamento incorreto de algumas solicitações de clientes. Ao identificar falhas, corrigi e atualizei o servidor.

Na verdade, não houve muitos problemas técnicos nesta fase. A dificuldade toda era que fiquei quase um mês de plantão no escritório, só ocasionalmente voltando para casa. Provavelmente 4-5 vezes. E dormi aos trancos e barrancos, pois naquela época eu estava trabalhando no projeto sozinho e ninguém além de mim conseguia consertar nada.

Um mês, isso não significa que tudo estava constantemente apresentando falhas durante um mês e eu estava codificando algo sem parar. Acabamos de decidir isso. Afinal, o negócio já estava operando e dando lucro. É melhor jogar pelo seguro e descansar até mais tarde do que perder clientes e lucros agora. Todos nós entendemos isso muito bem, então toda a equipe dedicou coletivamente o máximo de atenção e tempo à introdução de novo software no sistema de táxi. E tendo em conta o tráfego atual de encomendas, com certeza eliminaremos todas as deficiências dentro de um mês. Pois bem, bugs ocultos que possam permanecer certamente não terão consequências críticas no processo de negócio e, se necessário, poderão ser corrigidos rotineiramente.

Aqui é necessário destacar a inestimável assistência dos diretores e encarregados dos serviços de táxi, que, com a máxima compreensão da complexidade da situação de transferência dos motoristas para um novo software, trabalharam com os motoristas XNUMX horas por dia. Na verdade, após concluir a instalação de novos programas nos telefones, não perdemos um único driver. E não aumentaram de forma crítica o percentual de não afastamento de clientes, que logo voltou aos níveis normais.

Isso completou a primeira etapa do trabalho no projeto. E é importante destacar que o resultado não demorou a chegar. Ao automatizar a distribuição de encomendas aos motoristas sem intervenção humana, o tempo médio de espera de um táxi por um cliente foi reduzido numa ordem de grandeza, o que naturalmente aumentou a fidelização do cliente ao serviço. Isso levou a um aumento no número de pedidos. Depois disso, o número de taxistas aumentou. Como resultado, o número de pedidos concluídos com sucesso também aumentou. E como resultado, os lucros da empresa aumentaram. Claro que aqui estou me adiantando um pouco, já que todo esse processo não aconteceu de forma instantânea. Dizer que a administração ficou satisfeita é não dizer nada. Recebi acesso ilimitado a financiamento adicional do projeto.

Para ser continuado ..

Fonte: habr.com

Adicionar um comentário