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

Post on 07-Apr-2017

264 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

powered by:

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

Ryan Boyd @ryguyrg

ryan@neo4j.com

@ryguyrg

Developed Web Apps + APIs for 5 years

Led Google Developer Relations teams for 8 years

Wrote O’Reilly book on OAuth 2.0

WHAT DO THESE

HAVE IN COMMON?!?!

WEB!

Led DevRel teams forGoogle

Developed web apps + APIs

Wrote book on OAuth

HUH!?!

IMPORTANT LIFE LESSON

“DOWNLOAD”IS A BAD WORD.

I SHOULDN’T CURSE

BUT IS IT ACTUALLY BAD?

“DOWNLOAD”STIGMA

?

Agenda

+

Goals

Stakeholders

Risks

Solution:Tech Stack

+Features

Architecture

LessonsLearned

+Next

+

Goals

Stakeholders

Risks

Solution:Tech Stack

+Features

Architecture

+Stakeholders

Risks

Solution: Tech Stack

+Features

Architecture

LessonsLearned

+Next

Architecture

LessonsLearned

+Next

Q & A

GoalsSolution:

Tech Stack+

Features

Fast Onboard Experience

Data Users Care About

Guided Experience

Guided Experience

*even if better than product

Fast Time to First Line of Code

Isolated Environment

+Stakeholders

RisksArchitecture

CEO Wants everyone to use

the Product

Marketing Wants to be able to

reach users

MarketingEngineering

Developer Relations

Developer Relations Wants to be able to

reach users

+Stakeholders

RisksArchitecture

$

$ Fixed CostsMachines ready to serve users

Variable CostsMore machines with demand

Low Data Quality

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

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

Lower User “Stickiness”

vs Downloads

OperationalNightmares

Operational Nightmares

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

Scaling Challenges spikes in load, drops in load

Goals

Stakeholders

Solution:Tech Stack

+Features

Backend

EC2 Container Service (ECS)

Backend

AWS Lambda - Serverless

Backend

Backend

Backend

Backend Frontend

Backend Frontend

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlFUbENPRVV4UmtJNFJETkROakpETXpBME5EZzBRelV3UWpNek9UVTVNRFF4TlRKRk56STJOZyJ9.ecnVlLCJpc3MiOiJodHRwczovL25lbzRqLXN5bmMuYXV0aDAuY29tLyIsInN1YiI6Imdvb2dsZS1vYXVMTA2MjQ3MjUyODU3NzMwODYzNDMxIiwiYXVkIjoiRHhobWlGOFRDZXpuSTdYb2kwOFCJleHAiOjE0OTA5MTk5MzYsImlhdCI6MTQ5MDg0NzkzNiwibm9uY2UiOiIzNCJ9.QqZmFbqOTzJKmD7A70UYjeRchn4ME0v3Z7VsTSERrGMN6mi0Lz5vidMUaBzi22Sc6K62z7Du01dV15RnuKs79HrIYe0n0MkP1gO6LM59IxygAuTgO6cWC8xAGiNkcL76cDokYEsGGZiwtueEnuCBSF9K80llIsfR6Je6mgdk05f4z5kYAI2aauyfo4ntwhUY0RxUSP95lKJ9sSBYQBSVpPkuSkxO0vEmiSFN_tDa6A8buxfwLXX8BlJQ7yNMoeOO5COcE1j0h3oqDsjTWyczJ7bli0n6n3XOD3CWSa9zqR2oaIby92TitcZXkGEoP-18o0ZMQOKS7ioj8n1E-Qli0n8bD

JWT

Backend Frontend

JWT

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

Frontend

Frontend

Are We Done with the Tech Stack Yet?!?

Data Providers

{ "email": "ryan@ryguy.com", "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"}

Data Providers

Data Providers

Data Providers

Data Providers

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" }

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" }}

Goals

Stakeholders

Solution:Tech Stack

+Features

Social Sign-InLaunched with:Twitter, GitHub, Google

Added after launch:LinkedIn

Code Snippets

“Hidden” Sandboxes

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

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/

Single Sign On to Neo4j Browser

E-mail Nurturing

Features

Architecture

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

Solution: Tech Stack

+Features

LessonsLearned

+Next

Q & A

QUOTAS :-(

BALANCING LOAD SPIKES SMARTLY

NEEDED PAPERTRAIL TOO

CSS HELL

CODING IS REWARDING

Solution: Tech Stack

+Features

LessonsLearned

+Next

Q & A

More UsecasesData JournalismBYO API Data Enterprise Usecases

From You Too!

Backup and Deploy

Sharing with Colleagues and Friends

Architecture

Q & A

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

Ryan Boyd @ryguyrg

ryan@neo4j.com

Bye!

top related