Skip to main content
BlogDatabasesWe Went to MongoDB World 2022, So You Didn’t Have To!

We Went to MongoDB World 2022, So You Didn’t Have To!

mongodbWorldRecap22-blogHeader

I attended MongoDB World 2022 last week thanks to a sponsorship from Linode. In this article, I’ll breakdown my time there along with some code snippets I’m working on for an upcoming tutorial. I also created a video recapping my time at MongoDB World.

My 240-character summary:

MongoDB World convinced me I need to use MongoDB more often. The target audience was probably managers over developers as most of the talks (including my own) did not get into the technical depth devs often like. I recommend attending!

Location: New York City

The Javits Center location was perfect and the venue was stunning. For a conference, a city like NYC is exactly the type of energy you need. There’s so much going on outside it naturally bleeds over into the conference.

Rating: 9/10

Keynotes

To kick off the event, we heard from MongoDB CEO Dev Ittycheria. If the only keynote I heard was Dev’s, I would have been sold on using MongoDB significantly more often. Dev reinforced the notion that MongoDB exists to help empower teams to deliver more with less and, throughout my time at the conference, this appeared to be true.

Dev was quickly followed up by another presenter who really sucked the energy out of the room. The feeling was palpable. Dev returned to the stage to give some much needed energy right before the breakout sessions began.

We also had a few live demos during the keynote that highlighted some of the awesomeness that is MongoDB. As you might imagine, live demos are often a recipe for disaster but these went off smoothly as far as I could tell.

In the afternoon on the first day, CTO Mark Porter delivered one of the best tech keynotes I’ve ever seen in person. It’s clear he’s a teacher first and a CTO second. His vibe was that of a surf camp instructor, while his skillset is one of a seasoned database professional who can run circles, technically speaking, around the vast majority of CTOs out there. If I only went to one talk the whole time, it would have been Mark’s keynote.

I was really excited to hear the final day keynote speaker: Ray Kurzweil. Ray is an accomplished futurist and has made some brilliant predictions over the span of his career. He’s also written a few best-selling books and given numerous talks over the years.

At MongoDB World, Ray reiterated a lot of the things I’ve heard him say over the years. In retrospect, this isn’t that surprising but it did lead me to the conclusion that Ray should have been interviewed by the likes of Dev or Mark to provide a dynamic conversation for the concluding keynote.

Rating: 7/10

Breakout Sessions

The breakout sessions provided interesting overviews of the various tools and techniques teams leverage MongoDB in their organizations.

Here’s a few topics I found very interesting:

  • Realm
  • Serverless MongoDB (Atlas Serverless)
  • Time Series

Realm

Realm appears to be a very compelling offering to enable mobile devices and IOT to sync data with a managed MongoDB Cluster (such as Atlas or Linode Managed Databases).

The challenge with data on the edge is ensuring the local/on-device database is often out of sync with the cloud database. At a glance, this may seem like a trivial issue but once you hit scale, such as 100,000 mobile devices, this problem can become a big one.

I haven’t tested it yet, but the session I attended sure made MongoDB’s Realm the perfect solution for the various problems that come with edge-to-cloud database syncing.

A few key benefits to Realm:

  • Made for Dynamic Data Syncing to MongoDB
  • SQLite/Core Data Replacement
  • Small footprint on devices
  • Cross-platform APIs (Kotlin, Swift, JavaScript, etc.)
  • Helps deal with connection issues on mobile/IoT devices

Learn more about it here.

Serverless MongoDB

The term serverless is a bit silly if you ask me as I tend to think of serverless as “managed scale hosting.” Regardless of the name, serverless is here to stay and I’m all for it.

Serverless is the process of scaling your compute resources to meet demand no matter how big or how small. The how big is often up for debate, but scaling down to zero often saves a lot in terms of resources and often dollars and sense.

Let’s lay out a scenario that helps highlight the benefits of serverless:

Serverless Scenario: A website tracks stats, in real-time, during sporting events.

When a sporting event is happening: The web application has a lot of activity tracking data; the web application has variable traffic based on the number of fans, time of day, point in season, etc,; the web application needs to be fast for everyone everywhere during the entire event

When a sporting event is not happening: The web application does zero activity tracking; the web application has zero traffic most of the time; the web application, in theory, could be off completely and no one would know.

No matter how long the time between events, the above is almost always true. The variability in how this theoretical website works is a dramatic example of why serverless is great: One second you have 100,000 requests, the next it’s eight requests. The next it’s 250,000 requests, the next it’s 76. Serverless is designed to handle these scenarios with grace and incredible latency.

Serverless Databases: The Elusive Dream

The above scenario works well with serverless web applications, but what about a serverless database as well?

Modern web applications, serverless or not, need the ability to access data with as low latency as possible. If the database is serverless, this means it can be scaled to zero instances running or simply the database can be essentially turned off. So if the database is turned off, there will be a delay in turning it back on; thus making serverless on the database layer traditionally very difficult to do.

The problem of scaling up or scaling down databases deals with the size of the data; more data means it’s going to take longer to turn a database on or off. Historically, it’s much easier and frictionless to just keep your database services running all the time while your application can be serverless (or not) thanks to Kubernetes and various Docker implementations.

I have yet to see a Serverless SQL alternative that matches what Atlas Serverless does, and this is no small accomplishment by the MongoDB team. It’s great to see them pioneer serverless databases.

What I did not see was support for open-source serverless MongoDB. Perhaps that’s coming too.

Serverless: Speed, Cost, & Friction

The faster I can deploy applications, the faster I can learn what’s working and what’s not. Serverless unlocks the ability to do these kinds of tests with minimal increases in the cost to do so. This, I’d argue, is one of the greatest benefits of using serverless.

If your app isn’t working, let it sit there but with zero resources running. At the first sign of traffic, scale to meet demand. Scale back down when demand fades. This aligns perfectly with doing A/B advertising tests so your app can be working when it needs to and not all the time.

If your app is working and working well, the overhead in maintaining the continuous load is abstracted away from your team by various managed services. This means a small team can handle an incredible amount of load with very little (if any) extra work.

All of this is to say that serverless increases the effectiveness of teams while reducing the overall cost it takes to handle the demand requirements for that application.

Serverless isn’t a perfect solution for everything but it’s certainly that solves so many problems with resource-constrained teams.

Time Series on MongoDB

MongoDB (as of at least version 5), has support for built-in functions for doing Time Series analysis. If you’re not familiar with creating time series data, it’s merely the process of adding some sort of timestamp to every row in your database collection (table).

Time Series Analysis is great for:

  • Improving Financial decisions that require sales forecasting, product demand, traffic estimates, etc.
  • Purchasing Stocks, Bonds, etc.
  • Tracking sensors and IoT devices over time.
  • Performance metrics (such as website performance, advertising, etc.)

There’s certainly a lot more applications for this kind of analysis but as we see using Time Series data is critical for many roles in an organization. MongoDB makes doing this analysis much easier. I’ll touch a lot more on Time Series Analysis with MongoDB in future but for now, here’s a quick sample using MongoDB with the Python pymongo package:

1. Initialize MongoDB client

import os
from pymongo import MongoClient

# this assumes you have a running MongoDB cluster/instance
mongodb_un = os.envion.get("MONGODB_USERNAME")
mongodb_pw = os.envion.get("MONGODB_PASSWORD")
mongodb_host = "localhost"
mongodb_port = 27017
db_url =  f"mongodb://{mongodb_un}:{mongodb_pw}@{mongodb_host}:{mongodb_port}"
client =  MongoClient(db_url)

2. Create the time series collection

# create/select a database
db = client.business

# create time series collection
db.create_collection(
    "rating_over_time",
    timeseries = {
        "timeField": "timestamp",
        "metaField": "metadata",
        "granularity": "seconds"
    }
)

3. Add mock time series data

from datetime import datetime, timedelta
from random import randint

# Insert a lot of fake time series data
names = ['Kitchen','Animal','State', 'Tastey', 'Big','City','Fish', 'Pizza','Goat', 'Salty','Sandwich','Lazy', 'Fun']
company_type = ['LLC','Inc','Company','Corporation']
company_cuisine = ['Pizza', 'Bar Food', 'Fast Food', 'Italian', 'Mexican', 'American', 'Sushi Bar', 'Vegetarian']
_count = randint(0, 10_001)
for x in range(1, _count):
    now = datetime.now()
    delta = now + timedelta(days=randint(0, 2), minutes=randint(0, 60), seconds=randint(0, 60))
    if randint(0, 1) == 1:
        # randomly vary the direction of the timestamp
        delta = now - timedelta(days=randint(0, 2), minutes=randint(0, 60), seconds=randint(0, 60))
    random_company_index = randint(0, (len(company_cuisine)-1))
    business = {
        "metadata": {
            'cuisine' : company_cuisine[random_company_index],
            'name' : names[randint(0, (len(names)-1))] + ' ' + names[randint(0, (len(names)-1))]  + ' ' + company_type[randint(0, (len(company_type)-1))],
        },
        'rating' : randint(1, 5),
        "timestamp":  delta
    }
    #Step 3: Insert business object directly into MongoDB via insert_one
    result=db[db_name].insert_one(business)

4. Perform the time series aggregations

# run an aggregation
list(db.rating_over_time.aggregate([
{"$unwind": "$metadata"}, 
{"$project": {
    "date": {
      "$dateToParts": { "date": "$timestamp" }
    },
    "rating": 1,
    "cuisine": "$metadata.cuisine",
  }
},
    
{
  "$group": {
    "_id": {
     "cuisine": "$cuisine",
      "month": "$date.month",
      "day": "$date.day",
      "year": "$date.year",
    },
    "avgRating": { "$avg": "$rating" }
  }
}
]))

This results in:

[{'_id': {'cuisine': 'American', 'month': 6, 'day': 16, 'year': 2022},
  'avgRating': 2.75},
 {'_id': {'cuisine': 'Italian', 'month': 6, 'day': 12, 'year': 2022},
  'avgRating': 3.0},
 {'_id': {'cuisine': 'American', 'month': 6, 'day': 14, 'year': 2022},
  'avgRating': 3.0655737704918034},
 {'_id': {'cuisine': 'Pizza', 'month': 6, 'day': 15, 'year': 2022},
  'avgRating': 3.0508474576271185},
]

The data above comes from my own experimenting with Python and MongoDB but was inspired largely by a session talking about using MongoDB Time Series Analysis to automate purchasing stocks based on historical prices. The talk was not a deep dive technically because, as you may see above, it really didn’t have to be! MongoDB certainly seems to lower the friction in doing some amazing things.

Review

Overall, the breakout sessions lacked the technical depth I really enjoy as a developer but this made sense. Most sessions were under an hour and often 30 minutes. It’s difficult to get into the nuts and bolts on the technical details in such a short amount of time with such a range of backgrounds for the audience.

The content that was presented in the sessions I attended were generally outstanding with a few misses here and there.

Rating: 8/10

Partner Pavilion

The Partner Pavilion was filled with companies that offer related services to companies that may (or may not) use MongoDB in their business. The people working these booths are often sales people targeting decision-makers for their organizations.

Here, I had the chance to meet more of the Linode and Akamai team members and connect with them. In short, it was great to connect with them since most of our communication is done over the internet as I would imagine a large number of their customers do as well. I am certainly bias but I find the Linode/Akamai team incredibly approachable, open, and more than willing to brainstorm all kinds of ideas.

A few key companies I was able to chat with:

  • HashiCorp: Chatting with the makers of Terraform (among other things) was great to hear their commitment to making DevOps better and easier for more people. Granted, I really enjoying using Terraform in its current state but the future seems bright. Perhaps I’ll need to check out future HashiConf events too!
  • Vercel: The makers of Next.js was featured heavily at the keynote due to its recently announced integration with Atlas. In due time, I’ll be spending more time with their platform as well as Next.js!
  • MongoDB University: It’s clear that education is a big part of MongoDB’s strategy which absolutely excites be for the future of education: accessible and driven through in-demand, practical, and marketable skills.
  • Datadog: Who makes analyzing logs cool? Datadog that’s who. I was pulled into a demo and I am so glad I did. I definitely need to learn more about this company.

General Ratings

Keynotes (discussed above): 7/10

  • Some great speakers with some lackluster ones

Breakout Sessions (discussed more above): 8/10

  • Overall great sessions, but lacked technical depth I enjoy as a developer

Tutorials: 6/10

  • In the main one I attended, there were wifi issues. Why not wired ethernet backups?
  • The speaker handled the issues great but the content ended up being a bit too slow.

Food: 3/10

  • Hot dogs on Day 2? Really?
  • Amazing pizza three blocks away from the conference.

Family-Friendly: 3/10

  • If you have children under 5, it’s a 0/10.
  • Aside from popular tourist destinations, there’s little to do for young kids.
  • New York is crowded, loud, pedestrians walk aggressively, and vehicles are very aggressive.
  • Yes, I live in a small town near Austin, Texas so that rating is based off that. We have lots of space, New York doesn’t.

Location: 9/10

  • From a professional standpoint, an event in New York City is incredible. There’s lots of great food, restaurants, bars, venues, etc, to entertain and connect with other professionals.
  • NYC’s Energy is unmatched to almost all places in the world; something is always being built/rebuilt, people are always out, there’s almost always something good to eat.
  • It’s amazing how 15 miles can take 2+ hours driving in New York City. For some, this might lower the location rating to 3/10.
  • If I wasn’t sponsored to attend, the rating would be 2/10 (haha!) due to the high cost for everything in New York.

Hotels: 5/10

  • Expensive for a tiny room.
  • On the plus side, the breakfast buffet at my hotel was stellar and I heard the same about other hotels.
  • lot of choices.

Airport: 3/10

  • Avoid Terminal 8 at JFK at all costs. It’s run down and the food/souvenir options are poor.
  • Leaving the airport has many options and all are relatively quick.
  • If I landed at the right terminal, it might bump it to 6/10.

Transportation: 7/10

  • Uber/Lyft/taxis/etc, are everywhere.
  • Cost of transportation is high when you need to take it.
  • Transportation to/from the airport ended up being nearly 1/4 the cost of my plane tickets.
  • New York is very walkable thus easy to get around.

Conference Snacks: 6/10

  • Good choices, too few of them

Conference Drink Selection: 5/10

  • Basically the big 3 Coke products.

Conference Coffee: 8/10

  • Locally-brewed coffee was solid, but then again I love freshly-brewed black coffee from almost anywhere.

Company Turnout: 6/10

  • I would estimate 20 companies showed up; I was expecting more.

Swag: 3/10

  • Scavenger hunt for swag? Cute, but no thanks.

Conference Entertainment: 8/10

  • There were dueling piano comedians in the pavilion. They were awesome.
  • Looked like there was some gaming competitions but seemed limited to a few participants at a time.
  • The emcee in the IDEA lounge was great.
  • The after party sounded fun for those who attended.

Auditory Accessibility:

  • There were at least 3 ASL interpreters working the events where needed.
  • I can’t speak to the quality, but it seemed they were great.

Visual Accessibility: N/A

  • I did not look for or see support for the visually impaired.

Naturally, everyone’s experience is going to vary wildly so take the above with a grain of salt.

Overall Rating: 8/10

MongoDB World convinced me I need to spend 10x-100x more time using MongoDB. That’s no small thing to me being that I owe so much of my career to SQL and the tools that integrate with it.

I enjoyed MongoDB World overall and, if you have the ability, you might want to consider attending in 2023. If you’re pressed for time, I think you can get a lot out of attending just Day 1. If you do attend, we can always watch/re-watch sessions on-demand after the event ends (I believe for up to 30 days). Day 2 and 3 still had a lot going on but the attendance started to dwindle in the afternoon of Day 2.

I think it’s difficult for conferences to serve all ranges of technical expertise but I think MongoDB World did a great job balancing this. Many of the presenters made themselves available after sessions for more in-depth discussions which was great to see. Most of the presentations I attended were all professional and well executed as one would expect. The attendees seemed genuinely interested in connecting and learning about what others are doing in the space.

The Javits Conference Center in New York was incredible and certainly gave a grand feeling to the whole vibe of the event. The grandness of the conference center really highlighted how pathetic my tiny hotel room really was.

The lackluster food at the conference was made up for by the fact that NYC has some of the best food in the world on nearly every street corner. If you’re a foodie, you might want to skip out during lunchtime to Hudson Yards or over by Time Square. And like any good conference, the coffee was flowing!

If you’re thinking about bringing your family while you’re at the conference, you might want to reconsider since there’s not a whole lot young children (5 & under) can really do while you are busy at the event.

To me, the point of this event is to help teach attendees how they can best use MongoDB within their business. For this, I think they totally nailed it and I am absolutely sold on MongoDB. Let’s not forget that SQL first appeared in 1974 where MongoDB’s first release was in 2009. The difference in this age is clear with MongoDB’s modern approach to solve modern issues that face cloud-first organizations and projects. The mere fact this conference exists is testament to their dedication to push the envelop forward and to bring us all with them.

For MongoDB World 2023, perhaps we can meet each other.

Cheers!

Justin Mitchel
Teacher & Founder
CodingForEntrepreneurs.com


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *