Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / New
Stats: 3,158,900 members, 7,838,217 topics. Date: Thursday, 23 May 2024 at 05:26 PM

Backend Software Engineers, Let's Talk About System Design - Programming (2) - Nairaland

Nairaland Forum / Science/Technology / Programming / Backend Software Engineers, Let's Talk About System Design (11193 Views)

Threads On Visa Sponsorship Job For Software Engineers(web Based) / How Do I Go About This System Design ? / Mass Resignation Of Software Engineers Disrupts Banks Digitisation Move (2) (3) (4)

(1) (2) (3) (4) (Reply) (Go Down)

Re: Backend Software Engineers, Let's Talk About System Design by JoeEeL(m): 12:55pm On Dec 07, 2020
DC49:


In my case I would use a decoupled architecture. That is, separate the front-end from back-end and host them separately.
Front end would be an Angular app hosted on firebase, while back-end would be a Django Rest API hosted on Google App Engine with auto-scaling support to handle traffic surges.
I'd utilize a caching system like Memcached to reduce load on the back-end server, store the user generated contents like media files on a separate file storage service like Amazon S3 or Google Cloud Buckets, host the database separately on Google Cloud SQL, and finally use a CDN like Cloudflare.
This setup would be expensive though, but for a platform that gets such a huge amount of requests I'm certain the owner would be able to afford it.

.
Re: Backend Software Engineers, Let's Talk About System Design by Ilerioluwa02: 12:57pm On Dec 07, 2020
Database has to be MongoDB

2 Likes

Re: Backend Software Engineers, Let's Talk About System Design by GeoAfrikana(m): 1:05pm On Dec 07, 2020
Ilerioluwa02:
Database has to be MongoDB
Why not postgresql?

3 Likes

Re: Backend Software Engineers, Let's Talk About System Design by Nobody: 1:07pm On Dec 07, 2020
Fash20:
Good... I love to learn from booses... I haven't gotten the chance to work with or learn from one directly but I love what I have read here so far
Fash from Fuoye?
Re: Backend Software Engineers, Let's Talk About System Design by techstack: 1:13pm On Dec 07, 2020
SilverG33k:
Honestly, let's just catch cruise here.

Now here's a quick question, you're to build nairaland backend, how would you do that?

What technologies would you use, how would you handle scalability issues. Note than, the expected traffic for this system is 1k req/s just for fun tho

No yabbing

I will break it down into microservices using
dotNet core or nodejs, scale it with Kubernetes. Frontend will be reactjs. I will manage repository with github or azure devops and deploy to Azure or Google cloud. Database will be mssql or mongodb. images will be hosted on Azure blob

3 Likes

Re: Backend Software Engineers, Let's Talk About System Design by chineduuf: 1:16pm On Dec 07, 2020
My own personal preference and experience, I will use a decoupled architecture like someone else pointed out. Frontend may be ReactJS or VueJS. Write my backend logic as simple AWS Lambda functions which scales automatically even into millions of users per second and drop to as low as 1 user per second and I only pay for the amount of users. This way I don't get hooked up on throttling or excessive wasted resources sitting idle. Hook my Frontend to my backend services using AWS API Gateway. Use redis, elasticache or memcached to reduce load on the backend. Database options will be DynamoDB or MongoDB as there will be loads of metadata to be stored. AWS S3 is one of the cheapest storage you can get around, that can house your media file. Then use AWS cloud front or cloudflare CDN to speed content delivery to user.

PS: Even though this is a thread on backend, ReactJs, Redux and gsap for frontend is frontend on steroids!

7 Likes 1 Share

Re: Backend Software Engineers, Let's Talk About System Design by Makavelli25: 1:17pm On Dec 07, 2020
What are you guys saying

1 Like

Re: Backend Software Engineers, Let's Talk About System Design by suaveBrother(m): 1:44pm On Dec 07, 2020
...I have an algorithm that enables people see reasonable comments by providing an upvote and down vote feature where users can be able to choose the comments they want to see by voting... the comment that have the highest up vote would be the first comment while the once with the highest down vote would be at the bottom... this was written in php using mysql database...

... just want to contribute to the community ...

2 Likes

Re: Backend Software Engineers, Let's Talk About System Design by Trizyd(m): 1:44pm On Dec 07, 2020
I will use vuejs for my frontend and laravel for my backend.

1 Like

Re: Backend Software Engineers, Let's Talk About System Design by Harrykn: 1:45pm On Dec 07, 2020
So people like Zzor, sapphire and fat00 are absent here. well for me I'm still learning python + SQL + html + js.
I'll get back to the the thread.

2 Likes

Re: Backend Software Engineers, Let's Talk About System Design by Aremson14(m): 1:51pm On Dec 07, 2020
Will use React as my front end. Then develop a node/express to build a rest api as a back end. Use mongodb as database
Re: Backend Software Engineers, Let's Talk About System Design by bukxy: 1:54pm On Dec 07, 2020
If not Php and Postgresql then what else?

1 Like

Re: Backend Software Engineers, Let's Talk About System Design by mruwaifo(m): 1:57pm On Dec 07, 2020
This same question get asked on Nairaland every few years. I'm talking over 12 years ago now. When nairaland started of using simplemachine forum scripts. Good to see developers still pondering over Nairalands architecture.

1 Like

Re: Backend Software Engineers, Let's Talk About System Design by Ajax99(m): 2:01pm On Dec 07, 2020
Phyton should do the trick
Re: Backend Software Engineers, Let's Talk About System Design by sarutobi: 2:04pm On Dec 07, 2020
SilverG33k:
What if you we try to reduce cost by

Using just AWS

Reduce cost by using AWS Is this a joke?

Decoupled architecture? Why? There must be a reason to go that far.

Nairaland is a simple app. Its does not need to have the frontend and backend hosted separately. A good dedicated server should handle the load well.

You can use the new buzzwords like angular, vue, nodejs etc to bamboozle the client and win customers but simple plain PHP/Python/Ruby with vanilla javascript will be more than enough to produce nairaland in record time.

I consider the owner of Nairaland to be very smart. this is why nairaland does exactly what it needs to do. Nothing more, nothing less.

17 Likes

Re: Backend Software Engineers, Let's Talk About System Design by adesmarty: 2:21pm On Dec 07, 2020
All these confusing big big terms are the greatest fears I have towards learning programming.. Where and when person want stay to know all these things

2 Likes

Re: Backend Software Engineers, Let's Talk About System Design by Myzzyfrazzy(m): 2:26pm On Dec 07, 2020
people way dey dedicated. nor be me way stop for HTML since 2010. I need thy grace to start again embarassedpeople way dey dedicated. nor be me way stop for HTML since 2010. I need thy grace to start again

1 Like

Re: Backend Software Engineers, Let's Talk About System Design by ibnlawal(m): 2:28pm On Dec 07, 2020
Harrykn:
So people like Zzor, sapphire and fat00 are absent here. well for me I'm still learning python + SQL + html + js.
I'll get back to the the thread.
Can you state the site website where you are learning it?
Re: Backend Software Engineers, Let's Talk About System Design by Nobody: 2:38pm On Dec 07, 2020
Coming to comment

1 Like

Re: Backend Software Engineers, Let's Talk About System Design by Csami(m): 2:38pm On Dec 07, 2020
bukxy:
If not Php and Postgresql then what else?

As in PHP handles everything efficiently. Even nairaland is heavily dependent on PHP.

1 Like

Re: Backend Software Engineers, Let's Talk About System Design by talk2hb1(m): 2:39pm On Dec 07, 2020
Nice Thread
Re: Backend Software Engineers, Let's Talk About System Design by pman06(m): 2:46pm On Dec 07, 2020
One thing I've come to realize is that, people would pick big big names based in what they are exposed to. There's never any need to be scared because if some names you read, you just start from somewhere first, and before you know it, you are on top of your stacks.


Getting confused with DevOps and Web Dev terminologies can be very easy if you don't know what you are doing.

But then again, this thread is for Backend Devs, getting confused as a beginner is allowed, just don't get discouraged.


For me, as someone rightly said, since there won't be any expected mobile apps or other platforms expected other than web, Django + Aurora postgres (multi az replicas enabled) will handle both Backend and front end for me.

I know decoupling is a thing, API first approach and all, but this is just a web forum, nothing special I guess.

Handle loads with AWS elastic load balancer, and cached the frontpage with redis elasticache.

Serve the app using auto scaling groups, that launches and terminates based on request loads.

But then again, there's never a one size fits all approach to scaling an app. Ones approach ends with ones level of experience I guess....others approach would be better of course.

7 Likes 1 Share

Re: Backend Software Engineers, Let's Talk About System Design by SilverG33k(m): 3:00pm On Dec 07, 2020
sarutobi:


Reduce cost by using AWS Is this a joke?

Decoupled architecture? Why? There must be a reason to go that far.

Nairaland is a simple app. Its does not need to have the frontend and backend hosted separately. A good dedicated server should handle the load well.

You can use the new buzzwords like angular, vue, nodejs etc to bamboozle the client and win customers but simple plain PHP/Python/Ruby with vanilla javascript will be more than enough to produce nairaland in record time.

I consider the owner of Nairaland to be very smart. this is why nairaland does exactly what it needs to do. Nothing more, nothing less.

Yes is he, very smart however, as simple as it may look, you never can tell how it can be optimized that the cost of running it would drastically reduce to a certain extent
Re: Backend Software Engineers, Let's Talk About System Design by MrJavaS: 3:01pm On Dec 07, 2020
Express js

1 Like

Re: Backend Software Engineers, Let's Talk About System Design by philcz(m): 3:03pm On Dec 07, 2020
SilverG33k:


I love this, interesting, you would definitely be needing devops. Great thinking really
And I would work with the poster on that. Architecture is lit
Re: Backend Software Engineers, Let's Talk About System Design by Harrykn: 3:09pm On Dec 07, 2020
ibnlawal:

Can you state the site website where you are learning it?
Shaw academy
freecodecamp.....
khan academy
sololearn and some w3schools

I use app like pictured below and download videos from YouTube.

Re: Backend Software Engineers, Let's Talk About System Design by iamwhat: 3:11pm On Dec 07, 2020
React (Next.JS for SEO ) >>> Frontend
Node.js (Microservices: Auth service, Post Service, Comment Service, Like service, Ads service) >>> Backend
AWS Auto Scaling ( Ducker + Kubernetes : Destroy unused servers when traffic is low and spin up additional servers when traffic is high) >>> Server
AWS S3 for media file >>> Storage
MongoDB + Redis (caching) >>> DB

3 Likes 1 Share

Re: Backend Software Engineers, Let's Talk About System Design by AZeD1(m): 3:20pm On Dec 07, 2020
cixak95211:


NL say she has 2.5M members, if that is anything to go by then indeed it has to be a microservice.
1) Shopify is at least 50 times bigger than Nairaland and it's still a monolith so what makes you think you need microservices? If you remove duplicate users (those with multiple accounts) and people who do not visit again how many do you think are members?

2) Sharding a DB from the start? How are you going to do it, what parameters are you going to use to shard?

3) NoSql DBs are good for unstructured data but Nairaland's data is structured. You have users, posts, comments and messages.
A user can have many posts, comments, messages (PM).
Posts, Comments and Messages belong to a user. This is classical SQL with makes RDBMS the obvious choice.


Examples of companies that have gone the route of microservices only to go back to monoliths.

https://segment.com/blog/goodbye-microservices/
https://aletheia.medium.com/istio-back-to-monolith-and-you-88dd3bd23265

Always remember premature optimization is the root of all evils

Beware of hype driven development... Just because big company X is doing something doesn't mean you have to do it.
The original question assumed 1k RPS and you can configure nginx to handle close to 500k RPS.

17 Likes 1 Share

Re: Backend Software Engineers, Let's Talk About System Design by Topmaike007(m): 3:26pm On Dec 07, 2020
adesmarty:
All these confusing big big terms are the greatest fears I have towards learning programming.. Where and when person want stay to know all these things
go and start something using YouTube...

Code ninja is there for you..

Start with html, css and add bootstrap to it for frontend then later you can come for backend.

Me self still dey learn too..

3 Likes

Re: Backend Software Engineers, Let's Talk About System Design by GeoAfrikana(m): 3:31pm On Dec 07, 2020
AZeD1:



Always remember premature optimization is the route of all evils


I'll keep this in mind.

Thanks.

1 Like

Re: Backend Software Engineers, Let's Talk About System Design by Nobody: 3:33pm On Dec 07, 2020
Please I need someone to talk about C#.

Gurus in the house, please can I be a successful UI/UX designer coupled with frontend development with backend like C#?

(1) (2) (3) (4) (Reply)

Which Nigeria University Are Good For Computer Science?? / Foreign Jobs(remote And Relocation) Discussions / Free Arduino Tutorials

(Go Up)

Sections: politics (1) business autos (1) jobs (1) career education (1) romance computers phones travel sports fashion health
religion celebs tv-movies music-radio literature webmasters programming techmarket

Links: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)

Nairaland - Copyright © 2005 - 2024 Oluwaseun Osewa. All rights reserved. See How To Advertise. 42
Disclaimer: Every Nairaland member is solely responsible for anything that he/she posts or uploads on Nairaland.