SlideShare a Scribd company logo
1 of 40
App Engine
Getting started for ... Java Developers
@d_danailov
Google App Engine : Intro
Dimitar Danailov
Senior Developer at 158ltd.com
dimityr.danailov[at]gmail.com
Github
Founder at VarnaIT
Senior Developer at 158ltd.com
Google App Engine - Online Demos
Github Code
Topics Today
● Cloud Computing
● What is Google App Engine(GAE) ?
● Architecture of GAE
● Quota & Pricing
● Developing using GAE
● Deploying Applications
● Security
● GAE datastore
● Demo Application
Cloud computing
Classification of cloud computing
What is Google App Engine(GAE) ?
● Google’s platform to build Web Applications on the
cloud
● Dynamic Web server
● Transactional Data Store Model
Why GAE?
● Automatic scaling and load balancing
● Lower total cost of ownership
● Web administration console & utilities
● Enhances developing & deploying of web applications
● Multilanguage support (Java, Python, GO, PHP)
● Fully featured SDK for local development
● Rich set of Google APIs
● Secure environment (Sandbox)
What is Google App
Engine(GAE) ?
Quota & Pricing
● Google App Engine Pricing
● Google Compute Engine
● Google Cloud Storage
● Google BigQuery
● Google Cloud SQL
Application life Cycle
Application Development
using GAE
Development life Cycle
Your first GAE Application
● Hello, World
GAE Services
● Developers are focused on implementing custom
business logic
● Wide range of services available
○ User service
○ Blobstore
○ Task Queues
○ Mail Service
○ Image
○ Memcache, etc
User Services
● Provides a simple API for authentication and
authorization
○ Detect if a user is signed in App
○ Detect if a user is an admin
● Works in combination with web.xml security settings
● Three authentication options
○ Google Account
○ Google Apps domains users
○ OpenID - experimental
User Services Demo
Blobstore Services
● The Blobstore Service allows your application to serve
binary objects, larger than the entities in the Datastore.
● Blobs are created by uploading files through HTTP
○ The upload and store logic is handled by the
Service
○ The HTTP request is redirected to a dispatcher, by
specified by the developer
Blobstore Services
Demo
Task Queues
● Task Queues allow the application to perform work,
initiated by a user request, outside of that request.
● Suitable for triggering background processes
● Different types of queues
○ Push queues
○ Pull queues
○ REST reference
Task Queues Demo
Storing Data
● GAE provides different ways of storing application
data
○ Datastore - provides a noSQL schemaless object
datastore with a query engine and transactions
○ Google Cloud SQL - provides a relation database,
based on MySQL
○ Google Cloud Storage - provides a storage service
for objects and files up to terabytes in size
Storing Data (2)
● Watch a video demonstration comparing the
Master/Slave and High Replication Datastores.
● Watch a video demonstration comparing SQL vs
NoSQL: Battle of the Backends
SQL vs NoSQL : Battle of Backends
Datastore
● Based on Google Big Table
● NoSQL object storage
● Schemaless
● No joins and aggregations
● Hierarchical
● Queries must rung against existing indexes
● Access API using an instance of the DatastoreService
Class
Datastore - Types
● There are two different Datastore types we can use :
○ High Replication Datastore(HRD)
○ Master / Slave Datastore
Datastore - Types (HRD)
● High Replication Datastore(HRD) is replicated across
multiple data centers
○ Highest level of availability
○ Higher latency on writes
○ Query data is eventually consistent
Datastore - Types (Master/Slave)
● Master / Slave Datastore - one data center holds
master copy of the data. Data in the master is
asynchronously copied to the slaves.
○ Periods of unavailability
○ Low latency
○ Highest level on consistency
Datastore - Entities
● Entities - contain key/value pairs
● Each entity has a unique key comprised of :
○ The kind of the entity (Example : Person, Human)
○ An identifier for the the individual entity that can be
:
■ a key name string
■ an integer numeric ID
○ An optional ancestor path locating the entity in the
Datastore hierarchy
Datastore - Entities (2)
● The Entity class
● Creating an Entity
○ Create an instance of the Entity class
○ pass it to the DatastoreService.put() method
● Retrieving an Entity
○ Pass an entity Key to the DatastoreService.get()
● Updating an Entity
○ No different between creating and updating
● Deleting an Entity
○ Pass an entity Key to the DatastoreService.delete()
method
Datastore Entities Demo
Datastore - Queries
● Queries retrieve a number of entities that meet a
specified set of conditions from Datastore
● Queries can specify :
○ Entity kind
○ Zero or more filters, based on entity properties
values
○ Zero or more sort order descriptions
○ Default or you can set a limit clause
● Rung against an existing index
Datastore - Queries (2)
● The Query Class
○ Pass entity kind as constructor parameter
● Adding filters - Datastore Filter Class and setFilter
method
○ Property name
○ Operator - a value, defined in FilterOperator
○ Value - the value to compare to
● Sorting - addsort() method
○ Property name
○ Sort order - a value, defined in SortDirection
Datastore - Queries (3)
● Fetching results
○ Pass a Query instance to the DatastoreService.
prepare() method
○ Use one of the methods of the PreparedQuery
instance, returned as a result
○ Refine your results using FetchOptions
Datastore - Indexes
● Similar to relational database indexes
● Automatic indexed created for some queries
● Other queries require indexes to be manually created
in the datastore-indexes.xml. They include :
○ Queries with multiple sort orders
○ Queries with a sort order on keys in descending
order
○ Queries with one or more inequality filters on a
property and one or more equality filters on other
properties, etc.
Datastore - Indexes
● Similar to relational database indexes
● Automatic indexed created for some queries
● Other queries require indexes to be manually created
in the datastore-indexes.xml. They include :
○ Queries with multiple sort orders
○ Queries with a sort order on keys in descending
order
○ Queries with one or more inequality filters on a
property and one or more equality filters on other
properties, etc.
Queries Demo
Datastore - Transactions
● Transactions - a set of atomic operations
● Transaction type :
○ Default transactions - work on a single entity
○ Cross - group (XG) transactions - work on different
entity groups
● Getting a Transaction instance - DatastoreService.
beginTransaction()
● Manipulating a transaction
○ Transaction.commit() - confirm changes
○ Transaction.rollback - rollback changes, restore
previous state
Datastore Transactions
Demo
Questions ?
Dimitar Danailov
Senior Developer at 158ltd.com
dimityr.danailov[at]gmail.com
Github
Founder at VarnaIT
Senior Developer at 158ltd.com
Google App Engine - Online Demos
Github Code

More Related Content

Viewers also liked

Introduction to Amazon Web Services
Introduction to Amazon Web ServicesIntroduction to Amazon Web Services
Introduction to Amazon Web ServicesAmazon Web Services
 
Real time data management on wsn
Real time data management on wsnReal time data management on wsn
Real time data management on wsnTAIWAN
 
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App EngineJava Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App EngineIMC Institute
 
Google docs slides- forms
Google docs  slides- formsGoogle docs  slides- forms
Google docs slides- formsjuliewest355
 
Java Support On Google App Engine
Java Support On Google App EngineJava Support On Google App Engine
Java Support On Google App EngineXebia IT Architects
 
Hello World Python featuring GAE
Hello World Python featuring GAEHello World Python featuring GAE
Hello World Python featuring GAEMaito Kuwahara
 
Announcing Databricks Cloud (Spark Summit 2014)
Announcing Databricks Cloud (Spark Summit 2014)Announcing Databricks Cloud (Spark Summit 2014)
Announcing Databricks Cloud (Spark Summit 2014)Databricks
 
App Engine Overview @ Google Hackathon SXSW 2010
App Engine Overview @ Google Hackathon SXSW 2010App Engine Overview @ Google Hackathon SXSW 2010
App Engine Overview @ Google Hackathon SXSW 2010Chris Schalk
 
Platform as a Service with Kubernetes and Mesos
Platform as a Service with Kubernetes and Mesos Platform as a Service with Kubernetes and Mesos
Platform as a Service with Kubernetes and Mesos Miguel Zuniga
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest FeaturesChris Schalk
 
Spark Summit San Francisco 2016 - Ali Ghodsi Keynote
Spark Summit San Francisco 2016 - Ali Ghodsi KeynoteSpark Summit San Francisco 2016 - Ali Ghodsi Keynote
Spark Summit San Francisco 2016 - Ali Ghodsi KeynoteDatabricks
 
Gentle App Engine Intro
Gentle App Engine IntroGentle App Engine Intro
Gentle App Engine Introrobinb123
 
Google Docs Presentation
Google Docs PresentationGoogle Docs Presentation
Google Docs Presentationdondonlau
 

Viewers also liked (20)

Introduction to Amazon Web Services
Introduction to Amazon Web ServicesIntroduction to Amazon Web Services
Introduction to Amazon Web Services
 
Sensor Data Management
Sensor Data ManagementSensor Data Management
Sensor Data Management
 
Real time data management on wsn
Real time data management on wsnReal time data management on wsn
Real time data management on wsn
 
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App EngineJava Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
 
Python Gae django
Python Gae djangoPython Gae django
Python Gae django
 
Google docs slides- forms
Google docs  slides- formsGoogle docs  slides- forms
Google docs slides- forms
 
Desarrollo con JSF
Desarrollo con JSFDesarrollo con JSF
Desarrollo con JSF
 
Java Support On Google App Engine
Java Support On Google App EngineJava Support On Google App Engine
Java Support On Google App Engine
 
Google App Engine tutorial
Google App Engine tutorialGoogle App Engine tutorial
Google App Engine tutorial
 
Hello World Python featuring GAE
Hello World Python featuring GAEHello World Python featuring GAE
Hello World Python featuring GAE
 
Announcing Databricks Cloud (Spark Summit 2014)
Announcing Databricks Cloud (Spark Summit 2014)Announcing Databricks Cloud (Spark Summit 2014)
Announcing Databricks Cloud (Spark Summit 2014)
 
App Engine Overview @ Google Hackathon SXSW 2010
App Engine Overview @ Google Hackathon SXSW 2010App Engine Overview @ Google Hackathon SXSW 2010
App Engine Overview @ Google Hackathon SXSW 2010
 
PuttingItAllTogether
PuttingItAllTogetherPuttingItAllTogether
PuttingItAllTogether
 
Google Docs
Google DocsGoogle Docs
Google Docs
 
Platform as a Service with Kubernetes and Mesos
Platform as a Service with Kubernetes and Mesos Platform as a Service with Kubernetes and Mesos
Platform as a Service with Kubernetes and Mesos
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
 
Spark Summit San Francisco 2016 - Ali Ghodsi Keynote
Spark Summit San Francisco 2016 - Ali Ghodsi KeynoteSpark Summit San Francisco 2016 - Ali Ghodsi Keynote
Spark Summit San Francisco 2016 - Ali Ghodsi Keynote
 
Gentle App Engine Intro
Gentle App Engine IntroGentle App Engine Intro
Gentle App Engine Intro
 
Intro to Google Apps
Intro to Google AppsIntro to Google Apps
Intro to Google Apps
 
Google Docs Presentation
Google Docs PresentationGoogle Docs Presentation
Google Docs Presentation
 

More from Dimitar Danailov

Evolution - ReConnect() 2019
Evolution - ReConnect() 2019Evolution - ReConnect() 2019
Evolution - ReConnect() 2019Dimitar Danailov
 
Data Visualization and D3Js
Data Visualization and D3JsData Visualization and D3Js
Data Visualization and D3JsDimitar Danailov
 
#Productivity - {S:01 Ep:03}
#Productivity - {S:01 Ep:03} #Productivity - {S:01 Ep:03}
#Productivity - {S:01 Ep:03} Dimitar Danailov
 
#Productivity - {S:01 Ep:02}
#Productivity - {S:01 Ep:02}#Productivity - {S:01 Ep:02}
#Productivity - {S:01 Ep:02}Dimitar Danailov
 
Cloud Conf Varna - Cloud Application with AWS Lambda functions
Cloud Conf Varna - Cloud Application with AWS Lambda functionsCloud Conf Varna - Cloud Application with AWS Lambda functions
Cloud Conf Varna - Cloud Application with AWS Lambda functionsDimitar Danailov
 
DEV.BG - Angular 1 and Jasmine (Unit Testing and TDD)
DEV.BG - Angular 1 and Jasmine (Unit Testing and TDD)DEV.BG - Angular 1 and Jasmine (Unit Testing and TDD)
DEV.BG - Angular 1 and Jasmine (Unit Testing and TDD)Dimitar Danailov
 
Building modern Progressive Web Apps with Polymer
Building modern Progressive Web Apps with PolymerBuilding modern Progressive Web Apps with Polymer
Building modern Progressive Web Apps with PolymerDimitar Danailov
 
Typescript - MentorMate Academy
Typescript - MentorMate AcademyTypescript - MentorMate Academy
Typescript - MentorMate AcademyDimitar Danailov
 
HackConf2016 - Ruby on Rails: Unexpected journey
HackConf2016 - Ruby on Rails: Unexpected journeyHackConf2016 - Ruby on Rails: Unexpected journey
HackConf2016 - Ruby on Rails: Unexpected journeyDimitar Danailov
 
Microservices - Code Voyagers Sofia
Microservices - Code Voyagers SofiaMicroservices - Code Voyagers Sofia
Microservices - Code Voyagers SofiaDimitar Danailov
 
Mongo DB Terms - Mentormate Academy
Mongo DB Terms - Mentormate AcademyMongo DB Terms - Mentormate Academy
Mongo DB Terms - Mentormate AcademyDimitar Danailov
 
Startup Europe Week - Cloud Conf Varna & GDG Varna
Startup Europe Week - Cloud Conf Varna & GDG VarnaStartup Europe Week - Cloud Conf Varna & GDG Varna
Startup Europe Week - Cloud Conf Varna & GDG VarnaDimitar Danailov
 
MicroServices: Advantages ans Disadvantages
MicroServices: Advantages ans DisadvantagesMicroServices: Advantages ans Disadvantages
MicroServices: Advantages ans DisadvantagesDimitar Danailov
 
Softuni.bg - Microservices
Softuni.bg - MicroservicesSoftuni.bg - Microservices
Softuni.bg - MicroservicesDimitar Danailov
 
Cloud Conf Varna: Vagrant and Amazon
Cloud Conf Varna: Vagrant and AmazonCloud Conf Varna: Vagrant and Amazon
Cloud Conf Varna: Vagrant and AmazonDimitar Danailov
 
HackConf2015 - Ruby on Rails: Unexpected journey
HackConf2015 - Ruby on Rails: Unexpected journeyHackConf2015 - Ruby on Rails: Unexpected journey
HackConf2015 - Ruby on Rails: Unexpected journeyDimitar Danailov
 

More from Dimitar Danailov (20)

Evolution - ReConnect() 2019
Evolution - ReConnect() 2019Evolution - ReConnect() 2019
Evolution - ReConnect() 2019
 
Data Visualization and D3Js
Data Visualization and D3JsData Visualization and D3Js
Data Visualization and D3Js
 
#Productivity - {S:01 Ep:03}
#Productivity - {S:01 Ep:03} #Productivity - {S:01 Ep:03}
#Productivity - {S:01 Ep:03}
 
#Productivity - {S:01 Ep:02}
#Productivity - {S:01 Ep:02}#Productivity - {S:01 Ep:02}
#Productivity - {S:01 Ep:02}
 
#Productivity s01 ep02
#Productivity s01 ep02#Productivity s01 ep02
#Productivity s01 ep02
 
#Productivity s01 ep01
#Productivity s01 ep01#Productivity s01 ep01
#Productivity s01 ep01
 
Cloud Conf Varna - Cloud Application with AWS Lambda functions
Cloud Conf Varna - Cloud Application with AWS Lambda functionsCloud Conf Varna - Cloud Application with AWS Lambda functions
Cloud Conf Varna - Cloud Application with AWS Lambda functions
 
DEV.BG - Angular 1 and Jasmine (Unit Testing and TDD)
DEV.BG - Angular 1 and Jasmine (Unit Testing and TDD)DEV.BG - Angular 1 and Jasmine (Unit Testing and TDD)
DEV.BG - Angular 1 and Jasmine (Unit Testing and TDD)
 
Building modern Progressive Web Apps with Polymer
Building modern Progressive Web Apps with PolymerBuilding modern Progressive Web Apps with Polymer
Building modern Progressive Web Apps with Polymer
 
Typescript - MentorMate Academy
Typescript - MentorMate AcademyTypescript - MentorMate Academy
Typescript - MentorMate Academy
 
HackConf2016 - Ruby on Rails: Unexpected journey
HackConf2016 - Ruby on Rails: Unexpected journeyHackConf2016 - Ruby on Rails: Unexpected journey
HackConf2016 - Ruby on Rails: Unexpected journey
 
Microservices - Code Voyagers Sofia
Microservices - Code Voyagers SofiaMicroservices - Code Voyagers Sofia
Microservices - Code Voyagers Sofia
 
Mongo DB Terms - Mentormate Academy
Mongo DB Terms - Mentormate AcademyMongo DB Terms - Mentormate Academy
Mongo DB Terms - Mentormate Academy
 
Startup Europe Week - Cloud Conf Varna & GDG Varna
Startup Europe Week - Cloud Conf Varna & GDG VarnaStartup Europe Week - Cloud Conf Varna & GDG Varna
Startup Europe Week - Cloud Conf Varna & GDG Varna
 
GDG Varna - Hadoop
GDG Varna - HadoopGDG Varna - Hadoop
GDG Varna - Hadoop
 
MicroServices: Advantages ans Disadvantages
MicroServices: Advantages ans DisadvantagesMicroServices: Advantages ans Disadvantages
MicroServices: Advantages ans Disadvantages
 
GDG Varna - EcmaScript 6
GDG Varna - EcmaScript 6GDG Varna - EcmaScript 6
GDG Varna - EcmaScript 6
 
Softuni.bg - Microservices
Softuni.bg - MicroservicesSoftuni.bg - Microservices
Softuni.bg - Microservices
 
Cloud Conf Varna: Vagrant and Amazon
Cloud Conf Varna: Vagrant and AmazonCloud Conf Varna: Vagrant and Amazon
Cloud Conf Varna: Vagrant and Amazon
 
HackConf2015 - Ruby on Rails: Unexpected journey
HackConf2015 - Ruby on Rails: Unexpected journeyHackConf2015 - Ruby on Rails: Unexpected journey
HackConf2015 - Ruby on Rails: Unexpected journey
 

Recently uploaded

Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxJisc
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxJisc
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxPooja Bhuva
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jisc
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.christianmathematics
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17Celine George
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxPooja Bhuva
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxEsquimalt MFRC
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Jisc
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxCeline George
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfAdmir Softic
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Pooja Bhuva
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxRamakrishna Reddy Bijjam
 
Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - Englishneillewis46
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfPoh-Sun Goh
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the ClassroomPooky Knightsmith
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptx
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - English
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
 

Google App Engine - Intro

  • 1. App Engine Getting started for ... Java Developers @d_danailov
  • 2. Google App Engine : Intro Dimitar Danailov Senior Developer at 158ltd.com dimityr.danailov[at]gmail.com Github Founder at VarnaIT Senior Developer at 158ltd.com Google App Engine - Online Demos Github Code
  • 3. Topics Today ● Cloud Computing ● What is Google App Engine(GAE) ? ● Architecture of GAE ● Quota & Pricing ● Developing using GAE ● Deploying Applications ● Security ● GAE datastore ● Demo Application
  • 6. What is Google App Engine(GAE) ? ● Google’s platform to build Web Applications on the cloud ● Dynamic Web server ● Transactional Data Store Model
  • 7. Why GAE? ● Automatic scaling and load balancing ● Lower total cost of ownership ● Web administration console & utilities ● Enhances developing & deploying of web applications ● Multilanguage support (Java, Python, GO, PHP) ● Fully featured SDK for local development ● Rich set of Google APIs ● Secure environment (Sandbox)
  • 8. What is Google App Engine(GAE) ?
  • 9.
  • 10. Quota & Pricing ● Google App Engine Pricing ● Google Compute Engine ● Google Cloud Storage ● Google BigQuery ● Google Cloud SQL
  • 14. Your first GAE Application ● Hello, World
  • 15. GAE Services ● Developers are focused on implementing custom business logic ● Wide range of services available ○ User service ○ Blobstore ○ Task Queues ○ Mail Service ○ Image ○ Memcache, etc
  • 16. User Services ● Provides a simple API for authentication and authorization ○ Detect if a user is signed in App ○ Detect if a user is an admin ● Works in combination with web.xml security settings ● Three authentication options ○ Google Account ○ Google Apps domains users ○ OpenID - experimental
  • 18. Blobstore Services ● The Blobstore Service allows your application to serve binary objects, larger than the entities in the Datastore. ● Blobs are created by uploading files through HTTP ○ The upload and store logic is handled by the Service ○ The HTTP request is redirected to a dispatcher, by specified by the developer
  • 20. Task Queues ● Task Queues allow the application to perform work, initiated by a user request, outside of that request. ● Suitable for triggering background processes ● Different types of queues ○ Push queues ○ Pull queues ○ REST reference
  • 22. Storing Data ● GAE provides different ways of storing application data ○ Datastore - provides a noSQL schemaless object datastore with a query engine and transactions ○ Google Cloud SQL - provides a relation database, based on MySQL ○ Google Cloud Storage - provides a storage service for objects and files up to terabytes in size
  • 23. Storing Data (2) ● Watch a video demonstration comparing the Master/Slave and High Replication Datastores. ● Watch a video demonstration comparing SQL vs NoSQL: Battle of the Backends
  • 24. SQL vs NoSQL : Battle of Backends
  • 25. Datastore ● Based on Google Big Table ● NoSQL object storage ● Schemaless ● No joins and aggregations ● Hierarchical ● Queries must rung against existing indexes ● Access API using an instance of the DatastoreService Class
  • 26. Datastore - Types ● There are two different Datastore types we can use : ○ High Replication Datastore(HRD) ○ Master / Slave Datastore
  • 27. Datastore - Types (HRD) ● High Replication Datastore(HRD) is replicated across multiple data centers ○ Highest level of availability ○ Higher latency on writes ○ Query data is eventually consistent
  • 28. Datastore - Types (Master/Slave) ● Master / Slave Datastore - one data center holds master copy of the data. Data in the master is asynchronously copied to the slaves. ○ Periods of unavailability ○ Low latency ○ Highest level on consistency
  • 29. Datastore - Entities ● Entities - contain key/value pairs ● Each entity has a unique key comprised of : ○ The kind of the entity (Example : Person, Human) ○ An identifier for the the individual entity that can be : ■ a key name string ■ an integer numeric ID ○ An optional ancestor path locating the entity in the Datastore hierarchy
  • 30. Datastore - Entities (2) ● The Entity class ● Creating an Entity ○ Create an instance of the Entity class ○ pass it to the DatastoreService.put() method ● Retrieving an Entity ○ Pass an entity Key to the DatastoreService.get() ● Updating an Entity ○ No different between creating and updating ● Deleting an Entity ○ Pass an entity Key to the DatastoreService.delete() method
  • 32. Datastore - Queries ● Queries retrieve a number of entities that meet a specified set of conditions from Datastore ● Queries can specify : ○ Entity kind ○ Zero or more filters, based on entity properties values ○ Zero or more sort order descriptions ○ Default or you can set a limit clause ● Rung against an existing index
  • 33. Datastore - Queries (2) ● The Query Class ○ Pass entity kind as constructor parameter ● Adding filters - Datastore Filter Class and setFilter method ○ Property name ○ Operator - a value, defined in FilterOperator ○ Value - the value to compare to ● Sorting - addsort() method ○ Property name ○ Sort order - a value, defined in SortDirection
  • 34. Datastore - Queries (3) ● Fetching results ○ Pass a Query instance to the DatastoreService. prepare() method ○ Use one of the methods of the PreparedQuery instance, returned as a result ○ Refine your results using FetchOptions
  • 35. Datastore - Indexes ● Similar to relational database indexes ● Automatic indexed created for some queries ● Other queries require indexes to be manually created in the datastore-indexes.xml. They include : ○ Queries with multiple sort orders ○ Queries with a sort order on keys in descending order ○ Queries with one or more inequality filters on a property and one or more equality filters on other properties, etc.
  • 36. Datastore - Indexes ● Similar to relational database indexes ● Automatic indexed created for some queries ● Other queries require indexes to be manually created in the datastore-indexes.xml. They include : ○ Queries with multiple sort orders ○ Queries with a sort order on keys in descending order ○ Queries with one or more inequality filters on a property and one or more equality filters on other properties, etc.
  • 38. Datastore - Transactions ● Transactions - a set of atomic operations ● Transaction type : ○ Default transactions - work on a single entity ○ Cross - group (XG) transactions - work on different entity groups ● Getting a Transaction instance - DatastoreService. beginTransaction() ● Manipulating a transaction ○ Transaction.commit() - confirm changes ○ Transaction.rollback - rollback changes, restore previous state
  • 40. Questions ? Dimitar Danailov Senior Developer at 158ltd.com dimityr.danailov[at]gmail.com Github Founder at VarnaIT Senior Developer at 158ltd.com Google App Engine - Online Demos Github Code