I will try to answer this question step by step. Remember though, this is just one possible setup among many, and may not fit your needs entirely.
Topology:
- AWS
- Node.js
- MongoDB
AWS - You mentioned you are now striving for 1000 users. All you said about your app is that is IOS, so we have no idea how intensive the backend DB must be (CRUD operations).
I would start off with an eye on scalability if and when you need it. Therefore I would strongly suggest what Amazon has termed a NAT Gateway. This will allow your Node.js to sit on the server facing the Internet, while the MongoDB will be behind it. This first and foremost protects the Mongo from any unwanted access. In other words an initial setup would be 1 Gateway (which would hold Node.js) and for the time being let us call it, the Master MongoDB behind the Gateway. Access to this server is only through an SSH tunnel from your Gateway. It is on a CIDR address range.
Setting up a NAT Gateway correctly though, is not simple 1-2-3. You really do need to understand how Amazon uses routes and of course how to make proper use of inbound and outbound rules.
The actual Gateway server (Node.js server), should be on an ElasticIP. This will save you a lot of heartache when you need to expand up to a better server. You should also take snapshots or actual images of your server any time you make a critical change to it.
As to the Gateway server itself. Depending on your Node.js actual code, you should at the very least go for a t2 medium, (micro simply will not do). As for protection, again inbound and outbound rules, and possibly put a software firewall up on the server.
I myself, also use a few other utilities, but one which I think would be critical here is PM2. This will keep your Node code running in the event of restarts and make life easier as you expand into more cores on the server(s).
You did not mention your choice of OS so I will not touch that heated topic except to say, Ubuntu and AWS Linux are sane choices.
As to your MongoDB which is now protected behind your Gateway. Here is where I may be a bit conservative, just basically because I am dealing with the realities of numbers you asked about. I personally see no reason for 1000 users, to set up a cluster or shards on a MongoDB until you see if you app really does take off. The NAT gateway is scalable, and if your app takes off, then you will be moving to ATLAS or Enterprise anyways. However, is you want to cluster (master-slaves) you can choose either 3 or 7 (I think 7 may be 5). One is your master. You ssh tunnel into anyone the same way you ssh into your master (obviously over a different CIDR). If you do cluster, you have to really pay close attention to the mongod.conf file and all the parameters available to you.
Obviously there is a great deal more to write about, and of course many have differing opinions, which is a good thing. However, I would err here on the side of caution (and your monthly bill!) until you have the basic setup you need working. Then you can scale your Mongo into clusters and sharding and your Node.js app as well.
Just to sum up:
- Inbound and Outbound rules & Routes in AWS
- OS you will use
- Actual server and core configuration
- Node.js on the Gateway server facing the world
- MongoDB server (or cluster) behind the Gateway.
- Critical: You should almost immediately create roles in your MongoDB. This too is the last line of defense. Do not ever have an instance of MongoDB without at least an Admin role set up, so you will have control over what rights are required to access or change your data.
Good luck - hope it all works even better than you dreamed!