SlideShare a Scribd company logo
1 of 45
Download to read offline
Prototyping Apps with Elasticsearch and Heroku
October 29th 2015
Protofy
Martin and Mike:
Prototyping with Heroku
and Elasticsearch
Protofy builds Prototypes.
Salad-Delivery-Service: From idea to first shipped salad -> 4days.


- Validation of the concept in a prototype 

- Live-Launch in March 2015

- Continuous prototyping while quickly growing key KPIs

- Seed-Financing in October, November
Protofy builds Prototypes.
Voicefile transcoding and indexing for callcenters
client-a.com:

- Validation of the concept in a prototype 

- Excessive usage of Elasticsearch as main database



=> THIS is the FIRST project we will show deeper.
Protofy builds Prototypes.
Automatic news aggregation by given list of keywords and synonyms.
client-b.com:

- Validation of the concept in a prototype 

- Excessive usage of Elasticsearch to filter feed items and merge them



=> THIS is the SECOND project we will show deeper.
And big infrastructure.
Education Community Framework with Log-Everything strategy.
PokerStrategy.com:

- 7 Mio members (2007-2013)

- up to 1 Billion pageviews/year

- sold in mid 2013



After that 2 companies have been found: DECK36 and Feelgood. Both merged in early
2015 to PROTOFY.
Prototyping with Heroku.

Focus on the app.
Heroku: Platform as a service.
Prebuilt VMs for different programming languages

- deployment via git

- customizable with build-packs and add-ons

- easily scalable

- full logging of each part of the app and process

- releases: Easy rollback on errors

- heroku toolbelt to support local execution
Heroku: Prepare your app
- Apps using other infrastructural services like MongoDB or Redis need to be aware of
environment variables
For example: Elasticsearch-service BONSAI provides: 

BONSAI_URL=https://user:pw@host.bonsai.io
- Use environment variables for everthing dependent.
- In general relay on the (Attention. Buzzword.) http://12factor.net/ methodology.
Buzzwording: 12 Factors
I. Codebase
One codebase tracked in revision control, many
deploys

II. Dependencies
Explicitly declare and isolate dependencies

III. Config
Store config in the environment

IV. Backing Services
Treat backing services as attached resources

V. Build, release, run
Strictly separate build and run stages

VI. Processes
Execute the app as one or more stateless
processes
VII. Port binding
Export services via port binding

VIII. Concurrency
Scale out via the process model

IX. Disposability
Maximize robustness with fast startup and graceful
shutdown

X. Dev/prod parity
Keep development, staging, and production as similar as
possible

XI. Logs
Treat logs as event streams

XII. Admin processes
Run admin/management tasks as one-off processes
Heroku: add-ons
- Logentries
- NewRelic
- Bonsai-Elasticsearch
- MongoLabs
- Scheduler
- SSL
TIP: Care about backups! Even if they promise to do.
Heroku: Test before deploy
CONTINUOUS DEPLOYMENT using codehip.io (or others)
git
bitbucket
codeship test heroku
Terraforming.

Infrastructure as code.
Heroku: Infrastructure as a service.
- deployment via git
- a lot of add ons
- individual scaling of parts of the app
- process isolation
- full logging of each part of the app and process
- easy-to-use command line tools
- supports several languages (NodeJS, PHP, Rails, etc.
- releases: Easy rollback on errors.
- heroku toolbelt to support local execution like it would be on heroku with Foreman
TERRAFORM
Build,'Combine,'and'Launch'Infrastructure
from automatic provisioning of servers ...
Configuration as Code
Infrastructure as Code
… to automatic provisioning of services.
Why do we need that?
As with Configuration Management:
-Replace “click-paths” with source code
-Reproducible Environment
-Versioning in SCM
-Specification and Documentation
What does it do?
Configuration Language for Services
Actions:
-Plan
-Apply
-Refresh
-Destroy
What does it manage?
Providers:
- Google Cloud

- AWS

- Azure

- Heroku

- DNSMadeEasy

- …
Resources:
- aws_instance

- aws_vpc

- azure_instance

- heroku_app

- …
Provisioners:
- chef

- file

- exec
Example (part 1)
###	
  AWS	
  Setup
provider	
  "aws"	
  {
	
  	
  access_key	
  =	
  "${var.aws_access_key}"
	
  	
  secret_key	
  =	
  "${var.aws_secret_key}"
	
  	
  region	
  	
  	
  	
  	
  =	
  "${var.aws_region}"
}
#	
  Queue	
  between	
  importer	
  and	
  analyzer
resource	
  "aws_sqs_queue"	
  "importqueue"	
  {
	
  	
  name	
  =	
  "${var.app_name}-­‐${var.app_env}-­‐import-­‐queue"
}
resource	
  "aws_s3_bucket"	
  "importdisk"	
  {
	
  	
  bucket	
  =	
  "${var.app_name}-­‐${var.app_env}-­‐app-­‐importer"
	
  	
  acl	
  	
  	
  	
  =	
  "private"
}	
  
Example (part 2)
###	
  Heroku	
  Setup
provider	
  "heroku"	
  {...}
#	
  App	
  EntityImporter
resource	
  "heroku_app"	
  "importer"	
  {
	
  	
  name	
  =	
  "${var.app_name}-­‐${var.app_env}-­‐importer"
	
  	
  config_vars	
  {
	
  	
  	
  	
  SQS_REGION	
  	
  	
  	
  =	
  "${var.aws_region}"
	
  	
  	
  	
  SQS_QUEUE_URL	
  =	
  "${aws_sqs_queue.importqueue.id}"
	
  	
  	
  	
  S3_BUCKET	
  	
  	
  	
  	
  =	
  "${aws_s3_bucket.importdisk.id}"
	
  	
  	
  	
  NODE_ENV	
  	
  	
  	
  	
  	
  =	
  "${var.app_env}"
	
  	
  }
}
resource	
  "heroku_addon"	
  "mongolab"	
  {
	
  	
  app	
  	
  =	
  "${heroku_app.importer.name}"
	
  	
  plan	
  =	
  "mongolab:sandbox"
}
Graph
Live-Demo
Launch application
terraform plan
terraform apply
terraform show
terraform destroy
Comparable Software
– AWS CloudFormation
– HEAT, OpenStack orchestration
– boto, Python AWS library
– fog, Ruby cloud abstraction library
Problems
– Version 0.6
– Still a few bugs
– Provider coverage
– Modules too simple
– Lacking syntactic sugar
Software as a service.
Elasticsearch.
Elasticsearch Service
Let other do the dirty work.


- Relatively complex setup with Shards and Replicas is maintained by specialists.
- Backups and version upgrades are done by these specialists, too.
- But 1: If version upgrades are announced YOU have to take action.
- But 2: Backups SHOULD be done by the specialists. In some cases they cannot provide consistent
backups and that can lead to data loss. => Care about them yourself.
- But 3: If you need plugins: in the non-dedicated plans you cannot install them.
Decide well if or if not to use a service or do it yourself.
The projects.
Short overview.
client-a.com
Voicefile transcoding and indexing for callcenters


- Make telephone calls searchable

- AccessManagement per Callcenter and Customer

- Fast responses and results

- Mobile

- Be able to white label
Callcenter
client-b.com
Automatic content aggregation based on editor’s given input.


- Have up to 250.000 news items/day related to a topic from blogs, twitter/facebook/
instagram and other configurable sources.

- Have automatic sorting and merging of similar items into stories.

- Be nearly realtime

- Make editing of main stories possible

- Mobile first
Elasticsearch.
Some magic for the app.
Elasticsearch: General
Search server based on Lucene. Providing RESTful web interface for JSON documents.


- Near real-time search.
- Sophisticated mapping configuration options. => Where the magic comes from.
- Highly scaleable and available.
- Conflict management with optimistic version control to avoid dataloss during concurrent write
operations.
- Supporting Plugins for different areas (Like Filters, Queries, Analyzers etc.)
Elasticsearch: client-a.com
Elasticsearch as main database
- Provide several states of a document based on the state of processing. Always
findable and restricted by ACLs

How to reach that?
Elasticsearch: client-a.com
Restrict access by ACLs for „normal“ search
1. Check if user is allowed to access groups trying to request documents for.
2. If yes: Build query with filter restricting results to customers and callcenters based
on ACL.
Find documents

related to callcenter1and callcenter2
{

"query": {

"filtered": {

"query": {

"query_string": {

"default_operator": "AND",

"minimum_should_match": "55%",

"auto_generate_phrase_queries": true,

"phrase_slop": 3,

"fields": [

"tags^2",

"transscript"

],

"query": "*"

}

},

"filter": {

"bool": {

"must": [

{

"range": {

"lastUpdated": {

"gte": "now-24h",

"lte": "2015-10-25T17:34:24+00:00"

}

}

},

{

"range": {

"lastUpdated": {

"gte": "2015-08-30T21:04:08+00:00"

}

}

},

{

"bool": {

"should": [

{

"term": {

"source.callcenter": "callcenter1"

}

},

{

"term": {

"source.callcenter": "callcenter2"

}

}

]

}

}

]

}

}

}

}

}
{

"query": {

"filtered": {

"query": {

"query_string": {

"default_operator": "AND",

"minimum_should_match": "55%",

"auto_generate_phrase_queries": true,

"phrase_slop": 3,

"fields": [

"tags^2",

"transscript.texts.contents"

],

"query": "*"

}

},

"filter": {

"bool": {

"must": [

{

"range": {

"lastUpdated": {

"gte": "now-24h",

"lte": "2015-10-25T17:34:24+00:00"

}

}

},

{

"range": {

"lastUpdated": {

"gte": "2015-08-30T21:04:08+00:00"

}

}

},

{

"bool": {

"should": [

{

"term": {

"source.callcenter": "callcenter1"

}

},

{

"term": {

"source.callcenter": "callcenter2"

}

}

]

}

}

]

}

}

}

}

}
Elasticsearch: client-a.com
Restrict access for suggests
1. Completion suggests are special handling for really fast autocompletion

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html
2. How to make suggestions context (ACL) aware?
{

"body": {

"suggest": {

"text": "Agent 007",

"completion": {

"field": "agent.suggest",

"size": 20,

"fuzzy": false,

"context": {

"customer": [

"customer1",

"customer4"

],

"callcenter": [

"callcenter1",

"callcenter2"

]

}

}

}

}

}
Find suggestions related to context
{

"agent": {

"type": "multi_field",

"fields": {

"agent": {

"type": "string",

"copy_to": "autocompletion"

},

"autocompletion": {

"type": "string",

"index_analyzer": "edgeNGram_analyzer_suggest"

},

"suggest": {

"type": "completion",

"index_analyzer": "nGram_analyzer_suggest2",

"search_analyzer": "whitespace_analyzer",

"max_input_length": 20,

"context": {

"customer": {

"type": "category",

"path": "source.customer_lowercase"

},

"callcenter": {

"type": "category",

"path": "source.callcenter_lowercase"

}

}

}

},

"include_in_all": false

}

}
Query Mapping
Elasticsearch: client-b.com
Elasticsearch to find similar articles and match them to stories
- Index stories and automatically find entities within the articles text
- Match similar articles to at least one story (based on entities) and context

How to do that?
Elasticsearch: client-b.com
Entity matching by list of keep words and aliases
1. Create a list of synonyms and keep words to be used in filters.

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-keep-words-tokenfilter.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html
2. Index document 1st time to find entities based on keep words and synonyms.
3. Take document enriched with entities to build a query from it to match against the set of documents to find
similar articles.
4. Combine them to a story.
Setting for matching entities
"settings": {

"analysis": {

"filter": {},

"analyzer": {

"entity_analyzer": {

"tokenizer": "whitespace",

"filter": [

"german_stop",

"shingle",

"entity_synonym",

"shingle",

"entity_keepwords"

]

}

}

}

},
Live-Demo
Check how entities are matched in a text


1. ./load_entities_list
2. curl -XGET "localhost:9200/talk/_analyze?analyzer=entity_analyzer&pretty=true" -d "Text"
=> Document is indexed with found entities on indexing time. Analyzing process is like
operating on a stream.
Martin Schütte and Mike Lohmann
Protofy

Kaiser-Wilhelm-Straße 85

20355 Hamburg


martin@protofy.com

mike@protofy.com

More Related Content

What's hot

I Love APIs 2015: Apache Usergrid Web Scale Mobile APIs with Elastic Search a...
I Love APIs 2015: Apache Usergrid Web Scale Mobile APIs with Elastic Search a...I Love APIs 2015: Apache Usergrid Web Scale Mobile APIs with Elastic Search a...
I Love APIs 2015: Apache Usergrid Web Scale Mobile APIs with Elastic Search a...Apigee | Google Cloud
 
01 startoff angularjs
01 startoff angularjs01 startoff angularjs
01 startoff angularjsErhwen Kuo
 
Full Stack Developer
Full Stack DeveloperFull Stack Developer
Full Stack DeveloperAkbar Uddin
 
Parse cloud code
Parse cloud codeParse cloud code
Parse cloud code維佋 唐
 
Integrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudIntegrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudAtlassian
 
自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-sinsoku listy
 
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitInfrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitDanilo Poccia
 
Spring Projects Infrastructure
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects InfrastructureGunnar Hillert
 
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitInfrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitDanilo Poccia
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...Amazon Web Services
 
API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)
API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)
API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)Les-Tilleuls.coop
 
API Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven ProjectsAPI Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven ProjectsLes-Tilleuls.coop
 
AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings Adam Book
 
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...Amazon Web Services
 
Riak Intro at Munich Node.js
Riak Intro at Munich Node.jsRiak Intro at Munich Node.js
Riak Intro at Munich Node.jsPhilipp Fehre
 
AWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar SeriesAWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar SeriesAmazon Web Services
 

What's hot (20)

I Love APIs 2015: Apache Usergrid Web Scale Mobile APIs with Elastic Search a...
I Love APIs 2015: Apache Usergrid Web Scale Mobile APIs with Elastic Search a...I Love APIs 2015: Apache Usergrid Web Scale Mobile APIs with Elastic Search a...
I Love APIs 2015: Apache Usergrid Web Scale Mobile APIs with Elastic Search a...
 
01 startoff angularjs
01 startoff angularjs01 startoff angularjs
01 startoff angularjs
 
Full Stack Developer
Full Stack DeveloperFull Stack Developer
Full Stack Developer
 
Parse cloud code
Parse cloud codeParse cloud code
Parse cloud code
 
Integrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software CloudIntegrate CI/CD Pipelines with Jira Software Cloud
Integrate CI/CD Pipelines with Jira Software Cloud
 
自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-自己修復的なインフラ -Self-Healing Infrastructure-
自己修復的なインフラ -Self-Healing Infrastructure-
 
Node.js and Parse
Node.js and ParseNode.js and Parse
Node.js and Parse
 
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitInfrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with Git
 
Deep Dive: AWS CloudFormation
Deep Dive: AWS CloudFormationDeep Dive: AWS CloudFormation
Deep Dive: AWS CloudFormation
 
Spring Projects Infrastructure
Spring Projects InfrastructureSpring Projects Infrastructure
Spring Projects Infrastructure
 
Infrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with GitInfrastructure as Code: Manage your Architecture with Git
Infrastructure as Code: Manage your Architecture with Git
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
 
API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)
API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)
API Platform 2.1: when Symfony meets ReactJS (Symfony Live 2017)
 
API Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven ProjectsAPI Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven Projects
 
Firebase slide
Firebase slideFirebase slide
Firebase slide
 
AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings AWS CloudFormation Intrinsic Functions and Mappings
AWS CloudFormation Intrinsic Functions and Mappings
 
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...
(APP306) Using AWS CloudFormation for Deployment and Management at Scale | AW...
 
Orchestrating the Cloud
Orchestrating the CloudOrchestrating the Cloud
Orchestrating the Cloud
 
Riak Intro at Munich Node.js
Riak Intro at Munich Node.jsRiak Intro at Munich Node.js
Riak Intro at Munich Node.js
 
AWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar SeriesAWS Infrastructure as Code - September 2016 Webinar Series
AWS Infrastructure as Code - September 2016 Webinar Series
 

Viewers also liked

Using elasticsearch with rails
Using elasticsearch with railsUsing elasticsearch with rails
Using elasticsearch with railsTom Z Zeng
 
Yachting.vg Magazine - Luxury Yacht Brokerage and Yacht Charter - April 2011
Yachting.vg Magazine - Luxury Yacht Brokerage and Yacht Charter - April 2011Yachting.vg Magazine - Luxury Yacht Brokerage and Yacht Charter - April 2011
Yachting.vg Magazine - Luxury Yacht Brokerage and Yacht Charter - April 2011Yachting.vg
 
Industrial relations - Self-employed workers: industrial relations and workin...
Industrial relations - Self-employed workers: industrial relations and workin...Industrial relations - Self-employed workers: industrial relations and workin...
Industrial relations - Self-employed workers: industrial relations and workin...Eurofound
 
Certification guide series ibm tivoli netcool webtop v2.0 implementationsg247754
Certification guide series ibm tivoli netcool webtop v2.0 implementationsg247754Certification guide series ibm tivoli netcool webtop v2.0 implementationsg247754
Certification guide series ibm tivoli netcool webtop v2.0 implementationsg247754Banking at Ho Chi Minh city
 
Storm Technologies Value Added Services Brochure
Storm Technologies Value Added Services BrochureStorm Technologies Value Added Services Brochure
Storm Technologies Value Added Services BrochureBen Morrison
 
Daytime running-light-lightday-application-guide--2012-gb
Daytime running-light-lightday-application-guide--2012-gbDaytime running-light-lightday-application-guide--2012-gb
Daytime running-light-lightday-application-guide--2012-gbJuan Carlos Camelo Granados
 
Architecting for the cloud map reduce creating
Architecting for the cloud   map reduce creatingArchitecting for the cloud   map reduce creating
Architecting for the cloud map reduce creatingLen Bass
 
Bzwbk24 mikolaj ostateczna Tomasz Niewiedział
Bzwbk24 mikolaj ostateczna Tomasz Niewiedział Bzwbk24 mikolaj ostateczna Tomasz Niewiedział
Bzwbk24 mikolaj ostateczna Tomasz Niewiedział Tomasz Niewiedział
 
Uso asno ibérico.
Uso asno ibérico.Uso asno ibérico.
Uso asno ibérico.Ale Gilex
 
Abrek_Thesis Presentation
Abrek_Thesis PresentationAbrek_Thesis Presentation
Abrek_Thesis PresentationNatascha Abrek
 
Pubblicità e promozione by Lucia Gangale
Pubblicità e promozione by Lucia GangalePubblicità e promozione by Lucia Gangale
Pubblicità e promozione by Lucia Gangalereportages1
 
Discinesia ciliar primaria
Discinesia ciliar primariaDiscinesia ciliar primaria
Discinesia ciliar primarianeumoalergia
 
Ficha técnica TEMP-COAT-101 (Español)
Ficha técnica TEMP-COAT-101 (Español)Ficha técnica TEMP-COAT-101 (Español)
Ficha técnica TEMP-COAT-101 (Español)ThCoat®
 

Viewers also liked (20)

Using elasticsearch with rails
Using elasticsearch with railsUsing elasticsearch with rails
Using elasticsearch with rails
 
Diseño web responsivo
Diseño web responsivoDiseño web responsivo
Diseño web responsivo
 
No te rindas, Mario Benedetti
No te rindas, Mario BenedettiNo te rindas, Mario Benedetti
No te rindas, Mario Benedetti
 
Yachting.vg Magazine - Luxury Yacht Brokerage and Yacht Charter - April 2011
Yachting.vg Magazine - Luxury Yacht Brokerage and Yacht Charter - April 2011Yachting.vg Magazine - Luxury Yacht Brokerage and Yacht Charter - April 2011
Yachting.vg Magazine - Luxury Yacht Brokerage and Yacht Charter - April 2011
 
Culti bio
Culti bioCulti bio
Culti bio
 
Industrial relations - Self-employed workers: industrial relations and workin...
Industrial relations - Self-employed workers: industrial relations and workin...Industrial relations - Self-employed workers: industrial relations and workin...
Industrial relations - Self-employed workers: industrial relations and workin...
 
El Pueblo de los Secretos
El Pueblo de los SecretosEl Pueblo de los Secretos
El Pueblo de los Secretos
 
Certification guide series ibm tivoli netcool webtop v2.0 implementationsg247754
Certification guide series ibm tivoli netcool webtop v2.0 implementationsg247754Certification guide series ibm tivoli netcool webtop v2.0 implementationsg247754
Certification guide series ibm tivoli netcool webtop v2.0 implementationsg247754
 
Storm Technologies Value Added Services Brochure
Storm Technologies Value Added Services BrochureStorm Technologies Value Added Services Brochure
Storm Technologies Value Added Services Brochure
 
Información Memorial
Información MemorialInformación Memorial
Información Memorial
 
Daytime running-light-lightday-application-guide--2012-gb
Daytime running-light-lightday-application-guide--2012-gbDaytime running-light-lightday-application-guide--2012-gb
Daytime running-light-lightday-application-guide--2012-gb
 
Architecting for the cloud map reduce creating
Architecting for the cloud   map reduce creatingArchitecting for the cloud   map reduce creating
Architecting for the cloud map reduce creating
 
Bzwbk24 mikolaj ostateczna Tomasz Niewiedział
Bzwbk24 mikolaj ostateczna Tomasz Niewiedział Bzwbk24 mikolaj ostateczna Tomasz Niewiedział
Bzwbk24 mikolaj ostateczna Tomasz Niewiedział
 
educación vial/ comunicación educativa
educación vial/ comunicación educativaeducación vial/ comunicación educativa
educación vial/ comunicación educativa
 
Uso asno ibérico.
Uso asno ibérico.Uso asno ibérico.
Uso asno ibérico.
 
Abrek_Thesis Presentation
Abrek_Thesis PresentationAbrek_Thesis Presentation
Abrek_Thesis Presentation
 
Pubblicità e promozione by Lucia Gangale
Pubblicità e promozione by Lucia GangalePubblicità e promozione by Lucia Gangale
Pubblicità e promozione by Lucia Gangale
 
Discinesia ciliar primaria
Discinesia ciliar primariaDiscinesia ciliar primaria
Discinesia ciliar primaria
 
Ficha técnica TEMP-COAT-101 (Español)
Ficha técnica TEMP-COAT-101 (Español)Ficha técnica TEMP-COAT-101 (Español)
Ficha técnica TEMP-COAT-101 (Español)
 
ppt
pptppt
ppt
 

Similar to Prototyping applications with heroku and elasticsearch

Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web DevelopmentRobert J. Stein
 
Cross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with EclipseCross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with EclipsePeter Friese
 
Open stack ocata summit enabling aws lambda-like functionality with openstac...
Open stack ocata summit  enabling aws lambda-like functionality with openstac...Open stack ocata summit  enabling aws lambda-like functionality with openstac...
Open stack ocata summit enabling aws lambda-like functionality with openstac...Shaun Murakami
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework BasicMario Romano
 
Nasdanika Foundation Server
Nasdanika Foundation ServerNasdanika Foundation Server
Nasdanika Foundation ServerPavel Vlasov
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformAntonio Peric-Mazar
 
The Truth Behind Serverless
The Truth Behind ServerlessThe Truth Behind Serverless
The Truth Behind ServerlessDocker, Inc.
 
Tutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopTutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopVivek Krishnakumar
 
Introduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneIntroduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneRahul Jain
 
Apache Eagle at Hadoop Summit 2016 San Jose
Apache Eagle at Hadoop Summit 2016 San JoseApache Eagle at Hadoop Summit 2016 San Jose
Apache Eagle at Hadoop Summit 2016 San JoseHao Chen
 
Semantic technologies in practice - KULeuven 2016
Semantic technologies in practice - KULeuven 2016Semantic technologies in practice - KULeuven 2016
Semantic technologies in practice - KULeuven 2016Aad Versteden
 
Building 12-factor Cloud Native Microservices
Building 12-factor Cloud Native MicroservicesBuilding 12-factor Cloud Native Microservices
Building 12-factor Cloud Native MicroservicesJakarta_EE
 
AWS re:Invent 2016: Deep-Dive: Native, Hybrid and Web patterns with Serverles...
AWS re:Invent 2016: Deep-Dive: Native, Hybrid and Web patterns with Serverles...AWS re:Invent 2016: Deep-Dive: Native, Hybrid and Web patterns with Serverles...
AWS re:Invent 2016: Deep-Dive: Native, Hybrid and Web patterns with Serverles...Amazon Web Services
 
Tech UG - Newcastle 09-17 - logic apps
Tech UG - Newcastle 09-17 -   logic appsTech UG - Newcastle 09-17 -   logic apps
Tech UG - Newcastle 09-17 - logic appsMichael Stephenson
 
Saving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroSaving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroQuickBase, Inc.
 
Google Cloud Functions & Firebase Crash Course
Google Cloud Functions & Firebase Crash CourseGoogle Cloud Functions & Firebase Crash Course
Google Cloud Functions & Firebase Crash CourseDaniel Zivkovic
 
The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor appRavi Okade
 
Masterless Puppet Using AWS S3 Buckets and IAM Roles
Masterless Puppet Using AWS S3 Buckets and IAM RolesMasterless Puppet Using AWS S3 Buckets and IAM Roles
Masterless Puppet Using AWS S3 Buckets and IAM RolesMalcolm Duncanson, CISSP
 
Apache Eagle in Action
Apache Eagle in ActionApache Eagle in Action
Apache Eagle in ActionHao Chen
 

Similar to Prototyping applications with heroku and elasticsearch (20)

Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 
Cross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with EclipseCross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with Eclipse
 
Open stack ocata summit enabling aws lambda-like functionality with openstac...
Open stack ocata summit  enabling aws lambda-like functionality with openstac...Open stack ocata summit  enabling aws lambda-like functionality with openstac...
Open stack ocata summit enabling aws lambda-like functionality with openstac...
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework Basic
 
Nasdanika Foundation Server
Nasdanika Foundation ServerNasdanika Foundation Server
Nasdanika Foundation Server
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API Platform
 
The Truth Behind Serverless
The Truth Behind ServerlessThe Truth Behind Serverless
The Truth Behind Serverless
 
Tutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopTutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer Workshop
 
Introduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneIntroduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of Lucene
 
Apache Eagle: Secure Hadoop in Real Time
Apache Eagle: Secure Hadoop in Real TimeApache Eagle: Secure Hadoop in Real Time
Apache Eagle: Secure Hadoop in Real Time
 
Apache Eagle at Hadoop Summit 2016 San Jose
Apache Eagle at Hadoop Summit 2016 San JoseApache Eagle at Hadoop Summit 2016 San Jose
Apache Eagle at Hadoop Summit 2016 San Jose
 
Semantic technologies in practice - KULeuven 2016
Semantic technologies in practice - KULeuven 2016Semantic technologies in practice - KULeuven 2016
Semantic technologies in practice - KULeuven 2016
 
Building 12-factor Cloud Native Microservices
Building 12-factor Cloud Native MicroservicesBuilding 12-factor Cloud Native Microservices
Building 12-factor Cloud Native Microservices
 
AWS re:Invent 2016: Deep-Dive: Native, Hybrid and Web patterns with Serverles...
AWS re:Invent 2016: Deep-Dive: Native, Hybrid and Web patterns with Serverles...AWS re:Invent 2016: Deep-Dive: Native, Hybrid and Web patterns with Serverles...
AWS re:Invent 2016: Deep-Dive: Native, Hybrid and Web patterns with Serverles...
 
Tech UG - Newcastle 09-17 - logic apps
Tech UG - Newcastle 09-17 -   logic appsTech UG - Newcastle 09-17 -   logic apps
Tech UG - Newcastle 09-17 - logic apps
 
Saving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroSaving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio Haro
 
Google Cloud Functions & Firebase Crash Course
Google Cloud Functions & Firebase Crash CourseGoogle Cloud Functions & Firebase Crash Course
Google Cloud Functions & Firebase Crash Course
 
The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor app
 
Masterless Puppet Using AWS S3 Buckets and IAM Roles
Masterless Puppet Using AWS S3 Buckets and IAM RolesMasterless Puppet Using AWS S3 Buckets and IAM Roles
Masterless Puppet Using AWS S3 Buckets and IAM Roles
 
Apache Eagle in Action
Apache Eagle in ActionApache Eagle in Action
Apache Eagle in Action
 

Recently uploaded

VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service PuneVIP Call Girls Pune Madhuri 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service PuneCall girls in Ahmedabad High profile
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of indiaimessage0108
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024APNIC
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxellan12
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girlsstephieert
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Sheetaleventcompany
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130  Available With RoomVIP Kolkata Call Girl Kestopur 👉 8250192130  Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Roomdivyansh0kumar0
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Roomdivyansh0kumar0
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGAPNIC
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)Damian Radcliffe
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsstephieert
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 

Recently uploaded (20)

VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service PuneVIP Call Girls Pune Madhuri 8617697112 Independent Escort Service Pune
VIP Call Girls Pune Madhuri 8617697112 Independent Escort Service Pune
 
Gram Darshan PPT cyber rural in villages of india
Gram Darshan PPT cyber rural  in villages of indiaGram Darshan PPT cyber rural  in villages of india
Gram Darshan PPT cyber rural in villages of india
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girls
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
 
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130  Available With RoomVIP Kolkata Call Girl Kestopur 👉 8250192130  Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girls
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 

Prototyping applications with heroku and elasticsearch

  • 1. Prototyping Apps with Elasticsearch and Heroku October 29th 2015
  • 2. Protofy Martin and Mike: Prototyping with Heroku and Elasticsearch
  • 3. Protofy builds Prototypes. Salad-Delivery-Service: From idea to first shipped salad -> 4days. 
 - Validation of the concept in a prototype 
 - Live-Launch in March 2015
 - Continuous prototyping while quickly growing key KPIs
 - Seed-Financing in October, November
  • 4. Protofy builds Prototypes. Voicefile transcoding and indexing for callcenters client-a.com:
 - Validation of the concept in a prototype 
 - Excessive usage of Elasticsearch as main database
 
 => THIS is the FIRST project we will show deeper.
  • 5. Protofy builds Prototypes. Automatic news aggregation by given list of keywords and synonyms. client-b.com:
 - Validation of the concept in a prototype 
 - Excessive usage of Elasticsearch to filter feed items and merge them
 
 => THIS is the SECOND project we will show deeper.
  • 6. And big infrastructure. Education Community Framework with Log-Everything strategy. PokerStrategy.com:
 - 7 Mio members (2007-2013)
 - up to 1 Billion pageviews/year
 - sold in mid 2013
 
 After that 2 companies have been found: DECK36 and Feelgood. Both merged in early 2015 to PROTOFY.
  • 8. Heroku: Platform as a service. Prebuilt VMs for different programming languages
 - deployment via git
 - customizable with build-packs and add-ons
 - easily scalable
 - full logging of each part of the app and process
 - releases: Easy rollback on errors
 - heroku toolbelt to support local execution
  • 9. Heroku: Prepare your app - Apps using other infrastructural services like MongoDB or Redis need to be aware of environment variables For example: Elasticsearch-service BONSAI provides: 
 BONSAI_URL=https://user:pw@host.bonsai.io - Use environment variables for everthing dependent. - In general relay on the (Attention. Buzzword.) http://12factor.net/ methodology.
  • 10. Buzzwording: 12 Factors I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies III. Config Store config in the environment IV. Backing Services Treat backing services as attached resources V. Build, release, run Strictly separate build and run stages VI. Processes Execute the app as one or more stateless processes VII. Port binding Export services via port binding VIII. Concurrency Scale out via the process model IX. Disposability Maximize robustness with fast startup and graceful shutdown X. Dev/prod parity Keep development, staging, and production as similar as possible XI. Logs Treat logs as event streams XII. Admin processes Run admin/management tasks as one-off processes
  • 11.
  • 12. Heroku: add-ons - Logentries - NewRelic - Bonsai-Elasticsearch - MongoLabs - Scheduler - SSL TIP: Care about backups! Even if they promise to do.
  • 13. Heroku: Test before deploy CONTINUOUS DEPLOYMENT using codehip.io (or others) git bitbucket codeship test heroku
  • 15. Heroku: Infrastructure as a service. - deployment via git - a lot of add ons - individual scaling of parts of the app - process isolation - full logging of each part of the app and process - easy-to-use command line tools - supports several languages (NodeJS, PHP, Rails, etc. - releases: Easy rollback on errors. - heroku toolbelt to support local execution like it would be on heroku with Foreman TERRAFORM Build,'Combine,'and'Launch'Infrastructure
  • 16. from automatic provisioning of servers ... Configuration as Code
  • 17. Infrastructure as Code … to automatic provisioning of services.
  • 18. Why do we need that? As with Configuration Management: -Replace “click-paths” with source code -Reproducible Environment -Versioning in SCM -Specification and Documentation
  • 19. What does it do? Configuration Language for Services Actions: -Plan -Apply -Refresh -Destroy
  • 20. What does it manage? Providers: - Google Cloud
 - AWS
 - Azure
 - Heroku
 - DNSMadeEasy
 - … Resources: - aws_instance
 - aws_vpc
 - azure_instance
 - heroku_app
 - … Provisioners: - chef
 - file
 - exec
  • 21. Example (part 1) ###  AWS  Setup provider  "aws"  {    access_key  =  "${var.aws_access_key}"    secret_key  =  "${var.aws_secret_key}"    region          =  "${var.aws_region}" } #  Queue  between  importer  and  analyzer resource  "aws_sqs_queue"  "importqueue"  {    name  =  "${var.app_name}-­‐${var.app_env}-­‐import-­‐queue" } resource  "aws_s3_bucket"  "importdisk"  {    bucket  =  "${var.app_name}-­‐${var.app_env}-­‐app-­‐importer"    acl        =  "private" }  
  • 22. Example (part 2) ###  Heroku  Setup provider  "heroku"  {...} #  App  EntityImporter resource  "heroku_app"  "importer"  {    name  =  "${var.app_name}-­‐${var.app_env}-­‐importer"    config_vars  {        SQS_REGION        =  "${var.aws_region}"        SQS_QUEUE_URL  =  "${aws_sqs_queue.importqueue.id}"        S3_BUCKET          =  "${aws_s3_bucket.importdisk.id}"        NODE_ENV            =  "${var.app_env}"    } } resource  "heroku_addon"  "mongolab"  {    app    =  "${heroku_app.importer.name}"    plan  =  "mongolab:sandbox" }
  • 23. Graph
  • 24. Live-Demo Launch application terraform plan terraform apply terraform show terraform destroy
  • 25. Comparable Software – AWS CloudFormation – HEAT, OpenStack orchestration – boto, Python AWS library – fog, Ruby cloud abstraction library
  • 26. Problems – Version 0.6 – Still a few bugs – Provider coverage – Modules too simple – Lacking syntactic sugar
  • 27. Software as a service. Elasticsearch.
  • 28. Elasticsearch Service Let other do the dirty work. 
 - Relatively complex setup with Shards and Replicas is maintained by specialists. - Backups and version upgrades are done by these specialists, too. - But 1: If version upgrades are announced YOU have to take action. - But 2: Backups SHOULD be done by the specialists. In some cases they cannot provide consistent backups and that can lead to data loss. => Care about them yourself. - But 3: If you need plugins: in the non-dedicated plans you cannot install them. Decide well if or if not to use a service or do it yourself.
  • 30. client-a.com Voicefile transcoding and indexing for callcenters 
 - Make telephone calls searchable
 - AccessManagement per Callcenter and Customer
 - Fast responses and results
 - Mobile
 - Be able to white label
  • 32. client-b.com Automatic content aggregation based on editor’s given input. 
 - Have up to 250.000 news items/day related to a topic from blogs, twitter/facebook/ instagram and other configurable sources.
 - Have automatic sorting and merging of similar items into stories.
 - Be nearly realtime
 - Make editing of main stories possible
 - Mobile first
  • 33.
  • 35. Elasticsearch: General Search server based on Lucene. Providing RESTful web interface for JSON documents. 
 - Near real-time search. - Sophisticated mapping configuration options. => Where the magic comes from. - Highly scaleable and available. - Conflict management with optimistic version control to avoid dataloss during concurrent write operations. - Supporting Plugins for different areas (Like Filters, Queries, Analyzers etc.)
  • 36. Elasticsearch: client-a.com Elasticsearch as main database - Provide several states of a document based on the state of processing. Always findable and restricted by ACLs
 How to reach that?
  • 37. Elasticsearch: client-a.com Restrict access by ACLs for „normal“ search 1. Check if user is allowed to access groups trying to request documents for. 2. If yes: Build query with filter restricting results to customers and callcenters based on ACL.
  • 38. Find documents related to callcenter1and callcenter2 {
 "query": {
 "filtered": {
 "query": {
 "query_string": {
 "default_operator": "AND",
 "minimum_should_match": "55%",
 "auto_generate_phrase_queries": true,
 "phrase_slop": 3,
 "fields": [
 "tags^2",
 "transscript"
 ],
 "query": "*"
 }
 },
 "filter": {
 "bool": {
 "must": [
 {
 "range": {
 "lastUpdated": {
 "gte": "now-24h",
 "lte": "2015-10-25T17:34:24+00:00"
 }
 }
 },
 {
 "range": {
 "lastUpdated": {
 "gte": "2015-08-30T21:04:08+00:00"
 }
 }
 },
 {
 "bool": {
 "should": [
 {
 "term": {
 "source.callcenter": "callcenter1"
 }
 },
 {
 "term": {
 "source.callcenter": "callcenter2"
 }
 }
 ]
 }
 }
 ]
 }
 }
 }
 }
 } {
 "query": {
 "filtered": {
 "query": {
 "query_string": {
 "default_operator": "AND",
 "minimum_should_match": "55%",
 "auto_generate_phrase_queries": true,
 "phrase_slop": 3,
 "fields": [
 "tags^2",
 "transscript.texts.contents"
 ],
 "query": "*"
 }
 },
 "filter": {
 "bool": {
 "must": [
 {
 "range": {
 "lastUpdated": {
 "gte": "now-24h",
 "lte": "2015-10-25T17:34:24+00:00"
 }
 }
 },
 {
 "range": {
 "lastUpdated": {
 "gte": "2015-08-30T21:04:08+00:00"
 }
 }
 },
 {
 "bool": {
 "should": [
 {
 "term": {
 "source.callcenter": "callcenter1"
 }
 },
 {
 "term": {
 "source.callcenter": "callcenter2"
 }
 }
 ]
 }
 }
 ]
 }
 }
 }
 }
 }
  • 39. Elasticsearch: client-a.com Restrict access for suggests 1. Completion suggests are special handling for really fast autocompletion
 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html 2. How to make suggestions context (ACL) aware?
  • 40. {
 "body": {
 "suggest": {
 "text": "Agent 007",
 "completion": {
 "field": "agent.suggest",
 "size": 20,
 "fuzzy": false,
 "context": {
 "customer": [
 "customer1",
 "customer4"
 ],
 "callcenter": [
 "callcenter1",
 "callcenter2"
 ]
 }
 }
 }
 }
 } Find suggestions related to context {
 "agent": {
 "type": "multi_field",
 "fields": {
 "agent": {
 "type": "string",
 "copy_to": "autocompletion"
 },
 "autocompletion": {
 "type": "string",
 "index_analyzer": "edgeNGram_analyzer_suggest"
 },
 "suggest": {
 "type": "completion",
 "index_analyzer": "nGram_analyzer_suggest2",
 "search_analyzer": "whitespace_analyzer",
 "max_input_length": 20,
 "context": {
 "customer": {
 "type": "category",
 "path": "source.customer_lowercase"
 },
 "callcenter": {
 "type": "category",
 "path": "source.callcenter_lowercase"
 }
 }
 }
 },
 "include_in_all": false
 }
 } Query Mapping
  • 41. Elasticsearch: client-b.com Elasticsearch to find similar articles and match them to stories - Index stories and automatically find entities within the articles text - Match similar articles to at least one story (based on entities) and context
 How to do that?
  • 42. Elasticsearch: client-b.com Entity matching by list of keep words and aliases 1. Create a list of synonyms and keep words to be used in filters.
 https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-keep-words-tokenfilter.html
 https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html 2. Index document 1st time to find entities based on keep words and synonyms. 3. Take document enriched with entities to build a query from it to match against the set of documents to find similar articles. 4. Combine them to a story.
  • 43. Setting for matching entities "settings": {
 "analysis": {
 "filter": {},
 "analyzer": {
 "entity_analyzer": {
 "tokenizer": "whitespace",
 "filter": [
 "german_stop",
 "shingle",
 "entity_synonym",
 "shingle",
 "entity_keepwords"
 ]
 }
 }
 }
 },
  • 44. Live-Demo Check how entities are matched in a text 
 1. ./load_entities_list 2. curl -XGET "localhost:9200/talk/_analyze?analyzer=entity_analyzer&pretty=true" -d "Text" => Document is indexed with found entities on indexing time. Analyzing process is like operating on a stream.
  • 45. Martin Schütte and Mike Lohmann Protofy
 Kaiser-Wilhelm-Straße 85
 20355 Hamburg 
 martin@protofy.com
 mike@protofy.com