Eve: Building RESTful APIs with MongoDB and Flask Transcripts
Chapter: Appendix: Deploying MongoDB
Lecture: Creating a couple of cloud servers
0:01 To deploy our database and set up our production environment
0:04 I'm going to use Digital Ocean,
0:06 I've run web applications in MongoDB, in AWS, EC2,
0:11 I've done it in Azure, and various other places I'll talk about some of those,
0:15 and I found something like Digital Ocean really to be just such a nice service,
0:22 simple, extremely fast, extremely affordable compared to the other options.
0:25 We're going to use Digital Ocean, but what I'm going to show you
0:29 is not specific Digital Ocean for the most part
0:31 you can use any other server that lets you basically set up vms,
0:36 and in a single data center.
0:39 We're going to use this and if we come down here we'll look at the various options,
0:46 we'll see that we can basically choose different machines,
0:49 now it turns out for reasonable amounts of data
0:53 I'll describe what I think but reasonable is,
0:56 certainly ten dollars a month is absolutely fine,
0:59 we've got 30 gigs of disk space on an ssd disc,
1:03 we've got tons of bandwidth and I don't even know
1:05 if it counts within data center bandwidth,
1:07 1GB is not a ton a memory, but it is enough,
1:10 this is really nice and cheap, the five dollar one,
1:13 but it's going to put you up against memory limits pretty quickly,
1:15 if you have lots of data, so what do I mean by a lot,
1:18 so right now I'm running most of my websites
1:20 using a shared MongoDB server, separate databases, but shared server
1:24 and it's running on one of these ten dollar machines
1:27 and it's got about six million documents in there,
1:31 something around six million documents, and it takes about
1:35 let's say 30 percent of the memory of 1GB, so about 300MB resident,
1:41 if I had lots more than six million things, than probably I'd need to move up.
1:47 Also if I wanted to run a replica set on the same machine,
1:51 all these kinds of things, but this is probably a totally decent starting point,
1:55 unless you really have quite a bit of data.
1:58 Anyway, we'll get started with Digital Ocean.
2:00 The first thing we're going to do, what we're going to do in this video, in this lecture is
2:03 we're just going to create two servers,
2:06 one that's going to be our web server that's just the thing
2:09 that's going to try to access MongoDB our app
2:11 and the one that is the deployment production server
2:14 that we've kind of locked down and hardened,
2:16 so let's switch over here for now, and we're going to go and create a droplet.
2:23 I've done a tiny amount of work in advance,
2:25 I've created a certificate that I'm going to use to ssh in,
2:28 I'll show you where the step is and there's a button you can click
2:31 and it basically says type this, put the contents here, you're good.
2:35 When we come in here there's a couple of options,
2:37 the first thing is to choose an image,
2:40 so we could choose all these different versions of Ubuntu,
2:42 I'll just take the default, I'm tempted to take the new one
2:45 but it will take the long term to support one.
2:47 If you wanted to use another distribution, you totally could,
2:49 also they've got this one click apps thing that is pretty interesting
2:52 and I could come down here and even click MongoDB
2:55 but I don't want to assume that using Digital Ocean you have this button
2:58 I want to show you how to set up a fresh Linux machine
3:01 running MongoDB in the end basically.
3:03 So I'm not going to click this, but this is a totally reasonable option to click this
3:06 and it has ability to upgrade basically through apt update.
3:10 So for this, let's go with the ten dollar one, it's charged by the hour
3:16 we actually pay for this course, it's going to be quite quite low,
3:20 I'm not going to leave it running for months at a time.
3:22 We're going to do this, 10 dollars a month, standard Ubuntu,
3:25 I don't care about block storage, I'm on the West Coast of the US,
3:28 so let's pick something somewhat nearby
3:30 but you see there is other data centers,
3:33 probably you want monitoring, this allows you to go back and do a droplet
3:36 and get graphs of like cpu, disk, memory, over time that's kind of cool,
3:40 maybe private networking, but again we're not going to do that here,
3:42 I have already set up the ssh key,
3:45 so I'm going to pick this Digital Ocean course test key,
3:48 which doesn't want for anything but this test bit that I'm doing right here,
3:52 we also create a new ssh key and there's a little help button you can click,
3:55 and I'll just show you how to create and store one of these here.
3:58 Alright, so last thing we want to go over here,
4:03 we got to give it a name, this Ubuntu name not the most amazing,
4:06 we'll call it the mongo server, that seems decent right,
4:11 it doesn't like this, so we'll just go like—
4:14 so this is all looking good, we've got our ssh key
4:19 we just need one of these types of things and we click go.
4:23 I'll let this go in real time, so not sure how long it's going to take today
4:33 but I'm not going to speed up this part,
4:36 you can see this is just a real time creation here.
4:45 And we're good, it says happy coding, I love it.
4:48 Alright, so let's copy this, let's go ahead, I think my ssh is already registered
4:53 if not I might have to add that, let's go,
4:56 so we're going to go here like this,
4:59 and it says you've never connected to this server, no it's brand new.
5:04 Apparently I have not added that, so go down here, add ssh-add
5:12 at the k is added to my keychain, like so, so it's added
5:16 now if I ssh again, do this one, how about the one we're actually working with.
5:22 Okay, look at that, we are connected,
5:27 so I had generated my key but I hadn't added it to this user profile,
5:31 so this is great, and it should also be somewhat concerning
5:34 that there are 16 security updates right now,
5:37 so first thing we are going to do, we're going to apt update,
5:40 go refresh the possible updates and a real quick upgrade,
5:46 and we'll be back in a minute.
5:51 Okay, everything is done, now let's exit out real quick and just come straight back
5:57 and notice, there's no more updates, but a restart is required
6:01 in order to make this basically finalize those changes,
6:06 something deep down in the guts was updated,
6:09 so we'll just do a quick reboot and just to show you the time in here
6:12 I will not speed this part up either.
6:19 Usually it takes about ten seconds,
6:21 but with that many updates it might take a little bit longer;
6:29 let's be optimistic give it a shot, and we're back,
6:33 so really quickly we updated our system, we rebooted
6:36 so we've got Ubuntu 16.04.2 long term support, and it's all up to date.
6:43 This is great, this is our Mongo server, let's do this one more time
6:47 let's go and do this for here, go back to the other stuff in a minute,
6:55 let's do this for the fake web app that we're going to have talk to this.
6:59 We'll come down here and pick Ubuntu, five dollar one
7:03 we don't need block storage, sfo 1, same data center as before
7:06 that's very important for latency;
7:09 go ahead and add monitoring, use this ssh key,
7:16 and we'll call this the web server,
7:21 and go— good, these are the same data center
7:27 and we'll do the same thing, I'll ssh into here I'll do apt update, apt upgrade
7:34 and give it a good reboot, and then we'll have two fresh up to date machines
7:39 and we'll start configuring them afterwards,
7:41 let's just double check this one,
7:51 so it's alive, but make those a little bit quick, there we go,
7:54 now it took a moment just to turn on, excellent, everything is good here
7:59 let's say apt update, it says there's no packages
8:03 but I'm not so sure, it's basically running that right now
8:09 so let's come back in a second,
8:12 oh look, there's a whole bunch of stuff that we got to do
8:15 so apt upgrade and we'll do this, I'll kind of shorten the video here
8:21 you've gone through this before, and we'll just let it do all the upgrades
8:25 and then we'll come back and talk about installing MongoDB on the Mongo server.