Your SlideShare is downloading. ×
  • Like
Java e Cloud Computing
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Java e Cloud Computing

  • 1,214 views
Published

Java e Cloud Computing …

Java e Cloud Computing
A computação nas nuvens é uma tendência do mercado, aprenda como desenvolver sobre ela utilizando plataforma java. Esta oficina traz uma visão geral sobre conceitos e arquitetura da cloud computing. Diferenças entre plataformas como Amazon Web Services (AWS), Google Application Engine (GAE). Durante a oficina estaremos desenvolvendo uma aplicação java e disponibilizando a mesma na GAE. Alem disso vamos explorar alguns recursos específicos do serviço do Google, como o repositório de dados NoSQL.

Programação do mini-curso

08:00
- Introdução a Computação em nuvem
- Fundamentos em computação em nuvem
- Níveis de serviços em nuvem
- Google App Engine
- Ambiente de execução da App Engine
- Prática 1

9:30 INTERVALO

10:00
- Ambiente de Desenvolvimento da App Engine
- Ambiente de Produção da App Engine
- Colocando uma aplicação em produção
- Prática 2

ALMOÇO

13:30
- NoSQL
- Big Table
- Acesso a dados
- Prática 3

15:30 INTERVALO

16:00
- API e Serviços da AppEngine
- Pratica 4
- Outros Recursos da App Engine e Dicas

Published in 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
1,214
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
5
Comments
0
Likes
2

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

Transcript

  • 1. Java e Cloud Computing Mario Jorge Pereira
  • 2. Java e Cloud Computing Mario Jorge Pereira
  • 3. 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
  • 4. Uso de recursos computacionais (software e hardware) que são oferecidos como serviço através de uma rede, tipicamente a internet. Cloud Computing
  • 5. Caracteristicas • Provisionamento dinâmico de recursos sob demanda, com mínimo de esforço; • Escalabilidade; • Uso de "utilility computing", onde a cobrança é baseada no uso do recurso ao invés de uma taxa fixa; • Visão única do sistema; • Distribuição geográfica dos recursos de forma transparente ao usuário.
  • 6. era uma vez.. 1969 - Multitasking; 1970 - Create Internet; 1991 - Releases Internet for General Use; 1993 .. 1995 - eBay & Amazon founded; 1999 - SaaS salesforce.com launched; 2000 - Economy loses speed; 2006 - Amazon Web Service (IaaS); 2008 - Google App Engine (PaaS) [Go Java Python] 2011 - Google App Engine deixou de ser preview 2013 - Google Cloud Plataform (IaaS/PaaS) [PHP]
  • 7. SaaS
  • 8. IaaS
  • 9. PaaS
  • 10. E O Goole App Engine?
  • 11. http://cloud.google.com/appengine Goole App Engine ✓ Execute seus aplicativos da web na infraestrutura do Google; ✓ Suporte à aplicações em Java, Python, GO! e PHP*; ✓ Todos os recursos dentro da mesma plataforma; ✓ Quota gratuita renovada diariamente;
  • 12. Hospedagem livre de preocupações Suporte a Python, Java, PHP e Go Alta disponibilidade do serviço NoSQL e SQL
  • 13. BackendSem limite de tempo de processamento Maior quantidade de RAM Gerenciamente manual/programático Instancias Frontend Limite de tempo de request RAM limitada Gerenciado pelo AppEngine
  • 14. Ambiente Java Servlet 2.5, Java 7 e suporte a multithread Datastore baixo nível assíncrono, JPA e JDO Deploy utilizando GAE Console, toolkit do Eclipse, scripts ou Maven; Configurações para escalabilidade via GAE Console e XML; Não é possível realizar chamadas a recursos externos com tempo de resposta maior que 60s;
  • 15. Serviços GAE Full Text Search Memcache Users Mail Task Queue Image URL Fetch Search API XMPP Datastore
  • 16. + + Ferramentas
  • 17. http://appengine.google.com Crie sua conta
  • 18. File menu > New > Web Application Project Desmarque Use Google Web Toolkit
  • 19. Estruturadearquivos
  • 20. http://localhost:8888/
  • 21. Context menu > New > Other WEB-INFindex.jsp JSP File
  • 22. deploy to app engine...
  • 23. http://appengine.google.com
  • 24. Context menu > Google > Deploy to AppEngine
  • 25. App Engine project settings...
  • 26. ARMAZENAMENTO DE DADOS
  • 27. ✓Armazenamento de arquivos; ✓Free ate 5GB ✓$0,13/GB/mês Blobstore
  • 28. ✓Instâncias de MySQL na nuvem; ✓Utilização com JDBC; ✓Maximo Request e Response Size 16MB ✓Inicia em $1.46/dia ou $0.10/hora; Cloud SQL
  • 29. ✓NOSql (BigTable) com as entidades sendo representadas por um tipo, um identificador e seu conteúdo; ✓Implementação utilizando JDO, JPA ou uma biblioteca de serviços específicos; ✓Consultas baseadas em índices pré-”buildados”; ✓Free 50k de operações; ✓$0.09/100k de operações de escrita e $0.06/100k de operações de leitura Datastore
  • 30. File menu > New > Web Application Project Desmarque Use Google Web Toolkit Desmarque Generateproject samplecode
  • 31. Context menu > New > Other WEB-INFindex.jsp JSP File
  • 32. Mockup Blog
  • 33. <!DOCTYPE html> <html> <head> <title> Blog </title> </head> <body> <h1> Blog <h1> <form name="form1" action="/servlet"> Titulo: <br> <input name="titulo" type="text"> <br> Autor: <br> <input name="autor" type="text"> <br> Texto: <br> <textarea name="texto"> </textarea> <br> <input type="submit" value="Salvar"> </form> </body> </html> Formulário - index.jsp
  • 34. <!DOCTYPE html > <%@page import="com.google.appengine.api.datastore.FetchOptions"%> <%@page import="com.google.appengine.api.datastore.Query"%> <%@page import="com.google.appengine.api.datastore.Entity"%> <%@page import="java.util.Date"%> <%@page import="com.google.appengine.api.datastore.DatastoreServiceFactory"%> <%@page import="com.google.appengine.api.datastore.DatastoreService"%> <html> <head>...</head> <body> <% String titulo = request.getParameter("titulo"); String autor = request.getParameter("autor"); String texto = request.getParameter("texto"); if (titulo != null && autor != null && texto != null) { Date data = new Date(); Entity mensagem = new Entity("Mensagem"); mensagem.setProperty("titulo", titulo); mensagem.setProperty("autor", autor); mensagem.setProperty("texto", texto); mensagem.setProperty("data", data); DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); datastore.put(mensagem); response.sendRedirect("index.jsp"); }%> ... </body> </html> Salvar - index.jsp
  • 35. <!DOCTYPE html > ... <%@page import="java.text.SimpleDateFormat"%> <%@page import="java.util.List"%> <html> <head>...</head> <body>... <% String titulo = request.getParameter("titulo"); String autor = request.getParameter("autor"); String texto = request.getParameter("texto"); if (titulo != null && autor != null && texto != null) { ... } else { DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); Query query = new Query("Mensagem").addSort("data",Query.SortDirection.DESCENDING); List<Entity> msgs = datastore.prepare(query).asList(FetchOptions.Builder.withDefaults()); for (Entity mensagem : msgs) {%> <%=mensagem.getProperty("titulo")%><br> <%=mensagem.getProperty("texto")%><br> <%=mensagem.getProperty("autor")%> - <%=new SimpleDateFormat(“dd/MM/yyyy”).format((Date) mensagem.getProperty("data"))%><br> <% } }%> ...</body> </html> Listar - index.jsp
  • 36. http://localhost:8888/_ah/admin/
  • 37. ✓Serviço para o envio e recebimento de e- mails através do GAE; ✓Pode ser implementado utilizando JavaMail ou uma biblioteca específica; ✓Tamanho maximo 100MB e 10 MB/minute ✓ $0.0001 por destinatário após sua quota diária de 100 destinatários; Mail
  • 38. Mockup - Newsletter
  • 39. <!DOCTYPE HTML> <html> <head> <title>Newsletter</title> </head> <body> <h1>Newsletter</h1> <form method="post" action="/sucesu3"> Nome: <input type="text" name="nome"> <br> Email: <input type="text" name="email"> <br> <input type="submit" value="Enviar"><br> </form> </body> </html> Newsletter - index.jsp
  • 40. public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); try { String nome = req.getParameter("nome"); String email = req.getParameter("email"); Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress("mariojp@gmail.com")); msg.addRecipient(Message.RecipientType.TO, new InternetAddress(email, nome) ); msg.setSubject("Sucesu 2013 "); msg.setText("Bem Vindo a Sucesu 2013"); Transport.send(msg); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } resp.setContentType("text/plain"); resp.getWriter().println("Email enviado com Sucesso"); } Newsletter - MailServlet
  • 41. ... <inbound-services> <service>mail</service> </inbound-services> ... Mail - appengine-web.xml
  • 42. <servlet> <servlet-name>mailhandler</servlet-name> <servlet-class>br.com.sucesu.MailHandlerServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>mailhandler</servlet-name> <url-pattern>/_ah/mail/*</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>mail</web-resource-name> <url-pattern>/_ah/mail/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> Mail - web.xml
  • 43. public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); try { MimeMessage msg = new MimeMessage(session, req.getInputStream()); System.out.println(message.getSubject()); } catch (MessagingException e) { e.printStackTrace(); } } Mail - MailHandlerServlet.java
  • 44. Mail - Test http://localhost:8888/_ah/adm in/inboundm ail
  • 45. ✓Autenticar usuários através de Contas do Google, contas do Google Apps ou OpenID. ✓Redirecioná-lo para a página de login; ✓Detectar se o usuário atual é administrador; User
  • 46. <html> <head><title>User</title></head> <body> <% UserService userService = UserServiceFactory.getUserService(); String thisURL = request.getRequestURI(); if (request.getUserPrincipal() != null) {%> <%=("Ola, "+ request.getUserPrincipal().getName() +"!<a href=""+userService.createLogoutURL(thisURL)+"">Sair</a>")%> <%} else { %> <%=("<a href=""+userService.createLoginURL(thisURL)+ "">Entrar</a>") %> <%}%> </body> </html> User - index.jsp
  • 47. ✓execução de tarefas em background; ✓Possibilidade de se configurar a taxa de processamento para uma determinada fila; ✓É um serviço gratuito mas que precisa seguir algumas restrições definidas pelo GAE; Task Queue
  • 48. ✓Cache em memória compatível com o protocolo memcached; ✓Precisa seguir algumas restrições; Memcache
  • 49. Esta obra está licenciada sob a licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-sa/3.0/.
  • 50. Java e Cloud Computing Mario Jorge Pereira Como me encontrar? http://www.mariojp.com.br twitter.com/@mariojp mariojp@ufba.br mariojp@gmail.com