Arquivos de Categoria: Arquiteto

As distorções no papel de arquiteto de software

como-identificar-um-profissional-de-talento_Quando entrevisto candidatos à vagas de arquiteto de software, faço perguntas como: “Você acha que um arquiteto deveria programar?” Usualmente recebo uma destas duas respostas:

  • “Não, busco uma posição na qual eu não precise mais programar.”
  • “Eu adoraria continuar programando pelo menos um pouco mas, provavelmente, não terei tempo.”
  • “Já faz um tempo.”

Estas respostas são preocupantes. Desde quando evoluir profissionalmente em uma função da área técnica significa separar definições tecnológicas das atividades de desenvolvimento? Como alguém espera conseguir acompanhar o vasto cenário de opções em termos de tecnologia e compreender seu papel dentro das organizações, sem estar constantemente em contato com o time responsável pelo desenvolvimento destas tecnologias? Ou, ainda melhor, desenvolvendo ativamente as mesmas?

Veja o artigo completo no site infoq = http://www.infoq.com/br/articles/architects-should-code-bryson?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global

Para os interessados no assunto, veja a nossa grade de treinamentos para novos aspirantes em arquitetos de software: https://fernandofranzini.wordpress.com/2015/01/12/treinamentos-arquitetura-de-software-2015/

“Dessarte, não pode haver judeu nem grego; nem escravo nem liberto; nem homem nem mulher; porque todos vós sois um em Cristo Jesus.” Gálatas 3:28

Operações com Retry em Java

retryNa engenharia de software ágil que eu prático, existe uma regra simples que me salva de muitas dores de cabeça: “O menos é mais!”Isso quer dizer que como regra, eu sempre tento ao máximo fazer ou criar uma solução mais simples possível. Nesse contexto, algumas soluções Java precisam de operações de “retry” automáticos. Antes de você concluir que precisa de um servidor de mensageria com persistência de fila, considerar outras opções mais simples é de grande valor e pode te surpreender. Segue algumas estratégias de retry simples com Java:

“Respondeu-lhes Jesus: A obra de Deus é esta: que creiais naquele que por ele foi enviado.” João 6:29

Você precisa de ajuda na OCMJEA? Conte comigo…

040748ajudaFaz algum tempo que eu tenho me disponibilizado para ajudar muitos companheiros de profissão a passar na prova OCMJEA. Pessoal me manda email, whatsapp e etc. Ando até corrigindo e revisando essays. Eu me coloco a disposição de qualquer um para a ajudar a ser aprovado, desde que você faça os seguintes passos:

  1. Abre uma thread de discussão na forum GUJ de certificações Java – http://www.guj.com.br/forums/show/11.java
  2. Envie no meu email o link da discussão para que eu possa entrar da thread – fernandofranzini[arroba]gmail.com .

A partir dai, podemos passar o tempo que precisar discutindo tópicos e situações dessa prova. “Tamo Junto aeee…”

“Mas, acima de tudo, revesti-vos da caridade, que é o vínculo da perfeição.” Colossenses 3:14

Salvo mais uma vez pelo Spring Framework

images

Uma das empresas que trabalho vendeu uma de nossas soluções para vários clientes externos e assim tivemos que rodar a mesma solução em banco de dados diferentes. O arquivo XML de configuração da arquitetura do Spring, as injeções de IoC e a cobertura de TDD estavam totalmente arramados com a base original e as implementações das contratos (DbC) de nossas implementações de serviços.

Como resolver agora para clientes diferentes?

No Spring já estava resolvido!!!. Criamos arquivos .properties e externalizamos as configurações, IoC e informações de cada empresa. Simplesmente 0% de DRY!!!! O que seria de mim sem o Spring? Nem sei te responder….

Segue alguns exemplos do que foi feito:

“Porém o Senhor disse a Samuel:  o Senhor não vê como vê o homem. O homem vê o exterior, porém o Senhor, o coração.” 1 Samuel 16:7

Pooling Bean com Spring

brown-beansNestes dias comecei um novo projeto que faz integração com um solução antiga de terceiro usando Socket puro, através de um protocolo proprietário. Sendo um recurso de alto custo e demorado, eu não poderia cair no smell de abrir conexão socket por requisição. Como sempre meu camisa 10 me salvou! O Spring framework tem um serviço de Pooling no qual você pode habilitar um pool de qualquer bean e consumir pela demanda da sua solução:

<bean id=”targetBean” class=”my.compagny.TargetBean” scope=”prototype”/>

<bean id=”poolTargetBean” class=”org.springframework.aop.target.CommonsPoolTargetSource”>
  <property name=”targetBeanName” value=”targetBean” />
  <property name=”maxSize” value=”10″/>
  <property name=”maxIdle” value=”10″ />
  <property name=”minIdle” value=”5″ />
</bean>

Para todos os detalhes veja a documentação oficial e um artigo de complemento:

“Amo o SENHOR, porque ele ouve a minha voz e as minhas súplicas. Porque inclinou para mim os seus ouvidos, invocá-lo-ei enquanto eu viver.” Salmos 116:1-2

Livro OCM Java EE 6 Enterprise Architect

51JxwsBwdtL._SX342_Hoje eu terminei a leitura do livro OCM Java EE 6 Enterprise Architect. Leitura obrigatória para os aspirantes a arquitetos Java e principalmente os já certificados em versões anteriores da OCM. Muitas novidades, patterns novos, security patterns, mobile, REST e recursos novos da JEE 6+. Boa leitura a todos!

 

“Contudo, o SENHOR, durante o dia, me concede a sua misericórdia, e à noite comigo está o seu cântico, uma oração ao Deus da minha vida.” Salmos 42:8

Se divertindo com testes de carga e stress com JMeter

É exatamente nesse momento que você começa a perceber se aquilo que arquiteturou realmente funciona…..

ThreadsThreads3

Threads2

tomcat

 

Apache JMeter – http://jmeter.apache.org/

“Enganoso é o coração, mais do que todas as coisas, e desesperadamente corrupto; quem o conhecerá? Eu, o SENHOR, esquadrinho o coração, eu provo os pensamentos; e isto para dar a cada um segundo o seu proceder, segundo o fruto das suas ações.” Jeremias 17:9-10

Pattern Store Procedure Facade

home_theater_facade

Continuando o assunto das regras de negócio dentro do banco de dados, hoje eu gostaria de apresentar uma estrutura arquitetural que se tornou um design pattern muito utilizado dentro das equipes que eu trabalho, no qual eu nomeei de “Store Procedure Facade”. Segue a mesma aplicação do conhecido Pattern Facade. Segue a explicação do que é contexto e um exemplo prático:

Contexto

Dado uma solução, que em uma única requisição HTTP necessita acessar o banco de dados remoto N vezes para pegar informações de tabelas diferentes na maioria das vezes não relacionadas ou até mesmo relacionadas.

Problema

Dada uma situação de três acessos na requisição, 500 usuários simultâneos fazendo essa operação resultara em 1.500 round trips ao banco de dados, necessitando assim de aumento expressivo da configuração do DataSource, aumento no gasto de memória no parse do framework ORM e a redução exponencial do tempo de resposta da requisição.

Solução

Criar uma store procedure utilizada como se fosse uma Facade para encapsular, agrupar e retornar os N acessos de forma com que com um único round trip ao banco seja possível retornar todas as informações necessárias.

Exemplo

Segue um exemplo em SQL Server 2008:

CREATE PROCEDURE procecure_facade_x
AS
SELECT * INTO #parametro1 FROM tabelaX1
SELECT * INTO #parametro2 FROM tabelaX2
SELECT * INTO #parametro3 FROM tabelaX3
SELECT * FROM #parametro1, #parametro2, #parametro3
GO

Veja que é criada uma Store “Procedure Facade” que faz acesso em três tabelas diferentes, armazenando cada resultado em tabelas temporárias e depois agrupando e retornando como se fosse a uma mesma consulta.

Resultado

Resolvendo o contexto do problema citado, 500 usuários simultâneos executando essa operação configurado nesse pattern resultara em apenas 500 round trips no banco de dados, um por cada requisição, reduzindo expressivamente a configuração do DataSource, reduzindo os gasto de memória com parse do framework ORM e a aumento expressivo do tempo de resposta da requisição.

Porque o Filho do Homem veio buscar e salvar o perdido.” Lucas 19:10

Arquiteto Java Spring Framework

logo-spring-103x60Mesmo depois dos avançados das ultimas especificação do JEE , vemos que ela ainda esta muito longe de se igualar as opções oferecidas pela plataforma Spring. Vale a pena lembrar que da mesma forma que as especificações vão melhorando ao longo do tempo, o Spring também vai evoluindo em uma velocidade muito mais rápida e ampla, uma vez que não depende de nenhum tipo de votação comunitária.

Eu mesmo ao longo dos meus 15 anos de experiência, sempre tive a cautela de preferir produtos JCP ao invés de proprietários, visando o grande ideal da portabilidade e a independência de vendor, mas na prática percebo que ao longo do tempo tenho adotado os produtos Spring mais e mais. Motivo? O mesmo pelo qual o Spring foi criado: ser uma opção muito mais rápida, barata e leve de um lightweight container que ofereça serviços plugáveis de infraestrutura para soluções corporativas com a mesma qualidade.

Hoje a minha dica é sobre os principais livros de Spring atualizados para os interessados em se aprofundar nessa poderosa plataforma:

51nY36Dqo5L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_

Spring in Action  é o livro mais básico que te ensina os pilares do uso de serviços no Spring. Nele você também aprendera os serviços e recursos mais básicos que ele proporciona.

415x7PWAe5L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_

Just Spring Integration  é o livro que estende o spring oferecendo os serviços de infraestrutura voltados para integração de soluções definidos pelo catalogo de patterns de integração conhecidos pelo EAI.

51RXnaly93L

Spring Data é o livro que estende o spring oferecendo os serviços de infraestrutura voltados para persistência de dados relacionados com banco de dados relacionais e NoSQL.

Existem outros livros mais específicos de outros serviços que você também pode estar estudando como, por exemplo, Spring Bath in Action e Pro Spring Security

Uma vez que você domine todos estes serviços, você praticamente se tornara um “Arquiteto Java Spring”, dominando contextos de soluções mais modernos da atualidade e apto para projetar soluções corporativas de pequeno, médio e grande porte.

“Filhinhos meus, estas coisas vos escrevo para que não pequeis. Se, todavia, alguém pecar, temos Advogado junto ao Pai, Jesus Cristo, o Justo;” 1 João 2:1

Como me tornar um arquiteto de software?

images

Estes dias atras me perguntaram quais seriam as informações mais básicas para se tornar um arquiteto de software. Segue ai a resposta:

Modelo C4

Para o plano arquitetural conhecido como “blueprint” de um projeto se faz necessário projetar a solução em diagramas. Esqueça UML! Eu uso modelo chamado de “C4”. Aprenda nesse livro: https://leanpub.com/software-architecture-for-developers .

Projeto e Design DDD

Para o design de camadas e projeto oop se faz necessário uma abordagem 100% OO. Eu uso uma técnica chamada a de “Domain Driven Design”. Aprenda nesse livro: http://www.altabooks.com.br/domain-drive-design-atacando-as-complexidades-no-coracao-do-software.html .

Desenvolvimento TDD

Para o desenvolvimento se faz necessário usar uma abordagem de construção de software. Eu uso uma técnica chamada de “Test Driven Design”. Aprenda nesse livro: http://www.casadocodigo.com.br/products/livro-tdd .

Design Emergente

Para criação e evolução da estrutura do produto em desenvolvimento, se faz necessário o uso de alguma abordagem. Eu uso uma chama de”Design Emergent”. Aprenda  nesse livro: http://www.amazon.com/Emergent-Design-Evolutionary-Professional-Development-ebook/dp/B0016CCC7K .

Agora é com você! Bons estudos a todos…

“Ora, nós conhecemos aquele que disse: A mim pertence a vingança; eu retribuirei. E outra vez: O Senhor julgará o seu povo. Horrível coisa é cair nas mãos do Deus vivo.” Hebreus 10:30-31

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 574 outros seguidores