Passado, presente e futuro das arquiteturas (e do arquiteto) Java
Agenda A escada rolante Java & negócios Arquitetura com Java Dimensões de um arquiteto ALM Demonstrações técnicas
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.
T.I. é uma escada rolante...
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
Negócios também!!!
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
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.?
?
?
?
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
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!)
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!
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
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?
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!
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
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
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
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
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
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
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
DEMO: arquiteto 3D
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...
Arquiteto ninja
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!
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
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”
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
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
DEMO: arquiteto multi-D
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;
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.
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
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
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;
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!
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

O futuro do arquiteto e das arquiteturas Java Enterprise

  • 1.
    Passado, presente efuturo das arquiteturas (e do arquiteto) Java
  • 2.
    Agenda A escadarolante Java & negócios Arquitetura com Java Dimensões de um arquiteto ALM Demonstrações técnicas
  • 3.
    Vinicius Senger desenvolvedordesde 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. é umaescada rolante...
  • 5.
    T.I. é umaescada 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.
  • 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? Ambasestã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 oNegó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 mundodos 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 Diariamentedeclaram 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 / ProdutorPodemos 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 denegó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 segurasEJB (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 focoTest-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 dearquitetura 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 EscalabilidadeManutenabilidade 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 mundoJava... 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.
  • 26.
    Para implementar contrataum 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.
  • 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 Temuma 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 tipode 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 arquiteturaGestã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.
  • 34.
    A.L.M. Application LifecycleManagement: 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 demetodologia, 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 ArquiteturaExpõ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 Exemplode 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. - vantagensVantagens 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 queder 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

Notas do Editor

  • #4 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.
  • #5 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.
  • #7 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.
  • #9 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.
  • #14 Spring, Jboss, e-bay, NASA, bancos, governos, teles, SAP, etc.
  • #32 Falar da realidade do desenvolvimento de um projeto que usa V8 para escalabilidade e quem esta otimizando o V8 para ter escalabilidade