Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

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

722 Aufrufe

Veröffentlicht am

Video: https://www.youtube.com/watch?v=2XbNhAJ9wh0
Try Neo4j Sandbox today: https://neo4j.com/sandbox-v2/

The Neo4j Sandbox is an environment where anyone can get their own instance of Neo4j up and running in seconds, with tutorials and datasets related to their usecase.

Since Ryan wanted people to have the freedom to interact with Neo4j with full privileges, he decided to use Docker to provide container-level isolation for the Sandbox.

This session will talk about some of the design decisions made and how the architecture was achieved using Docker, EC2 Container Service, Auth0, EC2, Elastic Load Balancers, EC2 AutoScaling Group, AWS Lambda functions, Python, S3, IAM, CloudWatch, SES, FullContact, MaxMind and more.

Ryan will also discuss future features and get feedback from users during Q&A.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

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

  1. 1. (Sandbox)-[:TEACHES]->(GraphDBs) powered by:
  2. 2. (Sandbox)-[:TEACHES]->(GraphDBs) Ryan Boyd @ryguyrg ryan@neo4j.com
  3. 3. @ryguyrg
  4. 4. Developed Web Apps + APIs for 5 years
  5. 5. Led Google Developer Relations teams for 8 years
  6. 6. Wrote O’Reilly book on OAuth 2.0
  7. 7. WHAT DO THESE HAVE IN COMMON?!?!
  8. 8. WEB! Led DevRel teams for
 Google Developed web apps + APIs Wrote book on OAuth
  9. 9. HUH!?!
  10. 10. IMPORTANT LIFE LESSON
  11. 11. “DOWNLOAD”
 IS A BAD WORD.
  12. 12. I SHOULDN’T CURSE
  13. 13. BUT IS IT 
 ACTUALLY BAD?
  14. 14. “DOWNLOAD”
 STIGMA
  15. 15. ?
  16. 16. Agenda + Goals Stakeholders Risks Solution:
 Tech Stack
 +
 Features Architecture Lessons
 Learned
 +
 Next
  17. 17. + Goals Stakeholders Risks Solution:
 Tech Stack
 +
 Features Archit
  18. 18. olders ks Solution:
 Tech Stack
 +
 Features Architecture Lessons
 Learned
 +
 Next
  19. 19. ecture Lessons
 Learned
 +
 Next Q & A
  20. 20. Goals
  21. 21. Fast Onboard Experience
  22. 22. Data Users Care About
  23. 23. Guided Experience
  24. 24. Guided Experience *even if better than product
  25. 25. Fast Time to First Line of Code
  26. 26. Isolated Environment
  27. 27. + Stakeholders Risks
  28. 28. CEO Wants everyone to use the Product
  29. 29. Marketing Wants to be able to reach users
  30. 30. MarketingEngineering Developer Relations
  31. 31. Developer Relations Wants to be able to reach users
  32. 32. + Stakeholders Risks
  33. 33. $
  34. 34. $ Fixed Costs
 Machines ready to serve users Variable Costs
 More machines with demand
  35. 35. Low Data Quality
  36. 36. Low Data Quality Not asking for
 name, company, country, state, biz email But OAuth2-provided and derived data
 may be better quality for many fields
  37. 37. Lower User “Stickiness” vs Downloads
  38. 38. Operational
 Nightmares
  39. 39. Operational Nightmares Server Maintenance and Security
 patches, outages, memory/CPU management Scaling Challenges
 spikes in load, drops in load
  40. 40. Solution:
 Tech Stack
 +
 Features
  41. 41. Backend
  42. 42. EC2 Container Service (ECS) Backend
  43. 43. AWS Lambda - Serverless Backend
  44. 44. Backend
  45. 45. Backend
  46. 46. Backend Frontend
  47. 47. Backend Frontend eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlFUbENP RVV4UmtJNFJETkROakpETXpBME5EZzBRelV3UWpNek9UVTVNRFF4 TlRKRk56STJOZyJ9.ecnVlLCJpc3MiOiJodHRwczovL25lbzRqLX N5bmMuYXV0aDAuY29tLyIsInN1YiI6Imdvb2dsZS1vYXVMTA2MjQ 3MjUyODU3NzMwODYzNDMxIiwiYXVkIjoiRHhobWlGOFRDZXpuSTd Yb2kwOFCJleHAiOjE0OTA5MTk5MzYsImlhdCI6MTQ5MDg0NzkzNi wibm9uY2UiOiIzNCJ9.QqZmFbqOTzJKmD7A70UYjeRchn4ME0v3Z 7VsTSERrGMN6mi0Lz5vidMUaBzi22Sc6K62z7Du01dV15RnuKs79 HrIYe0n0MkP1gO6LM59IxygAuTgO6cWC8xAGiNkcL76cDokYEsGG ZiwtueEnuCBSF9K80llIsfR6Je6mgdk05f4z5kYAI2aauyfo4ntw hUY0RxUSP95lKJ9sSBYQBSVpPkuSkxO0vEmiSFN_tDa6A8buxfwL XX8BlJQ7yNMoeOO5COcE1j0h3oqDsjTWyczJ7bli0n6n3XOD3CWS a9zqR2oaIby92TitcZXkGEoP-18o0ZMQOKS7ioj8n1E-Qli0n8bD JWT
  48. 48. 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" }
  49. 49. Frontend
  50. 50. Frontend
  51. 51. Are We Done with the Tech Stack Yet?!?
  52. 52. 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/h2y8 "gender": "male", "locale": "en", "updated_at": "2017-03-29T23:22:09.262Z", "id": "google-oauth2|113487456102835830811" }
  53. 53. Data Providers
  54. 54. Data Providers
  55. 55. Data Providers
  56. 56. Data Providers
  57. 57. 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",
  58. 58. 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", }
  59. 59. Solution:
 Tech Stack
 +
 Features
  60. 60. Social Sign-In Launched with:
 Twitter, GitHub, Google Added after launch:
 LinkedIn
  61. 61. Code Snippets
  62. 62. “Hidden” Sandboxes
  63. 63. FOLLOWS FOLLOWS POSTS FOLLOWS USING USING USING USING TAGS TAGSTAGS TAGS CONTAINS CONTAINS MENTIONS FOLLOWS PO STS CONTAINS CO NTAINS FOLLOWS MENTIONS POSTS FOLLOWS TAGS AINS S POSTS S MENTIONS FOLLOWS Neo4j 5 Blaine Mathieu Buffer neo4j Alistair Jones Jeffrey Morris 3 http://buf… https://t… anthony suarez LinkedIn 1 cbbarclay cessc… 2 Ben Greenb… Streaming Twitter Sandbox with OAuth permissions
  64. 64. NGINX Proxy for SSL
 and those annoying corporate firewalls Neo4j Browser: https://10-0-1-237-32825.neo4jsandbox.com/ Direct Neo4j HTTP: http://54.197.91.106:32825/browser/
  65. 65. Single Sign On to Neo4j Browser
  66. 66. E-mail Nurturing
  67. 67. Architecture
  68. 68. Lambda nginx neo4j-importer neo4j-enterprise neo4j-importer neo4j-enterprise neo4j-importer neo4j-enterprise neo4j-importer neo4j-enterprise …16 APIGateway Frontend EC2ContainerService 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 EC2Autoscaling CloudFrontCDN S3StaticContentHosting
  69. 69. Lessons
 Learned
 +
 Next Q & A
  70. 70. QUOTAS :-(
  71. 71. BALANCING LOAD SPIKES SMARTLY
  72. 72. NEEDED PAPERTRAIL TOO
  73. 73. CSS HELL
  74. 74. CODING IS REWARDING
  75. 75. Lessons
 Learned
 +
 Next Q & A
  76. 76. More Usecases Data JournalismBYO API Data Enterprise Usecases
  77. 77. From You Too!
  78. 78. Backup and Deploy
  79. 79. Sharing with Colleagues and Friends
  80. 80. Q & A
  81. 81. (Sandbox)-[:TEACHES]->(GraphDBs) Ryan Boyd @ryguyrg ryan@neo4j.com Bye!

×