O futuro do arquiteto e das arquiteturas Java Enterprise

  • 6,855 views
Uploaded on

Palestra apresentada durante o www.thedevelopersconference.com.br 2011 em São Paulo.

Palestra apresentada durante o www.thedevelopersconference.com.br 2011 em São Paulo.

More in: Education , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,855
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
266
Comments
0
Likes
9

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • abrir falando: eu estou mais motivado que o normal hoje em dia, pois o progresso da tecnologia tem trazido muitas facilidades para desenvolver softwares e eventualmente criar um business ao redor dele.
  • abrir falando: eu estou mais motivado que o normal hoje em dia, pois o progresso da tecnologia tem trazido muitas facilidades para desenvolver softwares e eventualmente criar um business ao redor dele.
  • abrir falando: eu estou mais motivado que o normal hoje em dia, pois o progresso da tecnologia tem trazido muitas facilidades para desenvolver softwares e eventualmente criar um business ao redor dele.
  • Podemos tirar muitos proveitos de tais evoluções Facilidades para fotos, vídeos, propagandas, rastreamento, venda, compra, criação de site, logo etc. Facilidades do governo: investimentos / FINEP, etc.
  • Spring, Jboss, e-bay, NASA, bancos, governos, teles, SAP, etc.
  • Falar da realidade do desenvolvimento de um projeto que usa V8 para escalabilidade e quem esta otimizando o V8 para ter escalabilidade

Transcript

  • 1. Passado, presente e futuro das arquiteturas (e do arquiteto) Java
  • 2. Agenda
    • A escada rolante
    • Java & negócios
    • Arquitetura com Java
    • Dimensões de um arquiteto
    • ALM
    • Demonstrações técnicas
  • 3. Vinicius Senger
    • 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.
  • 4. T.I. é uma escada rolante...
  • 5. T.I. é uma escada rolante...
    • 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
  • 6. Negócios também!!!
  • 7. Os negócio também!
    • 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
  • 8. Em sinergia?
    • 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.?
  • 9. ?
  • 10. ?
  • 11. ?
  • 12. 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
  • 13. 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!)
  • 14. 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!
  • 15. 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
  • 16. Consumidor / Produtor
    • Podemos abstrair o mercado de desenvolvimento em:
      • Produtor que não vai consumir : cria API’s, IDE’s, frameworks, linguagens / DSL, idéias, ferramentas etc.
      • 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?
  • 17. 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!
  • 18. 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
  • 19. 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
  • 20. Técnicas em foco
    • Test-driven development
    • Clean code
    • Dependências
    • Modularidade
    • Lightweighting
    • Arquétipos
    • Plug-ins
    • Popularização das DSL’s
    • Integração e deployment contínuo
  • 21. 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
  • 22. Trabalho clássico de arquitetura
    • 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
  • 23. 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
  • 24. 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
  • 25. DEMO: arquiteto 3D
  • 26. Para implementar
    • contrata um arquiteto ninja
    • analisa a empresa
    • analisa o negócio
    • analisa os principais requisitos não-funcionais
    • escolhe tecnologias que atende aos 3 itens anteriores
    • escreve documentos
    • implementa um aplicativo de referência
    • (quando o arquiteto ainda sabe programar)
    • 7. e...
  • 27. Arquiteto ninja
  • 28. 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!
  • 29. Arquiteto multi-dimensional
    • 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
  • 30. 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”
  • 31. 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
  • 32. Gestão de arquitetura
    • 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
  • 33. DEMO: arquiteto multi-D
  • 34. A.L.M.
    • 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;
  • 35. 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.
  • 36. Gestão de Arquitetura
    • 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
  • 37. A.L.M. open-source
    • Exemplo de pilha 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
  • 38. A.L.M. - vantagens
    • 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;
  • 39. 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!
  • 40. Conclusões
    • 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