Notícias
Agilizando o desenvolvimento com Spring Framework
Artigo
Em grandes corporações, o processo para colocar sistemas em produção pode ser burocrático e consequentemente moroso. O imediatismo e a alta concorrência entram em conflito com procedimentos e processos elaborados visando maior segurança e qualidade.
Obviamente, a inexistência de processos ocasionaria problemas muito maiores do que a demora em se publicar, atualizar ou corrigir uma aplicação em produção. Contudo, é possível mitigar essa demora com a escolha de ferramentas e soluções que gerem menos dependências entre as diferentes áreas que envolvam o desenvolvimento de software.
É comum, em empresas de grande porte, equipes e áreas distintas cuidando de Rede, Servidor de Aplicação, Banco de Dados, e Segurança, por exemplo. Mesmo que a corporação possua um processo bem definido de integração contínua (o que é raro), em inúmeros momentos é possível identificar gargalos causados pela forte dependência entre áreas e pela enorme demanda originada por uma quantidade crescente de sistemas.
O Spring é um framework open source que visa atender essas demandas de forma rápida dentro da própria aplicação, não havendo necessidade, na grande maioria dos casos, de intervenções externas ao desenvolvimento. É largamente utilizado em aplicações Java por ter uma arquitetura simplificada baseada em interfaces e POJOS (Plain Old Java Objects), pelo seu reconhecido bom desempenho e mecanismo de injeção de dependência, bem como uma lista de módulos quase interminável.
O Spring é um framework open source que visa atender essas demandas de forma rápida dentro da própria aplicação, não havendo necessidade, na grande maioria dos casos, de intervenções externas ao desenvolvimento.
Entre módulos, se destacam:
- spring-batch: processamento em lote;
- spring-jdbc: comunicação com banco de dados;
- spring-security: autorização e autenticação de usuários;
- spring-ldap: autenticação com LDAP;
- spring-data: facilita a comunicação com diferentes bancos de dados não relacionais;
- spring-social: integração com as principais redes sociais.
Caso que exemplifica o dia a dia
“O cliente solicitou mudanças de negócio e horário em um processo agendado”.
- Agendamentos controlados pelo Sistema Operacional ou Aplicação Desktop:
- Caso o desenvolvedor não tenha acesso para realizar a mudança, será necessário solicitar alteração à equipe responsável pelo ambiente de produção.
- Geralmente, agendamentos são controlados por aplicações simples que se comunicam através de SQL Nativo, uma perda considerável caso seu sistema já utilize um framework ORM, como o Hibernate. A query da funcionalidade teria que ser refeita, na situação de alguma mudança ser solicitada, consumindo tempo e esforço desnecessário.
- Agendamentos controlados pelo Spring:
- Em um objeto reconhecido pelo Spring (um Service por exemplo), basta colocar acima do método que fará a ação agendada a annotation @Scheduled. Esta annotation recebe como parâmetro a configuração dos horários possíveis do agendamento, conforme exemplos abaixo:
@Scheduled(cron = "0 14 6 5,7,9,13 * ?")
O método rodará todo dia 5,7,9,13 todos os meses às 6h14.
@Scheduled(cron = "0 25 16 * * MON-FRI")
O método rodará de segunda a sexta-feira todos os meses às 16h25.
@Scheduled(fixedDelay = 5000)
O método rodará a cada cinco segundos. Só rodará novamente caso a execução anterior tenha sido concluída.
@Scheduled(fixedRate = 5000)
O método rodará a cada cinco segundos. Rodará independentemente da execução anterior (tenha cuidado!).
Outra vantagem, além da facilidade, é poder utilizar toda a estrutura já criada para a aplicação. Outros serviços e repositórios (Classes DAO) podem ser injetados e utilizados pelo método de agendamento. Ou seja, suas consultas utilizando JPA poderão ser reaproveitadas.
Toda vez que um método de agendamento roda, o Spring se encarrega de criar uma Thread (processamento paralelo) para executá-la, não afetando a utilização do sistema. Nenhuma ação fica aguardando métodos de agendamentos serem finalizados.
Para que qualquer alteração no parâmetro que define o horário de execução do método agendado surta efeito, basta subir a aplicação novamente. Atividade esta realizada pelos próprios desenvolvedores.
Caso de sucesso
O Agenda Certificados é um sistema que já controlou a emissão, reemissão e renovação de mais de 11 mil certificados em menos de um ano para servidores federais que utilizam sistemas do Ministério do Planejamento e Presidência da República.
Foi concebido utilizando metodologia ágil (Scrum), tendo como principal aliado o Spring utilizado para aumento de produtividade de desenvolvimento e para garantir menor dependência entre as diversas áreas presentes na empresa. Um exemplo é a manutenção em métodos de processos agendados que são prontamente atendidos pelos desenvolvedores, não sendo necessário abrir acionamentos para as áreas de produção que são atendidas dependendo da concorrência de prioridade de sistemas mais críticos.
Bruno Moreira Rocha
Bacharel em Ciências da Computação pelo UniCEUB/DF e especialista em SOA pela UniEURO/DF. Trabalhou nas empresas Politec, Cabal, Cast Informática e Indra, sempre com a tecnologia Java. É Certified Scrum Master pela Scrum Alliance, SCJP pela Sun, OCPWCD e OCEWSD pela Oracle. Possui experiência com aplicações móveis, com um total de mais de 100 mil downloads de aplicativos nas plataformas Android, Windows 8, Firefox OS e Blackberry 10. Atualmente, é analista de negócios do Serpro auxiliando na parte arquitetural, segurança e de incidentes para sistemas do Ministério do Planejamento e Presidência da República.