O futuro do arquiteto e das arquiteturas Java Enterprise
-
Upload
globalcode -
Category
Education
-
view
7.010 -
download
1
description
Transcript of O futuro do arquiteto e das arquiteturas Java Enterprise
Globalcode – Open4education
Passado, presente e futuro das arquiteturas (e do arquiteto) Java
Globalcode – Open4education
Agenda
A escada rolante
Java & negócios
Arquitetura com Java
Dimensões de um arquiteto
ALM
Demonstrações técnicas
Globalcode – Open4education
• desenvolvedor desde moleque;
• várias linguagens de programação;
• fundador da Globalcode e Elétron Livre;
•mais de 15 cursos publicados na rede Globalcode;
•mais de 10 anos com Java;
• vários projetos Java executados;
• fabricando modelos exclusivos de Arduino e robôs;
• sócio e casado com @yarasenger
• pai de dois lindo filhos sou apaixonado por beatles, boa comida, vinho, violão, violino, surf, pizzas, barco.
Vinicius Senger
Globalcode – Open4education
T.I. é uma escada rolante...
Globalcode – Open4education
• texto -> gráfico -> desktop -> web 1.0 – web 2.0 -> RIA -> Computação Física
• Video-texto -> BBS -> E-mail -> ... -> Twitter -> Google+
• TXT -> XML -> WSDL -> WebService -> REST / JSON
• TCP/IP -> CORBA -> EJB 1 -> EJB 2 / Spring -> EJB3
• Na mão -> Ant -> Maven / Gradle-> Hudson
• Application Server: caro e pesado -> leve e open-source
• Hard deploy -> Hot deploy -> Continuous Deploy
• CGI -> Servlet -> JSP -> JSF -> Inúmeras opções
• TXT -> Hierárquico – Relacional – OO -> noSQL
T.I. é uma escada rolante...
Globalcode – Open4education
Negócios também!!!
Globalcode – Open4education
•moeda -> dinheiro -> cheque -> cartão -> pagseguro
• boca-a-boca -> jornal -> radio -> tv -> internet
• telefone -> fax -> e-mail -> B2B
• conexão local -> extranet -> internet -> internet rápida
•mercado local -> regional -> nacional -> internacional
• centralizado -> poucos fornecedores -> distribuído -> muitos fornecedores
•Go horse - Business Plan - Cascata – UP – XP – Agile – SCRUM – Lean / Startup
Os negócio também!
Globalcode – Open4education
• Ambas estão evoluindo em um ritmo alucinante!
• A mesma trilogia para T.I. e negócios:
• Definir, implementar e gerir
• Vários negócios novos sendo alavancados!
• TODOS precisam de um software!
•Mas, sabemos usar tais escadas rolantes???
• T.I. como escada para negócio?
• Negócio como escada para T.I.?
Em sinergia?
Globalcode – Open4education
?
Globalcode – Open4education
?
Globalcode – Open4education
?
Globalcode – Open4education
Arquiteto e o Negócio
•Os papéis técnicos e de negócio estão sendo refatorados:
• Técnicos cada vez mais comprometidos com negócio
• Pessoas de negócio cada vez mais comprometidas com a técnica
• Exemplos:
• DSL’s: meio de criar linguagens para pessoas de negócio
• Lean Startup: uma forma de tornar o técnico empreendedor
• ALM: técnica + negócio
Globalcode – Open4education
Java no mundo dos negócios
• Excelente histórico em grandes empresas e startups
• Escolha segura para investidores
• Proteção de investimento
•Opções de tecnologias para diferentes cenários
•Muitas empresas envolvidas
• Esta ficando cada vez mais simples
• Alto índice da adoção no governo
• Sim! Seu processo de evolução é mais lento
(ainda bem!)
Globalcode – Open4education
Bulling Java
• Diariamente declaram a morte do Java, mas:
•MULTI-PLATAFORMA
•Mobile, embedded, server-side, RIA, Web, índices de transações nível e-bay, projetos na NASA
•Oracle, Google, IBM, SAP, Nokia, Motorola, Mais de 100 linguagens rodam na JVM
• cases, Cases, CASES. de todos os tamanhos
• Eu mudo, você muda, nós mudamos
• Arquiteturas clássicas até “piercing software”
•Gaste tempo fazendo sua tecnologia crescer e não a dos outros morrer!
Globalcode – Open4education
Escolher linguagens
Java
.NET
PHP
Ruby on Rails
Grails
NodeJS – V8
...
ps. uma nova linguagem não substitui um psicólogo.
quase todas podem atender a quase todos os tipos de
negócio, principalmente Web! #fato
quase todas podem atender a quase todos os tipos de
negócio, principalmente Web! #fato
Globalcode – Open4education
Consumidor / Produtor
• Podemos abstrair o mercado de desenvolvimento em:
1. Produtor que não vai consumir: cria API’s, IDE’s, frameworks, linguagens / DSL, idéias, ferramentas etc.
2. Consumidor que vai produzir: utiliza um conjunto de API’s, IDE’s, frameworks etc. para produzir uma solução de negócio
• Qual o perfil do seu projeto / empresa / produto?
Globalcode – Open4education
Histórico Java EE
• J2EE: abriu um excelente antecedente e fomentou padrão, competição, guerra e inovação;
• Java EE 5: ampla adoção atualmente. Uso comum de JPA com Hibernate, Faces, Wicket, GWT, Spring, EJB, JMS, Quartz, ...;
• Java EE 6:
• CDI
• Lightweight container
• JSF 2 e Facelets para aplicativos “desktop web”
•OSGi
• Suporte robusto para outras linguagens
ALM e CLOUD!
Globalcode – Open4education
Por perfil de negócio
• Java EE seguro e conservador:
• JPA / Hibernate / ehCache
• EJB / Spring / Weld
• JSF, Wicket, GWT
• jQuery com REST para páginas read-only
• JMS, WS e REST
• Projetos de Inovação:
• Java EE com OSGi, Scala, MongoDB, Play, Grails
• Nichos :
• Puredata, Processing, JavaME, RTOS
Globalcode – Open4education
Java: escolhas seguras
EJB (session e MDB) Spring CDI
JSF Wicket GWT
extjs jQuery Richfaces
Swing JavaMail JMS
JPA / Hibernate MongoDB ehCache
Java EE 6 puro Seam Grails
REST WebServices Mule
Maven Hudson Nexus
jUnit / easyMock Selenium jMeter
Globalcode – Open4education
• Test-driven development
• Clean code
• Dependências
•Modularidade
• Lightweighting
• Arquétipos
• Plug-ins
• Popularização das DSL’s
• Integração e deployment contínuo
Técnicas em foco
Globalcode – Open4education
1 projeto = 1 arquitetura
• Visão errada e vício de grande parte de developers experientes e arquitetos
• Maior parte dos projetos envolvem:
• Interfaces Web read-only (consulta) com requisitos AJAX, grandes demandas e possibilidades de cache
• Interfaces administrativas tipo aplicativo old-style
• Integração e / ou exposição de dados
• A concepção multi-arquitetura é uma tendência boa para Cloud Computing;
• Riscos técnicos maiores em negócios de menor risco
Globalcode – Open4education
• Analisar requisitos não-funcionais relevantes
• Apoiar as empresas nas decisões e escolhas das tecnologias de desenvolvimento
•Minimizar riscos
• Ajudar desenvolvedores na implementação
• Escrever documentos, participar de reuniões
• Fazer apresentações e treinamentos
• Resolver problemas mais graves em produção
• Arquiteto de software = Desenvolvedor sênior com habilidades de lideranças
Trabalho clássico de arquitetura
Globalcode – Open4education
Requisitos não-funcionais
Escalabilidade Manutenabilidade Confiabilidade
Disponibilidade Estensibilidade Gerenciabilidade
Performance Mobilidade Implementabilidade
Usabilidade Conectividade Testabilidade
Modularidade Interoperabilidade Segurança
Ferramental Auditabilidade Internacionalização
Cross-vendoring Custo propriedade Compatibilidade
Suporte comercial Recursos humanos Acessibilidade
Entregabilidade Risco Produtividade
Globalcode – Open4education
Tecnologias no mundo Java...
Maven JavaFX JSF
Wicket Vaadin EJB
Spring jQuery Richfaces
Hibernate noSQL OSGi
jUnit Scala Grails
Gradle CDI ehCache
Seam REST Spring Security
Play WebServices Nexus
Mule Portlets Hudson
Globalcode – Open4education
DEMO: arquiteto 3D
Globalcode – Open4education
Para implementar
1. contrata um arquiteto ninja
2. analisa a empresa
3. analisa o negócio
4. analisa os principais requisitos não-funcionais
5. escolhe tecnologias que atende aos 3 itens anteriores
6. escreve documentos
7. implementa um aplicativo de referência
(quando o arquiteto ainda sabe programar)
7. e...
Globalcode – Open4education
Arquiteto ninja
Globalcode – Open4education
Ninja Pattern
• Empresa: tem a visão que é um trabalho finito
• Arquiteto: tem a visão que ao término da arquitetura não nada mais de excitante para se fazer
• Consultorias: são contratadas e esperam delas uma reencarnação tecnológica expressa
• Arquitetura é um trabalho orgânico e contínuo;
• Arquitetura evolutiva / contínua!
• Calma: também não significa que você precisa ter um arquiteto full-time!
Globalcode – Open4education
• Tem uma visão mais ampla de negócios
• Escolhe tecnologias para negócios e não para sua ansiedade
• Fazem revisões constantes de código
• Implementam métricas de qualidade PKI
• Ajuda a cadenciar a motivação técnica da equipe
• É adepto a agilidade e lean (ou pelo menos entusiasta)
• Conhece Application Life Cycle Management
Arquiteto multi-dimensional
Globalcode – Open4education
Entender o tipo de empresa
Empresa pequena Média Grande
Gigante Multinacional Seu tio
Startup Rede nacional Governo
Gigantes de TI Conservadora Moderna
Bom momento Estável Péssimo momento
Pesquisas Inovação Junior
Cooperativa Associação Órgão público
Profissional autônomo Investidor Familiar
ONG Holding “Fio do bigode”
Globalcode – Open4education
Entender o negócio / projeto
Mercado de Ações Agropecuária Startup Web
Games Fábrica de aviões Padaria
Cervejaria Eletrônicos Open-source
Supermercado Redes de loja Prefeitura
Exército Banco do Governo Banco Privado
Escola pública Escola privada Universidade pública
Projeto Inovação Sex shop Embarcados
Marketing Projeto Google Dispositivos móveis
Um “e-bay” Arte tecnológica Robótica
Globalcode – Open4education
•Gestão de requisitos / backlog / roadmap
•Gestão de Código e versões
•Gestão de Construção e integração continua
•Gestão de Componentes e dependências
•Gestão de Repositórios de componentes
•Gestão de Arquétipos
•Gestão de Wiki / Documentação
•Gestão de Testes
Gestão de arquitetura
Globalcode – Open4education
DEMO: arquiteto multi-D
Globalcode – Open4education
• Application Lifecycle Management: gerenciamento contínuo do software;
• Casamento da gestão de negócio com engenharia de software;
• Requer ferramentas integradas para gerenciar:
Requisitos;
Repositório de código;
Construção integrada;
Arquitetura e codificação;
Testes e qualidade;
Gerenciamento de versões e componentes;
A.L.M.
Globalcode – Open4education
A.L.M.
• Independente de metodologia, arquitetura e tecnologia TODA EMPRESA PRECISA DE A.L.M.
• Não documentar o futuro (Agile / Scrum) é uma coisa, poder rastrear o passado é outra;
• ALM = é como álbum de fotografia do seu software, com retratos tirados automaticamente a cada mudança, falha, novo requisito, novo release, etc.
• Todo mundo sai ganhando: bom para o developer, gerente, arquiteto, Scrum Master, P.O., V.P., CIO, CTO, Asponi, etc.
Globalcode – Open4education
• Expõe a arquitetura facilitando e motivando sua a gestão:
• Requisitos / Bugs / Backlog / Atividade / User Story
• Documentação (wiki / files) e suporte (fórum)
• Versionamento, tags, brunches, ..
• Componentes
• Repositório de componentes
• Arquétipos
• Construção
• Testes – Homologação - Produção
• Deployment
Gestão de Arquitetura
Globalcode – Open4education
• Exemplo de pilha A.L.M. open-source:
A.L.M. open-source
Disciplina Software
Gerenciamento de Requisitos Redmine
Gestão de código / versionamento SVN e GIT
Construção e dependências Maven
Gerenciamento de arquétipos Maven
Integração Contínua Hudson
Repositório de componentes Nexus
Ferramenta para desenvolvimento Eclipse IDE com plugins
Globalcode – Open4education
• Vantagens na adoção:
•Maior rastreabilidade;
• Cultura de planejamento de releases;
•Gerenciamento integrado;
• Simplificação nos processos;
• Agilidade na construção do software;
• Conseqüente aumento na cultura de testes;
• Aumento da reusabilidade;
A.L.M. - vantagens
Globalcode – Open4education
DEMO
•O que der tempo:
• ALM
• Scala com Java EE 6
•OSGi com Java EE 6
•O que não der tempo faremos no stand da Globalcode sob-demanda!
Globalcode – Open4education
• Arquitetura é um trabalho multi-disciplinar que demanda diferentes visões
• Arquitetura não é um trabalho finito
• Arquiteto é o nome utilizado principalmente no Brasil, mas refere-se a um senior de software;
• Habilidade de T.I. senior somadas as habilidades de negócio, gestão e startuping pode transformar você em um empreendedor técnico;
• Ser arquiteto não signifca parar de codificar;
• Ser de negócio não significa parar de codificar;
• E ser arquiteto e codificar não significa não ser de negócio
Conclusões