Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

MongoDB Cloud Manager the Web Stack

Slide 3

Slide 3 text

What is MongoDB Cloud Manager?

Slide 4

Slide 4 text

Online software that manages MongoDB deployments

Slide 5

Slide 5 text

it automates deployments of MongoDB (AWS & Azure)

Slide 6

Slide 6 text

it monitors MongoDB instances

Slide 7

Slide 7 text

and it backs up data into queryable snapshots

Slide 8

Slide 8 text

how?

Slide 9

Slide 9 text

for each server that hosts mongod or mongos processes,

Slide 10

Slide 10 text

lightweight agents automate, monitor & backup, pinging back data and requesting instructions

Slide 11

Slide 11 text

The Entire Stack

Slide 12

Slide 12 text

mongod 2.6 mongod 3.0 mongod 2.4 mongod 3.x MongoDB processes (C++) Java 8 Jersey Morphia Client Stack (JS) Cloud Manager (Java 8, JavaScript ES5) mongos 3.x mongos 2.6 mongos 3.0 mongos 2.4 mongos 3.x mongos 3.0 mongos 2.6 automation agent monitoring agent backup agent automation agent monitoring agent backup agent (customer databases to manage) Cloud Backing DBs production & legacy agents (Go) MongoDB Hosted Customer Hosted (AWS, Azure, other)

Slide 13

Slide 13 text

& for those who need to host everything within their data centers

Slide 14

Slide 14 text

mongod 2.6 mongod 3.0 mongod 2.4 mongod 3.x MongoDB processes (C++) Java 8 Jersey Morphia Client Stack (JS) Cloud Manager (Java 8, JavaScript ES5) mongos 3.x mongos 2.6 mongos 3.0 mongos 2.4 mongos 3.x mongos 3.0 mongos 2.6 automation agent monitoring agent backup agent automation agent monitoring agent backup agent (customer databases to manage) Cloud Backing DBs production & legacy agents (Go) Customer Hosted (in their data centers)

Slide 15

Slide 15 text

We eat our own dogfood.

Slide 16

Slide 16 text

Java 8 Jersey Morphia Client Stack (JS) Cloud Manager (Java 8, JavaScript ES5) mongos 3.x mongos 3.0 mongos 2.6 automation agent monitoring agent backup agent automation agent monitoring agent backup agent Cloud Backing DBs production & legacy agents (Go) We use our product to monitor, automate & backup the databases that support our product.

Slide 17

Slide 17 text

Releases

Slide 18

Slide 18 text

Woe the dependencies. Cloud Manager Ops Manager ~ 5/6 months v2.0-rc0 MongoDB ~ 9/12 months (3 week sprints) v20151027 v3.2

Slide 19

Slide 19 text

The Client Stack JavaScript

Slide 20

Slide 20 text

stack includes Browserify, Babel, Backbone, Marionette, Handlebars & d3

Slide 21

Slide 21 text

Unit Testing with karma, phantom, mocha, sinon & chai

Slide 22

Slide 22 text

Automation Testing with cucumber, webdriver.io, selenium and saucelabs

Slide 23

Slide 23 text

Backbone?

Slide 24

Slide 24 text

Yes. Backbone.

Slide 25

Slide 25 text

1. Straight forward. Accessible.

Slide 26

Slide 26 text

2. Component-first

Slide 27

Slide 27 text

3. Inertia

Slide 28

Slide 28 text

So what’s wrong with Backbone?

Slide 29

Slide 29 text

1. Fallen out of favor

Slide 30

Slide 30 text

2. Zombie Views

Slide 31

Slide 31 text

2. Zombie Views 3. Bad Habits

Slide 32

Slide 32 text

Build Process

Slide 33

Slide 33 text

Bundled dependencies ES5 Bundled templates CommonJS dependencies Babel (ES2015) Browserify factor-bundle thirdparty Source Maps LESS BEM common app deployment onboarding charts provisioning backup Handlebars templates LESS Thirdparty Thirdparty minification CSS concatenator minification thirdparty main Thirdparty libraries

Slide 34

Slide 34 text

Bundled dependencies ES5 Bundled templates CommonJS dependencies Babel (ES2015) Browserify thirdparty Source Maps LESS BEM app Handlebars templates LESS Thirdparty Thirdparty minification CSS concatenator minification thirdparty main Thirdparty libraries

Slide 35

Slide 35 text

Bundled dependencies ES5 Bundled templates CommonJS dependencies Babel (ES2015) Browserify factor-bundle thirdparty Source Maps LESS BEM common app deployment onboarding charts provisioning backup Handlebars templates LESS Thirdparty Thirdparty minification CSS concatenator minification thirdparty main Thirdparty libraries

Slide 36

Slide 36 text

Our Approach: Think Critical.

Slide 37

Slide 37 text

Every library you add is another dependency to manage; it adds to debt.

Slide 38

Slide 38 text

When adding new dependencies... 1. Think twice before adding a new dependency 2. If you do, make sure it is tested and, where possible, regularly maintained 3. Where possible, include the bare minimum feature-set 4. Always bind to a specific version

Slide 39

Slide 39 text

Bootstrap: A Case Study

Slide 40

Slide 40 text

Just on the Horizon....

Slide 41

Slide 41 text

● Virtual DOM ● Websockets ● Flexbox ● Gulp

Slide 42

Slide 42 text

@justinjmoses [email protected]