building the neo4j sandbox: aws, ecs, docker, python, neo4j, ++

87
(Sandbox)-[:TEACHES]->(GraphDBs) powered by:

Upload: ryan-boyd

Post on 07-Apr-2017

260 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

(Sandbox)-[:TEACHES]->(GraphDBs)

powered by:

Page 2: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

(Sandbox)-[:TEACHES]->(GraphDBs)

Ryan Boyd @ryguyrg

[email protected]

Page 3: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

@ryguyrg

Page 4: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Developed Web Apps + APIs for 5 years

Page 5: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Led Google Developer Relations teams for 8 years

Page 6: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Wrote O’Reilly book on OAuth 2.0

Page 7: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

WHAT DO THESE

HAVE IN COMMON?!?!

Page 8: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

WEB!

Led DevRel teams forGoogle

Developed web apps + APIs

Wrote book on OAuth

Page 9: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

HUH!?!

Page 10: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

IMPORTANT LIFE LESSON

Page 11: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

“DOWNLOAD”IS A BAD WORD.

Page 12: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

I SHOULDN’T CURSE

Page 13: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

BUT IS IT ACTUALLY BAD?

Page 14: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++
Page 15: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++
Page 16: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

“DOWNLOAD”STIGMA

Page 17: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++
Page 18: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++
Page 19: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

?

Page 20: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Agenda

+

Goals

Stakeholders

Risks

Solution:Tech Stack

+Features

Architecture

LessonsLearned

+Next

Page 21: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

+

Goals

Stakeholders

Risks

Solution:Tech Stack

+Features

Architecture

Page 22: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

+Stakeholders

Risks

Solution: Tech Stack

+Features

Architecture

LessonsLearned

+Next

Page 23: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Architecture

LessonsLearned

+Next

Q & A

Page 24: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

GoalsSolution:

Tech Stack+

Features

Page 25: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Fast Onboard Experience

Page 26: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++
Page 27: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Data Users Care About

Page 28: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Guided Experience

Page 29: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Guided Experience

*even if better than product

Page 30: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Fast Time to First Line of Code

Page 31: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Isolated Environment

Page 32: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

+Stakeholders

RisksArchitecture

Page 33: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

CEO Wants everyone to use

the Product

Page 34: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Marketing Wants to be able to

reach users

Page 35: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

MarketingEngineering

Developer Relations

Page 36: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Developer Relations Wants to be able to

reach users

Page 37: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

+Stakeholders

RisksArchitecture

Page 38: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

$

Page 39: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

$ Fixed CostsMachines ready to serve users

Variable CostsMore machines with demand

Page 40: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Low Data Quality

Page 41: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Low Data QualityNot asking for name, company, country, state, biz email

But OAuth2-provided and derived data may be better quality for many fields

Page 42: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Lower User “Stickiness”

vs Downloads

Page 43: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

OperationalNightmares

Page 44: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Operational Nightmares

Server Maintenance and Security patches, outages, memory/CPU management

Scaling Challenges spikes in load, drops in load

Page 45: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Goals

Stakeholders

Solution:Tech Stack

+Features

Page 46: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++
Page 47: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Backend

Page 48: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

EC2 Container Service (ECS)

Backend

Page 49: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

AWS Lambda - Serverless

Backend

Page 50: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Backend

Page 51: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Backend

Page 52: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Backend Frontend

Page 53: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Backend Frontend

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlFUbENPRVV4UmtJNFJETkROakpETXpBME5EZzBRelV3UWpNek9UVTVNRFF4TlRKRk56STJOZyJ9.ecnVlLCJpc3MiOiJodHRwczovL25lbzRqLXN5bmMuYXV0aDAuY29tLyIsInN1YiI6Imdvb2dsZS1vYXVMTA2MjQ3MjUyODU3NzMwODYzNDMxIiwiYXVkIjoiRHhobWlGOFRDZXpuSTdYb2kwOFCJleHAiOjE0OTA5MTk5MzYsImlhdCI6MTQ5MDg0NzkzNiwibm9uY2UiOiIzNCJ9.QqZmFbqOTzJKmD7A70UYjeRchn4ME0v3Z7VsTSERrGMN6mi0Lz5vidMUaBzi22Sc6K62z7Du01dV15RnuKs79HrIYe0n0MkP1gO6LM59IxygAuTgO6cWC8xAGiNkcL76cDokYEsGGZiwtueEnuCBSF9K80llIsfR6Je6mgdk05f4z5kYAI2aauyfo4ntwhUY0RxUSP95lKJ9sSBYQBSVpPkuSkxO0vEmiSFN_tDa6A8buxfwLXX8BlJQ7yNMoeOO5COcE1j0h3oqDsjTWyczJ7bli0n6n3XOD3CWSa9zqR2oaIby92TitcZXkGEoP-18o0ZMQOKS7ioj8n1E-Qli0n8bD

JWT

Page 54: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Backend Frontend

JWT

{ "email": "[email protected]", "email_verified": true, "iss": "https://neo4j-sync.auth0.com/", "sub": "google-oauth2|106247252857730863431", "aud": "DxhmiF8TCeznI7Xoi08UyYScLGZnk4ke", "exp": 1490919936, "iat": 1490847936, "nonce": "34"}

Page 55: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Frontend

Page 56: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Frontend

Page 57: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Are We Done with the Tech Stack Yet?!?

Page 58: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Data Providers

{ "email": "[email protected]", "email_verified": true, "name": "Ryan Boyd", "given_name": "Ryan", "family_name": "Boyd", "picture": "https://lh4.googleusercontent.com/-BET-bMzn99g/AAAAAAAAAAI/AAAAAAAAFEc/h2y8oykJ0x8/photo.jpg", "gender": "male", "locale": "en", "updated_at": "2017-03-29T23:22:09.262Z", "id": "google-oauth2|113487456102835830811"}

Page 59: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Data Providers

Page 60: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Data Providers

Page 61: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Data Providers

Page 62: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Data Providers

Page 63: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Data Providers

"organizations": [

{

"isPrimary": true,

"name": "Neo4j",

"startDate": "2015",

"title": "Head of Developer Relations, NA",

"current": true

},

"socialProfiles": [ { "type": "facebook", "typeId": "facebook", "typeName": "Facebook", "url": "https://www.facebook.com/rboyd" }, { "followers": 500, "following": 500, "type": "linkedin", "typeId": "linkedin", "typeName": "LinkedIn", "url": "https://www.linkedin.com/in/ryguyrg", "username": "ryguyrg", "id": "11587745" }

Page 64: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Data Providers

{ "city": { "geoname_id": 5331920, "names": { "en": "Burlingame", } }, "continent": { "code": "NA", "geoname_id": 6255149, "names": { "en": "North America", } }, "country": { "iso_code": "US", "geoname_id": 6252001, "names": { "en": "United States", } }, "location": { "accuracy_radius": 5, "latitude": 37.5671, "longitude": -122.371, "metro_code": 807, "time_zone": "America/Los_Angeles" }, "postal": { "code": "94010" }, "registered_country": { "iso_code": "US", "geoname_id": 6252001, "names": { "en": "United States", } }, "subdivisions": [ { "iso_code": "CA", "geoname_id": 5332921, "names": { "en": "California" } } ], "traits": { "autonomous_system_number": 7922, "autonomous_system_organization": "Comcast Cable Communications, LLC", "domain": "comcast.net", "isp": "Comcast Cable", "organization": "Comcast Cable" }}

Page 65: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Goals

Stakeholders

Solution:Tech Stack

+Features

Page 66: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Social Sign-InLaunched with:Twitter, GitHub, Google

Added after launch:LinkedIn

Page 67: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Code Snippets

Page 68: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

“Hidden” Sandboxes

Page 69: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

FOLLOWS

FOLLOWS

POSTS

FOLLOWS

USIN

G

USING

USING

USING

TAGS

TAGSTAGS

TAGS

CONTAINS

CONTAINS

MENTIONS

FOLLOWS

POSTS

CONTAINS

CONTAINS

FOLLOWS

MENTIONS

POSTS

FOLLOWS

TAGSC

ONTAINS

CONTAINS

POSTS

CONTAINS

MENTIONS

FOLLOWS

Neo4j

5

Blaine

Mathieu

Buffer

neo4j

Alistair

Jones

Jeffrey

Morris

3

http://buf…

https://t…

anthony

suarez

LinkedIn

1

cbbarclay

accessc…

2

Ben

Greenb…

Streaming Twitter Sandbox with OAuth permissions

Page 70: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

NGINX Proxy for SSLand those annoying corporate firewalls

Neo4j Browser: https://10-0-1-237-32825.neo4jsandbox.com/

Direct Neo4j HTTP: http://54.197.91.106:32825/browser/

Page 71: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Single Sign On to Neo4j Browser

Page 72: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

E-mail Nurturing

Page 73: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Features

Architecture

Page 74: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Lambda

nginx

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

…16

API Gatew

ay

Frontend

EC2 C

ontainer Service

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

…16

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

…16

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

…16

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

…16

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

…16

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

…16

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

neo4j-importer

neo4j-enterprise

…16

nginx

Neo4j Browser Proxy ELB

nginx

Auth0 Identity and Authorization

Neo4j Graph Database

EC2 Autoscaling

CloudFront C

DN

S3 Static Content H

osting

Page 75: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Solution: Tech Stack

+Features

LessonsLearned

+Next

Q & A

Page 76: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

QUOTAS :-(

Page 77: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

BALANCING LOAD SPIKES SMARTLY

Page 78: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

NEEDED PAPERTRAIL TOO

Page 79: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

CSS HELL

Page 80: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

CODING IS REWARDING

Page 81: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Solution: Tech Stack

+Features

LessonsLearned

+Next

Q & A

Page 82: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

More UsecasesData JournalismBYO API Data Enterprise Usecases

Page 83: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

From You Too!

Page 84: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Backup and Deploy

Page 85: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Sharing with Colleagues and Friends

Page 86: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

Architecture

Q & A

Page 87: Building the Neo4j Sandbox: AWS, ECS, Docker, Python, Neo4j, ++

(Sandbox)-[:TEACHES]->(GraphDBs)

Ryan Boyd @ryguyrg

[email protected]

Bye!