Arquitetura de Soluções : alguns temas “quentes”
Olá pessoal, tudo certo?
Esses últimos dias foram especiais, devido uma série de discussões sobre arquitetura com algumas empresas, além de toda a preparação para o TechEd Brasil. Espero encontrá-los durante o evento para trocar algumas idéias sobre o futuro e o presente em TI.
Para o post de hoje, gostaria de rever alguns dos principais assuntos que tenho observado no mercado nesse primeiro semestre de 2009. Veja se são cenários que você também tem visto em sua empresa:
1. Construção de frameworks corporativos: com certeza, um dos TOP5 de todos os tempos. Tudo começa com a necessidade de padronização e maior produtividade pelas equipes de desenvolvimento. Muitas vezes, partimos de blocos de aplicação já existentes, na busca por uma solução inicial que ajude entre 60-80% o trabalho de construção de aplicações. Existem vários desafios envolvidos na construção de frameworks e já falamos de muitos por aqui. Ainda assim, diversas empresas continuam a busca pelo framework perfeito, através de tentativas e erros, de tempos em tempos implementando um middleware de componentes e acessórios úteis para o desenvolvedor.
2. Definição de uma arquitetura de serviços SOA/SOI: logo após a discussão sobre frameworks, outro TOP5 é a visão sobre SOA/SOI. Como revisar nossa arquitetura de TI na direção do reuso, da padronização de conectividade entre sistemas e no uso de mensagens através de interfaces de serviços? Tenho acompanhado diversas empresas aproveitando o momento para uma revisão de sua própria arquitetura de TI, seus métodos de desenvolvimento, processos internos e plano de capacitação de suas equipes. Algumas dessas empresas cometeram erros ao longo do tempo, na medida da escolha de sistemas para projetos pilotos de SOA. Problemas relacionados com latência, granularidade de serviços, composição exagerada, reuso fraco, preparação de uma infra-estrutura para hosting de serviços, etc. são os mais comuns. Como digo sempre: uma arquitetura orientada a serviços envolve diversas questões que cruzam as fronteiras técnicas, envolvendo também os motivadores de negócio. Identificar corretamente um cenário de LITTLE SOA e de BIG SOA também é crítico.
3. Definição do ambiente para hospedagem de serviços: dentro do tema SOA/SOI, um assunto recorrente é sobre a hospedagem e a governança de serviços em produção. Nossos serviços implementados em WCF/WF podem ser hospedados em diversos tipos de Hosts como: Windows Service, IIS6 (Windows Server 2003), IIS7 (Windows Server 2008) IIS7/WAS (Windows Server 2008) e futuramente “Dublin" (Windows Server 2008 R2). Cada hosting oferece suporte diferenciado a protocolos de transporte, assim como funcionalidades para a administração, operação e monitoração dos serviços hospedados. Uma comparação que sempre aparece é com o ambiente COM+ do WinDNA (Windows Server 2000 e superior). Naquele cenário, o Component Services oferecia uma série de recursos para administração de pacotes COM+, como a exportação de proxies, importação de pacotes, monitoração de chamadas, etc. Esse mesmo tipo de administração facilitada tem sido evoluída ao longo do tempo na plataforma Windows, oferecendo recursos para o tratamento de serviços e processos numa arquitetura SOA/SOI. Nessa evolução, o “Dublin” oferece um novo patamar para uma administração SOA/SOI sobre a plataforma Windows.
4. Adoção de uma barramento de serviços: nesse primeiro semestre foi quase obrigatório falar de barramento de serviços quando o assunto era SOA/SOI. Muitas vezes, a questão sobre ESB aparecia de forma equivocada, sem o contexto de uma arquitetura organizada para o consumo e a publicação de serviços e processos. No começo, várias empresas foram vítimas de uma carga excessiva de marketing sobre SOA, sem antes identificar sua própria realidade. Atualmente, tenho visto um pouco mais de maturidade nas questões sobre barramentos, devido principalmente o número de artigos e discussões sobre o tema. Olhando a plataforma Microsoft, vale citar que temos um pacote chamado Microsoft BizTalk ESB Toolkit 2.0, que extende as funcionalidades do BizTalk Server, criando um ambiente para barramento de serviços corporativos. Ainda, o próprio BizTalk sozinho é um motor de EAI – Enterprise Application Integration, que muitas vezes é confundido com o cenário de ESB – Enterprise Service Bus. Qual é sua real necessidade? EAI ou ESB ou Middleware de alta performance?
5. Evolução de uma arquitetura WinDNA para uma arquitetura n-Tier e orientada a serviços: essa questão quase dispensa comentários! Ou na verdade exige vários!! :) Muitos componentes de negócio COM+ ainda estão por ai, no dia-a-dia de muitos arquitetos e equipes de desenvolvimento. Implementados em VB6 ou .NET e hospedados nos pacotes COM+ Applications de muitos servidores, o universo WinDNA ainda é realidade em alguns sistemas híbridos do mercado, que misturam parte em COM+/Enteprise Service e parte em ASP.NET/Web Services. Outros ambientes envolvem ainda ASP.NET, COM+ e WCF Services, o que faz com que as empresas questionem como migrar para uma arquitetura SOA. A questão básica em todos os casos é uma só: atualização tecnológica. De fato, é inviável a evolução de todos os sistemas presentes numa TI WinDNA em curto espaço de tempo, por questões de custo, treinamento, atualização do sistema e impacto para o usuário final. Porém, manter esse tipo de tecnologia envolve riscos sérios para o negócio, devido sua natureza acoplada (DCOM), resistência a conectividade (portas de Firewall), modelo de desenvolvimento, velocidade de adição de novas funcionalidades, manutenção, modelo de deployment (DLL Hell), entre outros problemas. Em algum momento, sua empresa deverá classificar os sistemas mais críticos em COM+ e enfretar de vez o desafio de evoluir para uma arquitetura desacoplada e orientada a mensagens. A estratégia de evolução será um belo exercício de convivência e adoção de novas tecnologias.
6. Impacto do desenvolvimento para a computação na nuvem: no mercado, a bola da vez é “cloud computing”. Não é para menos, já que acabamos de sair de um período de crise financeira mundial (note o otimismo!:). Em tempos de crise, redução de custo é quase uma obrigação, assim como o investimento em operação e novas tecnologias, para o ganho de diferencial competitivo. A computação na nuvem tem o apelo das duas frentes: por um lado, oferece o modelo elástico de provisionamento, associado ao micro-pagamento, onde o cliente paga pelo uso, por uma infra-estrutura remota e com grande escalabilidade; por outro lado, o modelo baseado em Web e serviços oferece uma abordagem mais limpa e desacoplada para os sistemas da empresa, criando oportunidades de novos produtos e negócios. Em breve teremos o Windows Azure comercialmente disponível, sendo mais uma alternativa para o mundo do “cloud computing”. Enquanto aguardamos, o assunto continuará como TOP5 nas discussões com arquitetos, com certeza.
7. Combinação de bancos de dados locais (on-premise) com bancos de dados na nuvem (com o SQL Azure): em meio a discussão sobre computação na nuvem e economia com infra-estrutura, um cenário de impacto é a combinação de bancos on-premise e off-premise. Existem diversos cenários aderentes ao modelo, como hub de dados, aplicações colaborativas via web, sistemas LOB SAAS, entre outros. Essa combinação fará mais sentido agora, com a chegada do SQL Azure suportando o modelo relacional de banco de dados. Por exemplo, será possível operar o banco SQL Azure Database (SAD) através do SQL Management Studio, assim como administramos o SQL Server local de nossa empresa. A mesma transparência será obtida em nossas aplicações, ora persistindo dados localmente, ora dados na nuvem. Qual será a combinação perfeita? Quais cenários serão os mais aplicados? O exercício deve ocorrer em cada indústria, de acordo com a realidade de cada empresa. Mas creio que bons artigos chegarão com recomendações para nos guiar. Vamos aguardar!!! Um ponto importante, entretanto, será aproveitar os recursos disponíveis na infra-estrutura da nuvem: nada de ficar trafegando dados da nuvem para o cliente e operar os dados localmente!!! Evite latências de rede e abuse do Code Near sempre que puder!!!
8. Autenticação baseada em declarações e provedores de identidades: outro assunto importante é segurança, especialmente autenticação e autorização. Um tópico que tem sido muito falado é sobre o modelo CBA – Claim-based Authentication. Sistemas baseados em tokens de segurança para o processo de autorização e consumo de funcionalidades, assim como o uso do SAML 2.0, têm circulado as rodas de arquitetos de infra-estrutura e IT Pros mais antenados. O assunto não é novo, mas tem tido um maior destaque ultimamente. Vale ficar de olho no projeto codenome “Geneva” da Microsoft, hoje com o nome oficial “Active Directory Federation Services”.
9. Produtividade e qualidade de software com Enterprise Library 4.1: não foram poucas as empresas que me perguntaram sobre blocos de aplicação e Enterprise Library. Com o lançamento do Hands On Lab da versão 4.1, muitos desenvolvedores e arquitetos ficaram entusiasmados com o uso da EntLib, o que me deixou muito feliz. Sou um defensor de seu uso, assim como de seu estudo. Creio que no caminho para um framework e mesmo um ambiente de desenvolvimento mais robusto, conhecer os templates e exemplos da EntLib é um passo importante.
10. Impacto do Windows 7 no cliente e Windows Server 2008 R2 no servidor: aqui temos um tópico mais recente, que tem aparecido a partir dos comentários do mercado sobre recursos desses dois sistemas operacionais. O Windows Server 2008 R2 oferece uma infra-estrutura mais robusta para os novos cenários de serviços e ambiente corporativo que temos visto hoje em dia. Ao mesmo tempo, a combinação de recursos do Windows 7 que aproveitam a conectividade com o Windows Server 2008 R2, assim como a nova interface e recursos para o usuário final criam uma solução única, que deve favorecer as novas aplicações Software+Services, isto é, que consumem serviços locais e remotos de forma transparente para o usuário e com administração facilitada para o IT Pro. Sem dúvida, vale a discussão pelos cenários possíveis com esses sistemas.
11. Implantação de serviços com WCF e workflows com WF: Ainda dentro dos TOP10, melhores práticas para a construção de serviços em WCF e workflows em WF é outro tema importante. Costumo falar que as mesmas preocupações que você tem em qualquer sistemas mais crítico devem estar presentes na construção de seus serviços em WCF. Por isso, você vai precisar pensar sim em autenticação, autorização, segurança, caching, transação, validação, tratamento de exceções, hosting, balanceamento de carga, versionamento, logging, monitoração, recuperação, concorrência, planejamento de capacidades, etc. O mesmo vale para o hosting de processos em WF, envolvendo ainda persistência, hidratação/desidratação de processos, coordenação de chamadas para serviços WCF, etc. Tenho visto muito material publicado no MSDN sobre WCF e WF, assim como ótimos documentos disponíveis pelo “patterns & practices”. Ainda, autores como David Chappell, Michele Bustamante, Juval Lowy, Aaron Skonnard, entre outros, são fontes que recomendo. Como sempre digo, são todos leituras obrigatórias!!!
12. O nascimento da plataforma de modelagem Oslo: por último, mas não menos importante, encontramos a visão de Oslo. A Microsoft trabalha hoje em dia nessa visão MDD – Model Driven Design, que oferece uma nova plataforma orientada a modelos para a construção de aplicações. Com o CTP de Maio último, a iniciativa Oslo revelou o repositório em SQL, o explorador de objetos do repositório chamado “Quadrant”, o editor de linguagens e gramáticas chamado “Intellipad” e a própria especificação da linguagem “M”. Diversos exemplos também já estão disponíveis na web, como objetos prontos para o repositório (.mx) e gramáticas para nossos testes (.m e .mg). Esse assunto deve ganhar mais importância nos próxímos meses, com a chegada de novos CTP’s.
Creio que esses foram os principais temas desse começo de ano. Em resumo, diversas empresas estão revisando sua TI em busca de uma melhor combinação entre custos de operação e agilidade para o negócio. As tecnologias acima oferecem impacto direta nessa equação.
E em sua empresa? Quais temas estão em alta? O que mais ocupa o seu dia-a-dia? A palavra é de vocês…
Por enquanto é só! Até o próximo post :)
Waldemir.