Arquivo da categoria ‘Cloud’

O termo Enterprise se refere a organização empresarial corporativa. Na indústria de computadores, o termo é frequentemente usado para descrever qualquer grande organização que utiliza computadores, sistemas operacionais, softwares ou ferramentas de desenvolvimento para o mundo dos negócios. E ao analisarmos o DNA das soluções Enterprise que encontramos nos dias de hoje, sem duvida encontraremos a herança de uma empresa que foi amplamente responsável por tudo que conhecemos, a IBM, empresa pioneira no desenvolvimento de hardware e softwares corporativos.

O principal software corporativo é chamado de Enterprise Resource Planning (ERP) e grande parte de toda infraestrutura e metodologias existentes no universo corporativo prezam garantir que este software funcione perfeitamente desde o inicio da era da computação empresarial. O ERP nasceu de seu antecessor, Manufacturing Resource Planning (MRP) e evoluiram desde os primórdios dos pacote de gerenciamento de banco de dados comercial desenvolvido por Gene Thomas na IBM na década de 1960. Logo os primeiros sistemas ERP foram concebidos como uma ferramenta organizacional e de programação para as empresas industriais. A função da próxima geração de sistemas de software ERP foram estendidos além dos limites do que poderia ser feito para uso interno de uma empresa de fabricação individual e começou a incluir clientes e fornecedores. Não demorou muito para que outras indústrias reconhecessem os benefícios dos sistemas ERP, então as agências governamentais e organizações do setor de serviços também começaram a tirar proveito desta tecnologia.

A evolução se deu dos processos executados em grandes mainframes, como IBM/360 para os processos atuais que gerenciam enormes quantidades de dados em tempo real e são executados em diferentes plataformas transpondo os limites físicos das empresas, permitindo que o processo de trabalho continue sem fronteiras e a qualquer hora, em qualquer lugar.

De onde vem os softwares Enterprise?

Um rápido passeio pela historia das três maiores soluções Enterprise encontradas no mercado de software da atualidade, nos mostram o como foi o inicio dos sistemas corporativos:

A SAP AG criada em 1972 por cinco consultores da IBM que perceberam a possibilidade de criar um pacote de software padrão a ser executado em um mainframe IBM. Em dezoito meses foi criado o sistema R que foi renomeado para R/1, sendo seguido pelo sistema R/2 de duas camadas e logo depois o R/3 apareceu inicialmente no final dos anos 80 quando a IBM lançou sua arquitetura SNA, mas foi decidido trabalhar com Unix no lugar do mainframe IBM e após cinco anos de desenvolvimento, em 1992 o sistema R/3 finalmente foi lançado.

A JD Edwards World Solution Company, foi fundada em março 1977 e era uma empresa de software empresarial, o foco inicial da empresa foi o desenvolvimento de um programa de contabilidade necessário para seus clientes. Seu produto mais popular chamado World era centralizado em servidores, bem como multiusuário; os usuários poderiam acessar o sistema usando um dos vários terminais de computador da IBM ou “telas verdes”. Como um sistema ERP, o JD Edwards World incluía as três áreas básicas de atuação: analista funcional/negócios, desenvolvedor/programador e  administração do sistema.

O Microsoft Dynamics AX foi originalmente desenvolvido como uma colaboração entre a IBM e a dinamarquesa Damgaard Data que resultou no IBM Axapta. O Axapta foi inicialmente lançado em março de 1998, nos mercados dinamarqueses  e norte-americanos. A IBM devolveu todos os direitos sobre o produto para a Damgaard Data logo após o lançamento da versão 1.5 antes da Damgaard Data ser fundida com Navision Software A/S em 2000, a empresa combinada, inicialmente Navision Damgaard, depois Navision A/S, foi adquirida pela Microsoft em julho de 2002 e em setembro de 2011, a Microsoft anunciou o lançamento da versão nova AX 2012.

Hoje a IBM não possui uma solução de ERP mas ela endossa através de suas alianças poderosas soluções em conjunto com a SAP e Oracle:

IBM ERP Alliance: http://www.ibm.com/solutions/alliance/us/en/index/erp.html

????????????????????????????????????????
O que os Softwares Corporativos Podem Fazer?

Unificar os dados como um todo, integrando os sistemas de gestão empresarial, permitindo a centralização de todo o negócio em uma única fonte, pois são desenvolvidos para atender às necessidades das diferentes áreas de uma empresa.

As varias ferramentas oferecem aos seus gestores um maior controle sobre suas operações e planejamentos, interligando todos os departamentos e se tornando um importante apoio às decisões estratégicas da diretoria, indicando os mercados mais lucrativos no qual pode-se investir.

Como beneficio a empresa passa a obter maior agilidade aos processos e uma maximização de resultados a longo prazo, com a padronização das informações internas consegue-se uma ampla visibilidade dos procedimentos empresariais e uma automação das dinâmicas de apoio. A obtenção de dados em tempo real, possibilita a eliminação das falhas de comunicação entre os setores e um melhor gerenciamento de qualidade de seus produtos ou serviços e também um melhor relacionamento com os seus clientes.

Como é a arquitetura de um software Enterprise?

Os softwares Enterprise geralmente utilizam o topo da tecnologia disponível em termos de hardware. Novos hardwares são construídos para atender as novas exigências que as empresas demandam com o crescimento baseado no beneficio da tecnologia que elas adquirem, sendo assim novos hardwares necessitam de novas versões de softwares e sistemas operacionais para que possam ser controlados, gerando um ciclo de desenvolvimento de tecnologia de ponta.

Os programas Enterprise atuais utilizam uma arquitetura de três camadas, cada camada é auto contida o suficiente de forma que a aplicação pode ser dividida em vários computadores em uma rede distribuída. As camadas são compostas da interface do usuário (Camada de Apresentação ou Servidor de Apresentação); da lógica do negócio (Camada de Negócio ou Servidor de Aplicação) e da camada de banco de dados (Camada de Dados ou Servidor de Dados). Cada camada desta arquitetura é normalmente mantida em um ou mais servidores para tornar-se mais escalonável e independente das demais. Com o mesmo objetivo são utilizadas tecnologias de middleware como, por exemplo, COM, CORBA, Web Services ou RMI. Esta arquitetura tem como características baixos custos de disponibilização, de mudança da base de dados, de mudança na lógica de negócios, eficiente armazenamento e reutilização de recursos.

Três camadas SAP:

R/3 - Três camadas

R/3 – SAP – Três camadas

Três camadas Oracle:

JD Edwards - três camadas

JD Edwards – Oracle – Três camadas

Três camadas Microsoft:

Dynamics - Microsoft - Três camadas

Dynamics – Microsoft – Três camadas

Como funcionam na pratica para desenvolvedores e consultores?

Os softwares corporativos que integram a linha empresarial como já vimos ditam não só a tecnologia de hardware e software mas também o funcionamento de empresas de tecnologia, de desenvolvimento ou consultorias que trabalham com este tipo de solução.

No mercado de softwares corporativos um desenvolvedor em alguns casos também é um tipo de consultor ou especialista, outras profissões que conhecemos no mercado da tecnologia também se enquadram no time de consultores tendo sua própria nomenclatura, os códigos fontes são abertos e podem ser herdados e modificados, porem geralmente tudo que é desenvolvido dentro de um software corporativo pela licença sob o qual ele é gerido é de propriedade da empresa fabricante do software, entretanto é permitindo que consultorias desenvolvam e comercializem módulos adicionais para seus produtos seguindo as melhores praticas de desenvolvimento, implantação e manutenção da empresa detentora da solução.

Os sistemas ERP podem se conectar com qualquer banco de dados topo de linha do mercado e tem como parceiros as empresas fabricantes de cada banco, quando também não é proprietária de uma solução de banco de dados, em ambos os casos os bancos de dados possuem Features exclusivas desenvolvidas para uso com cada um destes sistemas. Os sistemas ERP contam com um dicionário de dados que controla o banco de dados em uso, permitindo que o sistema e os desenvolvedores utilizem uma linguagem única para acesso a dados. Possuem também seu próprio compilador e sua própria linguagem de programação na qual as consultorias podem desenvolver novos módulos ou modificar módulos existentes.

A SAP possui a linguagem Abap, a Oracle utiliza entre outros métodos a linguagem C e a Microsoft a linguagem X++. As empresas terceirizadas também podem desenvolver outros softwares corporativos que se comunicam com o ERP através de um protocolo de comunicação especifico, geralmente utilizando as tecnologias DCOM ou Corba e são nada mais que interfaces para a comunicação entre um sistema proprietário e outro compatível de terceiros através de conexões TCP/IP e podem chamar funções remotas do ERP que são criadas para inserir ou exportar dados garantindo a consistência de dados utilizando a própria regra de negocio do ERP e fornecendo uma maneira para que um programa externo escrito em linguagens como  Java, C, C ++C# ou outras línguas possam também atuar como o cliente ou servidor em uma chamada.

SAP – Abap: Linguagem de programação.

Oracle – JDE: Development Tools.

Microsoft – MorphX: IDE e linguagem X++.

Solutions_key
Como é a Metodologia dos Softwares Enterprise?

Com décadas de experiência no mercado corporativo os softwares empresariais desenvolveram algumas metodologias ao longo dos anos que possibilitam que as empresas utilizem de forma adequada suas soluções, abrangendo todas as fases de um projeto desde a engenharia de software, a definição de escopo, passando pela especificação funcional, design, construção, testes, até chegar à validação, implantação e uso produtivo da solução.

ASAP Methodology: Metodologia ASAP

Oracle Unified Method: Metodologia OUM

Microsoft Dynamics Sure Step methodology: Metodologia MS Sure Step

Falando de modo genérico já que estamos nos referindo a três ótimos softwares empresariais da atualidade, podemos perceber que os três possuem uma arquitetura semelhante que proporciona uma metodologia muito similar para execução de seus projetos, deste modo, segue uma visão geral de um projeto corporativo.

A fase de preparação geralmente é executada por um gerente de projetos e engloba o escopo, estimativas, planejamento inicial do projeto, cronograma, aspectos técnicos, definição de equipe, identificação de riscos e estratégias, planejamento de controle de qualidade e o inicio do projeto.

A fase inicial, já com os recursos definidos em ação, o gerente de projeto e os analistas funcionais devem tratar do levantamento dos processos de negócio, gestão do projeto, mudanças organizacionais, definição dos novos processos de negócio, necessidades e mudanças organizacionais.

Com toda a definição realizada, já na fase de customização e desenvolvimento, entra em cena os consultores especialistas que iniciam a configuração, implementação e o desenvolvimento das definições funcionais que entre elas estão a configuração base, a configuração final, desenvolvimento de programas, implementação de interfaces, testes unitários, testes integrados, documentação de cenários e processos, execução dos treinamentos aos key users e usuários, controle de qualidade e a correção de possíveis erros.

Na fase de pré-produção toda atenção se volta aos detalhes finais como, testes de volume, testes de stress, planejamento da implantação, estratégia de implantação, treinamentos finais e o controle de qualidade.

Com tudo pronto o projeto é finalmente implantado e o sistema é colocado em produção e os retoques finais são a transferência de pré-produção, ajuste da configuração de hardware, ajustes na configuração de software, base de dados, sistema operacional e outros. Só então se inicia os treinamentos finais, suporte aos key-users e usuários e encerramento do projeto.

Ambientes Corporativos

Integrando a metodologia de gestão de projeto os softwares corporativos e suas demais ferramentas são desenvolvidas para utilizar ambientes específicos nos quais tem o intuito de maximizar a eficiência dos métodos de implantação, desenvolvimento, testes, qualidade, treinamento, utilização e gerenciamento dos produtos adquiridos. Cada ambiente possui suas especificações de uso e são utilizados para uma finalidade especifica e devido a eficiência deste modelo outras metodologias também utilizam alguns destes cenários.

Ambientes do SAP:

Alguns dos ambientes SAP

Alguns dos ambientes SAP

Ambientes da Oracle:

Alguns dos ambientes Oracle

Alguns dos ambientes Oracle

Ambientes da Microsoft:

Alguns dos ambientes Microsoft

Alguns dos ambientes Microsoft

Como Desenvolver Suas Próprias Aplicações Enterprise?

As grandes empresas de tecnologia que desenvolvem o hardwaresoftware para o mercado corporativo em sua maioria também desenvolvem ferramentas para desenvolvimento de softwares para empresas terceirizadas, para que estas possam desenvolver seus próprios softwares empresariais ou soluções que complementas as soluções já existentes, entre elas a Oracle, a IBM, a Microsoft e com exceção da SAP que também utilizam em certos casos o Java da Oracle e ferramentas da IBM como a IDE Eclipse. Todas disponibilizam um vasto matérial sobre como desenvolver seus próprios projetos Enterprise, veja os seguintes links:

Microsoft: http://msdn.microsoft.com/en-us/library/ff648951.aspx

Oracle: http://www.oracle.com/technetwork/java/javaee/overview/index.html

IBM: http://www.ibm.com/developerworks/

SAP: Enterprise Learning

O primeiro passo é ter em mente que um software enterprise bem sucedido necessita de hardware adequado, arquitetura e programação adequada, metodologia adequada, consultoria adequada e o mais importante de tudo um grande know-how das regras de negocio das áreas incluídas no escopo de sua solução.

HTML5 ou Hypertext Markup Language, versão 5 é uma linguagem para estruturação e apresentação de conteúdo para a World Wide Web e é uma tecnologia chave da Internet, está na quinta versão da linguagem HTML. Esta nova versão traz consigo importantes mudanças quanto ao papel do HTML no mundo da Web, através de novas funcionalidades como semântica e acessibilidade.

Claro, houve mudanças na linguagem HTML em si. Algumas Tags foram adicionadas em comparação ao padrão HTML 4, e um número considerável também foram excluídas. Provavelmente o maior ajuste para aqueles que usaram ​​o HTML4 não é realmente o HTML em si, mas a relação entre a mudança de HTML e CSS. Em HTML5 (como em HTML), a linguagem de marcação descreve o que significam os vários elementos. CSS é usado para descrever como as coisas se parecem.

CSS3 é a mais nova versão das famosas Cascading Style Sheets ou simplesmente CSS, onde se define estilos para páginas web com efeitos de transição, imagem, e outros, que dão um estilo novo às páginas Web 2.0 em todos os aspectos de design do layout. A principal função do CSS3 é abolir as imagens de plano de fundo, bordas arredondadas, apresentar transições e efeitos para criar animações de vários tipos, como um simples relógio de ponteiros.

Google Cloud - HTML5 e CSS3

Google Cloud – HTML5 e CSS3

Computação nas Nuvens

Agora que você já sabe como funciona a tecnologia Cloud do Google App Engine e como o funciona o ambiente de SandBox no qual nossa aplicação Python roda, vamos nos aprofundar um pouco mais nas linguagens de scripts para a Web, pois não há como existir computação nas nuvens sem a boa e velha linguagem de scripts chamada HTML. Em sua versão mais recente o HTML5 possui como uma melhor amiga, a linguagem de scripts que também ganhou uma cara nova e é chamada de CSS3.

Entretanto na arquitetura Cloud as coisas são um pouco diferentes do que são em um servidor web padrão, como por exemplo, os diretórios da web, em um servidor web você possui um diretório pré-estabelecido no qual pode utilizar, criando subdiretórios para scripts, imagens entre outros arquivos e apenas os referenciar utilizando scripts do qual você já esta acostumado.

Na tecnologia Cloud do Google quem comanda toda a aplicação é um arquivo YAML, então os scripts que, por exemplo chamam uma imagem em uma pagina HTML, só podem encontrar a imagem se ela ou o diretório onde a imagem se encontra estiver declarado nos handlers do arquivo que manipula a aplicação, como podemos ver nos códigos abaixo.

Diretórios Google Cloud App

  1. A imagem open-source.jpg que você vê na pagina esta localizada dentro de uma pasta chamada static na raiz da aplicação, você pode perceber que a tag “img src” é utilizada sem o caractere “/” fazendo referencia a um diretório, quem controla onde as imagens serão encontradas é a instrução handlers do arquivo yaml.
  2.  O ícone favicon.ico (16×16) utilizado pelo navegador se encontra na raiz da aplicação junto com o arquivo main.py, mais uma vez quem controla este ícone é a instrução handlers do arquivo yaml.

 

Multi Plataforma

Considerando que nossa aplicação roda em um navegador web, você pode utiliza-la de um sistema operacional de sua preferencia.

Você pode ver esta aplicação direto das nuvens: http://devabertolinux.appspot.com/

Para configurar sua primeira aplicação Google Cloud Linux: Hello World Google Cloud App Engine

Para Windows e Mac utilize o Google Cloud App Engine Launcher: Instalação e Hello World

Exemplo:

Neste exemplo criamos uma aplicação padrão no Google Cloud Engine, e utilizamos para programação a linguagem Python e através delas criamos uma variável no qual atribuímos um script contendo HTML5 e CSS3 para criar nossa pagina.

Yaml

application: devabertolinux
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: .*
  script: main.app

libraries:
- name: webapp2
  version: "2.5.2"

Python

#!/usr/bin/env python
#
#########################################
# Desevolvimento Aberto
#########################################
# E-mail: desenvolvimento.aberto@live.com
#
# Cloud Computing
# Python - HTML5 - CSS3 - Javascript
# main.py

import webapp2

devhtml = """
<!DOCTYPE HTML>
<html>
  <head>
     <title>Cloud - Desenvolvimento Aberto - Google APP Engine</title>
        <style type = "text/css">
           body { background-color: white; }
           h1   { color: #191970; }
           h3   { color: #53868B; }
           p    { color: #27408B; }
        </style>
  </head>
<body>
 <h1>Desenvolvimento Aberto</h1>
   <h3>Cloud Computing - HTML5 - CSS3 - Javascript</h3>
   <p>
     <img src = "open-source.jpg" alt = "Open Source" />
   </p>
   <h2>C&oacute;digo Aberto de melhor qualidade</h2>
     <p>Desenvolvimento Aberto &eacute; formado para educar sobre e defender</br>
        os benef&iacute;cios do c&oacute;digo aberto e de construir pontes entre os</br>
        diferentes c&iacute;rculos eleitorais na comunidade de c&oacute;digo aberto.</p>
</body>
</html>
"""

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write(devhtml)

app = webapp2.WSGIApplication([
    ('/', MainHandler)
], debug=True)

 

O Google App Engine permite que você construa aplicações web nos mesmos sistemas escaláveis ​​que as aplicações criadas pelo Google.  Os aplicativos App Engine são fáceis de construir, fácil de manter e fácil de escalar. Com o Google App Engine, não há servidores para manter. Se você acabou de fazer upload de seu aplicativo, ele está pronto para servir a seus usuários.

Ao contrario do Windows e Mac o Linux não possui o Google App Engine Launcher, deste modo todo o manuseio, incluindo compilação, servidor, e  deploy deve ser feito pelo terminal do Linux, por outro lado o Linux já contempla por default todas as ferramentas no qual usaremos, como a instalação do Python 2.7.x e o editor GEdit para a programação Python, então só nos resta baixar o Google App Engine SDK que pode ser baixado clicando aqui.

Computação nas Nuvens

O conceito de computação em nuvem em inglês, Cloud Computing, refere-se à utilização da memória e da capacidade de armazenamento e cálculo de computadores e servidores compartilhados e interligados por meio da Internet, seguindo o princípio da computação em grade.

O armazenamento de dados é feito em serviços que poderão ser acessados de qualquer lugar do mundo, a qualquer hora, não havendo necessidade de instalação de programas ou de armazenar dados. O acesso a programas, serviços e arquivos é remoto, através da Internet – daí a alusão à nuvem. O uso desse modelo (ambiente) é mais viável do que o uso de unidades físicas.

SandBox

O SandBox, em português, caixa de areia (onde as crianças brincam e o gato faz caca, nem precisa explicar, não é?), é um ambiente de desenvolvimento utilizado para desenvolvimentos primários, existem vários tipos de ambiente SandBox e geralmente estão associados a uma metodologia de desenvolvimento. Por exemplo, desenvolvimento de grandes aplicações, uma equipe de desenvolvedores podem utilizar o ambiente de SandBox para criar e testar aplicações sem risco de interferir com a configuração do ambiente de desenvolvimento oficial, após a aplicação ser testada ela passa para um ambiente DEV oficial e o ambiente de SandBox é descartado, sendo constantemente atualizado com uma copia do ambiente de desenvolvimento da empresa. Em desenvolvimento para a web, as empresas que permitem programação em seus ambientes, disponibilizam um ambiente de SandBox para que o usuário aprenda a criar aplicações utilizando virtualizações dos seus ambientes de desenvolvimento, porem sem interferir nos mesmos.

Para permitir que o Google App Engine distribua os pedidos para aplicações em vários servidores web, e para evitar uma aplicação de interferir com a outra, o aplicativo é executado em um ambiente de sandboxrestrito.

Google SandBox Python: https://developers.google.com/appengine/docs/python/#Python_The_sandbox

O que você deve saber sobre o Google Cloud

  • O nome da aplicação é chamado de AppID e deve ser único para não haver colisão de nome na web.
  • As boas praticas recomendam criar nomes de aplicação e diretórios utilizando caracteres minúsculos.
  • O servidor web local do Google App Engine é baseado na tecnologia Apache.
  • As portas locais não devem colidir com outras portas em uso por algum servidor web em seu computador.
  • O Linux não possui a ferramenta Google App Engine Launcher e toda sua manipulação deve ser feita pelo terminal.

 

Programando nas nuvens com o Google App Engine

1 – Para desencargo de consciência,  precisamos testar se já possuímos a versão do Python 2.7.x já instalada, use o comando:


/usr/bin/env python -V

Versão Python

Versão Python

2 – Descompacte o arquivo baixado na sua pasta Home do sistema operacional, que em português chama-se Pasta Pessoal, crie uma nova pasta para nossa aplicação, chame de GoogleApp, deste modo você terá duas pastas adicionais em seu diretório home do Linux, a pasta do SDK chamada google_appengine e GoogleApp na qual iremos criar nossos arquivos fonte.

Descompactar arquivo Zip

Descompactar arquivo Zip

3 – Uma App Cloud do Google é composta de basicamente de dois arquivos, um de extensão yaml que contem os parâmetros de sua aplicação, incluindo o seu AppID e de um arquivo .py que contem o programa de código Python. Use o GEdit do Linux e crie os arquivos app.yaml e main.py e utilize o código abaixo para escrever cada arquivo:

Código Fonte

Código Fonte

4 – Com os arquivos criados no diretório GoogleApp no qual criamos anteriormente, precisamos iniciar o servidor local, utilize a linha abaixo para iniciar o servidor:


~/google_appengine/dev_appserver.py ~/GoogleApp/

Inicia Servidor - App Engine

Inicia Servidor – App Engine

5 – Com o servidor iniciado, abra o seu navegador web e digite o seguinte endereço: http://localhost:8080/

Localhost - porta: 8080

Localhost – porta: 8080

6 – Abra uma outra aba no navegador e digite o endereço do Google App Engine para que possamos criar nosso projeto nos servidores Cloud do Google, já presumimos que você tenha uma conta do Google: https://appengine.google.com/

Google Cloud - Aplicação

Google Cloud – Aplicação

7 – Coloque o nome de sua App de acordo com o conceito de AppID do Google Cloud, este nome deve ser o mesmo contido no seu arquivo app.yaml e deve ser único, preencha uma descrição e clique em criar aplicação:

Cloud - AppID

Cloud – AppID

8 – Vamos efetuar um Deploy para os servidores do Google, isto significa que vamos compilar o programa Python e efetuar um Upload para as nuvens, utilize o seguinte comando para efetuar este procedimento, e-mail e senha serão requeridos:


~/google_appengine/appcfg.py update ~/GoogleApp/

Deploy - nuvens

Deploy – nuvens

9 – Agora é só testar o endereço de sua aplicação nos servidores Cloud do Google, o endereço é composto de sua AppID + .appspot.com:

App Google Cloud

App Google Cloud

Exemplo:

Neste exemplo criamos uma aplicação nas nuvens utilizando a tecnologia Cloud do Google e a linguagem de programação Python:

Utilize este link para ver a aplicação nas nuvens: http://damyapplinux.appspot.com/

Yaml

application: damyapplinux
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.app

libraries:
- name: webapp2
  version: "2.5.2"

Python

#!/usr/bin/env python
#
# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import webapp2

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('<h1>Desenvolvimento Aberto</h1>' + \
                            '</br>Hello world!</br>' + \
                            '<strong>' + \
                            '<font size="3" color="#8A2BE2">Google App Engine!</font>' + \
                            '</strong>')

app = webapp2.WSGIApplication([
    ('/', MainHandler)
], debug=True)

 

O conceito de computação em nuvem em inglês, Cloud Computing, refere-se à utilização da memória e da capacidade de armazenamento e cálculo de computadores e servidores compartilhados e interligados por meio da Internet, seguindo o princípio da computação em grade.

O armazenamento de dados é feito em serviços que poderão ser acessados de qualquer lugar do mundo, a qualquer hora, não havendo necessidade de instalação de programas ou de armazenar dados. O acesso a programas, serviços e arquivos é remoto, através da Internet – daí a alusão à nuvem. O uso desse modelo (ambiente) é mais viável do que o uso de unidades físicas.

SandBox

O SandBox, em português, caixa de areia (onde as crianças brincam e o gato faz caca, nem precisa explicar, não é?), é um ambiente de desenvolvimento utilizado para desenvolvimentos primários, existem vários tipos de ambiente SandBox e geralmente estão associados a uma metodologia de desenvolvimento. Por exemplo, desenvolvimento de grandes aplicações, uma equipe de desenvolvedores podem utilizar o ambiente de SandBox para criar e testar aplicações sem risco de interferir com a configuração do ambiente de desenvolvimento oficial, após a aplicação ser testada ela passa para um ambiente DEV oficial e o ambiente de SandBox é descartado, sendo constantemente atualizado com uma copia do ambiente de desenvolvimento da empresa. Em desenvolvimento para a web, as empresas que permitem programação em seus ambientes, disponibilizam um ambiente de SandBox para que o usuário aprenda a criar aplicações utilizando virtualizações dos seus ambientes de desenvolvimento, porem sem interferir nos mesmos.

Para permitir que o Google App Engine distribua os pedidos para aplicações em vários servidores web, e para evitar uma aplicação de interferir com a outra, o aplicativo é executado em um ambiente de sandboxrestrito.

Google SandBox Python: https://developers.google.com/appengine/docs/python/#Python_The_sandbox

Editor de Código – Python

Você pode utilizar qualquer editor de texto ou IDE para criar suas aplicações Python, recomendamos que para Windows você utilize o editor open source chamado Notepad++ que pode ser baixado clicando aqui.

 

O que você deve saber sobre o Google Cloud

  • O nome da aplicação é chamado de AppID e deve ser único para não haver colisão de nome na web.
  • As boas praticas recomendam criar nomes de aplicação e diretórios utilizando caracteres minúsculos.
  • O servidor web local do Google App Engine é baseado na tecnologia Apache.
  • As portas locais não devem colidir com outras portas em uso por algum servidor web em seu computador.

 

Cloud Google – Criando uma aplicação: Hello World App

Agora que você já sabe os princípios do conceito de programação nas nuvens, vamos criar nosso primeiro programa Cloud, presumimos que você já tenha instalado em seu computador o Google App Engine e a versão do Python 2.7.x.

1- Abra o Google App Engine Launcher, no menu File clique em Create New Application, escolha o nome da aplicação e um diretório para os arquivos de código fonte que serão gerados automaticamente:

AppID

AppID

2 – Dê um duplo clique na sua aplicação, e uma janela o questionara da porta local para o servidor web do App Engine, as portas não devem colidir, escolha uma porta e clique em Update:

Update - Porta

Update – Porta

3 – Com sua aplicação selecionada clique no botão Run e espere até que o ícone da aplicação fique verde:

Run - Ok - verde

Run – Ok – verde

4 – Agora seu servidor web local esta rodando e sua aplicação pode ser testada. Os códigos fontes foram gerados no diretório local que você escolheu quando criou sua aplicação, entre no diretório e abra o arquivo chamado main.py no editor Notepad++:

Notepad++ - Python

Notepad++ – Python

5 – O Google App Engine cria aplicações no modelo MVC, utilize o código abaixo para modificar o código gerado automaticamente, salve e clique no botão Browser, sua aplicação será aberta localmente no seu navegador web:

App - Local

App – Local

6 – Tudo Ok localmente, agora vamos utilizar os servidores Cloud do Google para hospedar nossa aplicação. Você precisa de uma conta do Google, crie caso ainda não tenha, clique no botão Dashbord para criar sua aplicação nos servidores do Google, preencha seu AppID (nome da Aplicação), concorde com os termos de serviço e clique no botão criar:

Dashbord - Google

Dashbord – Google

 

7 – Após criar sua App no ambiente Cloud do Google, clique no botão Deploy para efetuar o Upload do seu programa para as nuvens, forneça o seu e-mail e sua senha para autenticação:

Deploy - Google Cloud

Deploy – Google Cloud

8 – Pronto! Sua App já esta nas nuvens. você pode testar chamando o endereço de sua aplicação no navegador, o endereço é formado pelo AppId mais o caminho do SandBox do Google:

App - Nas Nuvens

App – Nas Nuvens

Exemplo:

Neste programa criamos uma aplicação nas nuvens utilizando a linguagem de programação Python e a tecnologia Cloud dos servidores do Google.

Se você tem uma conta no Google você pode ver esta aplicação clicando aqui:  http://daengineapp01.appspot.com/

Python

main.py

#!/usr/bin/env python
#
# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import webapp2

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('<h1>Desenvolvimento Aberto</h1>' + \
		                    '</br>Hello world!</br>' + \
							'<p><strong>' + \
							'<font size="3" color="#8A2BE2">Google App Engine!</font>' + \
							'</p></strong>')

app = webapp2.WSGIApplication([
    ('/', MainHandler)
], debug=True)

O Google App Engine permite que você construa aplicações web nos mesmos sistemas escaláveis ​​que as aplicações criadas pelo Google.  Os aplicativos App Engine são fáceis de construir, fácil de manter e fácil de escalar. Com o Google App Engine, não há servidores para manter. Se você acabou de fazer upload de seu aplicativo, ele está pronto para servir a seus usuários.

Porque Python ?

Você pode estar se perguntando: Google App Engine também suporta Java e Go, Porque não esses idiomas?”. Para a experiência de aprendizagem mais rápida, Python é a melhor escolha para os novos programadores (é usado para ensinar as crianças como codificar), e também popular com veteranos. Aqui está uma boa explicação para desenvolvedores experientes comparando Python com uma linguagem estaticamente tipada, como C# ou Java ou C++. Ou seja o Google utiliza Python em muitas de suas aplicações e esta apostando nesta linguagem e em futuros desenvolvedores das categorias de base.

Python 2.7.8: https://www.python.org/download

Google App Engine for Python: https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python

Instalando o Google App Engine

1- Após baixar o arquivo com a extensão MSI, você pode o executar como administrador do sistema, caso você não tenha o Python instalado em seu computador o próprio instalador o ajudara a efetuar a instalação:

Download Python

Download Python

2 – Aceite o termo de licença e clique em next:

Licença

Licença

3 – Escolha o local de instalação e as opções de atalhos do aplicativo, caso mude a instalação você precisa configurar o caminho mais tarde na aba preferencias:

Local da instalação

Local da instalação

4 – Após as opções configuradas clique em instalar:

Instalar

Instalar

5 – Aguarde o progresso da instalação:

Progresso

Progresso

6 – Clique em Finish para concluir a instalação:

Concluir

Concluir

7 – Após a instalação abra o Google App Engine, um aviso será mostrado em um janela dizendo que o sistema não sabe onde encontrar a instalação do Python, você precisa configurar o caminho do executável do Python. No menu Edit, Preferences, inclua os dados na opção Python Path:

Instalação do Python

Instalação do Python

Pronto! agora você precisa fechar e abrir novamente o Google App Engine e já estará apto a criar seu primeiro programa com a tecnologia Cloud.

Como criar minha primeira Aplicação Google nas nuvens?

Para criar sua primeira aplicação nas nuvens utilizando Python e a tecnologia Googleclique aqui.