This is a part rant-part question.
So a little backstory first:
I work in a small company (5 including me) which is mostly into consultation (we have many tech partners where we either resell their products or if there is a requirement from one of our clients, we get our partners to develop it for them and fulfill the client requirements) so as you can see there is a lot of external dependencies. I act as a one-hat-fits-all tech guy, handling the company websites, social media channels, technical documentation, tech support, quicks POCs (so anything to do with anything technical, I handle them). I am a bit fed up now, since the CEO expects me to do some absurd shit (and sometimes micro manages me, like WTF I am the only one who works there with 100% commitment) and expects me to deliver them by yesterday.

So anyway long story short, our CEO finally had the brains to understand that we should start having our own product (which i had been subtly suggesting him to do for a while now!).

Now he came up with a fairly workable concept that would have good market reach (i atleast give him credits for that) and he wanted me to suggest the best way to move forward (from a both business and technical point of view). The concept is to have an auction-based platform for users to buy everyday products.

I suggested we build a web app as opposed to a mobile one (which is obvious, since i didnt want to develop a seperate website and a mobile app, and anyway just because we can doesnt mean we have to make a mobile app for everything), and recommended the Node/react based JS tech stack to build it.

At first he wanted me to single handedly build the whole platform within a month, I almost flipped (but me being me) then somehow calmed down and finally was able to explain him how complicated it was to single-handedly build a platform of such complexity (especially given my limited experience; did I mention that this is my first job and I am still in college, yeah!!) and convinced him to get an experienced back-end dev and another dev to help me with it.

Now comes the problem, I was to prepare a scope document outlining all the business and technical requirements of the project along with a tentative cost, which was fairly straightforward. I am currently stuck at deciding the server requirements and the system architecture for the proposed solution (I am thinking of either going with AWS - which looks a bit complicated to setup - or go with either Digital Ocean or Heroku):

I have assumed that at peak times we would have around 500-1000 users concurrently

And a daily userbase of 1000 users (atleast for the first few months of the platform running)

What would be the best way forward guys?

I did some extensive (i mean i read through some medium blogs! and aws documentation) research and put together the following specs (if we are going through AWS):

One AWS t3.medium ec2 instance for the node server (two if we want High Availability by coupling with the AWS load balancer and Elastic Beanstalk)

The db.t3.small postgres database

The S3 Storage bucket (100gb) for the React Front end hosting

AWS SNS for email/sms OTP and notification

And AWS CloudMonitor for logging amd monitoring.

Am I speculating the requirements properly, where have I missed??

Can u guys suggest what is the best specification for such a requirement (how do you guys decide what plan to go with)?

Any suggestions, corrections, advices are welcome

  • 3
    Your numbers might be right, or might be wrong. You are using AWS, so you can always go up.

    Measure the actual load for further planning, once you get the first customers (I have no idea how good or bad you application scales).

    Plan for redundancy, because VMs at Amazon can just die (but it doesn't occure that often). Place VMs in different AZs.
    You will also need a load balancer to ease IP management, but you need one for redundancy anyway.
  • 0
    @virustark24 hey thanks man, it means a lot to hear this from a fellow dev
  • 0
    @sbiewald Thanks for the advice, having two different AWS instances on different AZs will surely help with redundancy and then continuously monitor them and see how much of a traffic we get then maybe scale up if needed.
Add Comment