Update 2020: atualização de exemplos, inclusão de ferramentas a utilizar e mais 2 dicas
Seu chefe já te pediu pra fazer? Sua empresa está precisando? A crise está te obrigando a fazer mais com menos?
Esse é um mantra que sempre aparece em tempos de crise, mas também é recitado por altos executivos em apresentações pomposas e recheadas de gráficos e números, em artigos, discursos e até em conversas de corredor.
Mas será que é realmente possível fazer mais com menos?
A primeira coisa a se entender é o que significa mais com menos em TI: mais chamados atendidos? mais performance dos servidores? mais gente com menos dinheiro? mais usuários suportados com menos hardware? mais servidores em menos espaço físico? Alguns desses exemplos são factíveis, enquanto outros não e algumas coisas dependem do nível de maturidade da TI, vamos explorar alguns desses pontos:
1. Hardware & Softwares
Primeiro é preciso entender que é difícil reduzir a quantidade de hardware existente, espaço ocupado ou energia elétrica consumida sem novos investimentos, ou seja, é necessário gastar dinheiro para economizar dinheiro.
Nesse ponto, investir em virtualização de servidores ajuda muito, pois permite condensar servidores diferentes, com vários sistemas operacionais e aplicativos instalados em um único hardware, além de prover redundância, facilidade no backup e capacidades de recuperação de desastres antes não existentes, entre outros benefícios explorados nesse outro artigo.
Mesmo gastando mais para comprar um hardware mais potente e as licenças de virtualização, medindo no espaço físico, no watt consumido e principalmente no tempo e trabalho de manutenção economiza-se muito com Virtualização e é realmente uma forma de entregar mais serviço com menos esforço e dinheiro a médio e longo prazo.
Outra possibilidade é migrar para um ambiente de nuvem externo, contratando o hardware sob demanda, com contratos de pagamento mensal por uso, ao invés de realizar um único investimento na aquisição dos equipamentos.
2. Desenvolvimento de Sistemas
Em sistemas, a tendência é que os mesmos sejam cada vez mais completos, atendam cada vez mais necessidades dos negócios, cada vez mais legislações e assim fiquem mais complexos, custosos de manter e utilizem mais recursos.
Isso por si só significa fazer mais, mas para utilizar menos recursos, é necessário disciplina para criar códigos eficientes e enxutos, ou mesmo realizar sessões de “caça as bruxas”, onde a equipe de desenvolvimento para por um tempo a inovação para buscar melhorias de performance.
Isso aconteceu por exemplo com o kernel do Linux e mesmo com o Windows no lançamento da versão 7 e os usuários perceberam a diferença, sistemas mais eficientes e responsivos quando executados no mesmo hardware.
Mas o ideal mesmo é que esse seja um processo contínuo, onde a equipe de Operações ofereça um feedback constante das partes do sistema que mais consomem recursos (queries de SQL lentas por exemplo), ou mesmo a mudança de desempenho na mudança da versão, enquanto que a equipe de desenvolvimento trabalha com esse feedback para melhorar as rotinas e aprender a desenvolver código melhor.
Pode ser uma boa prática também utilizar componentes de mercado para sistemas, isso significa buscar no mercado pedaços de código prontos para determinadas tarefas, por exemplo, ao invés de programar um módulo de calendário, buscar uma biblioteca pronta para calendário que possa ser plugada no sistema atual e adaptado as necessidades, isso pode economizar vários dias de desenvolvimento.
Um componente irá custar uma fração do que o tempo do desenvolvedor, considerando os custos de manutenção também, mas os desenvolvedores precisam ter autonomia e direcionamento para buscar esses componentes e sempre de olho no longo prazo, buscando por componentes que se integrem bem nos já existentes e com continuidade nas melhorias e suporte.
3. Desenvolvimento Ágil
Uma outra abordagem para sistemas é utilizar técnicas de desenvolvimento ágil como o Scrum, XP, Lean Startup ou similar, isso significa diminuir o tempo para entrega de funcionalidades, embora limitando o escopo das mesmas.
A entrega mais frequente com interações faz a equipe de desenvolvimento ser mais eficaz perante o negócio, pois está entregando valor para o mesmo em menor tempo e também permite a correção de percurso em intervalos regulares, evitando que seja desenvolvido um sistema monstro que não se aplica aos negócios e se perca meses de desenvolvimento com isso.
4. Automação de Testes de Software
Ainda em desenvolvimento, é possível criar os componentes do sistema e os mesmos serem testados automaticamente (inclusive verificando performance para execução de determinadas funções), eliminando problemas futuros.
Uma abordagem é utilizar Desenvolvimento Orientado a Testes ou TDD, onde primeiro o desenvolvedor escreve os testes que indiquem que o componente está funcionando e só depois crie o código que executará a tarefa.
Ao enviar o código para o repositório, o próprio servidor executa os testes, compilação e retorna para o desenvolvedor caso ocorra algum erro.
Em ambientes maduros, verifica-se por exemplo se uma parte nova de código interage bem com outros componentes e até se afeta a exibição de informações e posicionamento dos textos na tela, para garantir que a experiência do usuário continue fluída entre cada entrega de requisitos.
A automação varia de acordo com a linguagem e o servidor de repositório utilizados, mas praticamente todos oferecem métodos para isso. Pode-se utilizar ferramentas como o Vagrant ou Docker para criar ambientes de testes nas próprias máquinas dos desenvolvedores, com ambientes semelhantes aos de produção, é possível testar as interações e funcionamento dos mais diversos componentes.
5. Operações
Em operações e serviços de TI, a forma de fazer mais com menos é automatizar o máximo possível as tarefas. Mas não adianta começar a tentar automatizar os sistemas a esmo, principalmente enquanto “a casa pega fogo”.
O primeiro passo é medir o esforço que se gasta com tarefas corriqueiras, por exemplo, quantas máquinas são formatadas por dia e quanto tempo o técnico gasta nisso? Será que vale a pena automatizar com um sistema de restauração de imagem de disco?
Para medir, pode-se utilizar um sistema de chamados como OTRS, FreshDesk, ZenDesk ou MoviDesk, onde são cadastrados os principais serviços oferecidos pela TI e lançados chamados identificando os problemas, usuários, equipamentos, etc.
Pode-se pesquisar depois os principais eventos, que representam a maior quantidade de problemas, ou maior tempo de trabalho e começar a automatizar por aí.
Outra alternativa é utilizar algum sistema que meça o tempo gasto por aplicativo, como muitos dos profissionais de TI passam quase o dia todo no computador, a precisão será bem grande.
Também, usando os indicadores que listo nesse outro artigo, é possível deixar os usuários mais satisfeitos e atender a pontos críticos da empresa mais rapidamente, além de dar visibilidade do trabalho da equipe.
6. Automação de Implantação e Manutenção de Sistemas
Muitas das tarefas em ambientes mais complexos são corriqueiras, como instalação de um sistema operacional, aplicação de um Patch, renovação de um certificado.
Esse tipo de trabalho repetitivo pode ser automatizado com ferramentas como o Puppet ou o Chef, entre outras, para que essas tarefas ocorram dentro de um padrão e com o mínimo de intervenção humana possível.
Até a atualização de componentes pode ser automatizada, pode-se por exemplo utilizar o WSUS para baixar uma única vez as atualizações de Windows da empresa e aplicar os patches em horários controlados, inclusive criando algumas estações que são um grupo de controle, que recebem a atualização antes das demais para fins de testes, para só depois aplicar nas demais, de forma organizada e ordeira.
7. Documentação
Ainda em operações, é importante documentar as principais atividades e processos, para que a execução da tarefa não dependa da memória de um operador em específico, mas principalmente para que possa ser migrado dos técnicos mais experientes (mais caros) para os novatos (mais baratos).
Além de liberar tempo dos melhores profissionais e permitir o aprendizado aos iniciantes, também garante a execução correta dos processos e a continuidade das operações mesmo na ausência do profissional (por motivo de férias ou doença por exemplo).
8. Integrações de Sistemas
Como parte dos trabalhos entre Operações e Desenvolvimento, a integração de sistemas é algo que pode fazer a empresa como um todo ganhar mais produtividade.
Integrar por exemplo a autenticação de sistemas, centralizando em uma base como o AD, torna a tarefa de administrar usuários muito mais simples para a TI, mais fácil para o usuário que poderá usar uma única senha para todos os sistemas e segura pois fica um ponto único de controle de acessos.
Outras integrações, como transportar dados entre sistemas sem intervenção humana também significam menos trabalho para a equipe e consequentemente mais tempo livre.
Para isso, algumas ferramentas como o Zapier ou Microsoft Flow podem ajudar nisso.
9. Monitoramento
O monitoramento da estrutura e de sistemas permite ter certeza que tudo está funcionando conforme esperado, e que alarmes estão definidos para quando alguma situação sair da operação normal.
Em operações pode significar monitorar o consumo de CPU e espaço em disco, e configurar alertas para, por exemplo, quando o disco estiver com 90% de uso, isso garante que será tomada uma ação antes que o mesmo chegue a 100% de ocupação e pare algum sistema, isso também significa parar de “apagar incêndio” e trabalhar na prevenção dos mesmos.
Em sistemas pode-se monitorar a quantidade de transações executadas, ou quantidade de erros dos usuários por exemplo, ou ainda o tempo gasto pelos usuários em cada parte do sistema.
Se soubermos onde os usuários gastam mais tempo, podemos pensar em formas de otimizar esse processo e com isso trazer benefícios para todo o negócio.
10. Gestão a Vista
Com todos os dados coletados, a melhor forma de deixar transparente as evoluções é fazendo gestão a vista.
Exibir a quantidade de chamados abertos em um painel, mostrar a evolução dos chamados mês a mês, ou ainda os indicadores de tempo utilizado por serviço, tudo fica mais fácil de visualizar com gráficos e linhas de tendências.
Sistemas de Business Activity Monitoring podem ajudar nisso, com painéis atualizados em tempo real e alertas para quando algum indicador atingir um determinado nível, podem complementar sistemas já existentes oferecendo uma camada fácil de visualização.
Nesse outro artigo dou algumas ideias de Indicadores para a área de TI.
11. Terceirização
Com sistemas e infraestrutura cada vez mais complexos, a terceirização é uma opção real para diminuição de custos.
Não a terceirização total, não expulsar o departamento de TI para fora, mas sim a terceirização de especialidades que não agregam para o negócio.
Por exemplo, com sistemas cada vez mais complexos, muitas empresas utilizam tecnologias de ponta das mais diversas, como Storages, Virtualização, Firewalls, Switches gerenciados, Windows, Linux, diversas bases de dados, ferramentas de backup, replicação, etc.
Um único profissional não é capaz de ser especialista em todas as plataformas e a contratação de um profissional para uma tarefa que não ocupa seu tempo integral é um desperdício de recursos.
Nesse ponto existe a oportunidade de terceirização desses serviços especializados, confiando a uma empresa ou profissional externo as atividades avançadas como atualização de firmware, pentest, gerenciamento de redes, storages e ambientes virtuais.
Uma empresa de Serviços Gerenciados em TI ou Serviços Gerenciados em Segurança tem a chance de ter profissionais capacitados nos principais fornecedores, estar sempre atualizada, conhecer as melhores práticas e enxergar riscos nos ambientes dos clientes, por já terem passado por tudo isso em diversos clientes.
12. Pessoas
Enfim, o elo mais importante da cadeia, as pessoas. Automatizar os sistemas ao máximo possível, diminuir o tempo gasto apagando incêndio, trazer maior produtividade para colaboradores, novos recursos para sistemas, novos serviços para os clientes finais, só é possível alcançar com pessoas capacitadas e motivadas.
A redução de determinados serviços não significa que o profissional perderá a importância e será demitido, pelo contrário, na maioria das empresas existe serviço suficiente para o dobro da equipe de TI, então o tempo extra “sobrando” será direcionado para novas atividades.
Se a equipe de TI puder se livrar das atividades repetitivas (por exemplo, formatar máquinas), prevenir os problemas do dia a dia (por exemplo, atualizar o Windows para evitar vírus), e investir o tempo em atividades do negócio (por exemplo, automatizando mais os sistemas), será percebida como um centro de inovação e não apenas como um centro de custo.
Conclusão
Os principais pontos para a TI fazer mais com menos é:
- Diminuir os desperdícios
- Automatizar as tarefas que não agregam valor para o profissional
- Focar em atividades que sejam importantes para o negócio
Tudo isso garante melhor qualidade de vida para o profissional de TI, aumento da competitividade do negócio e a valorização da TI frente ao mesmo.