This is some sort of design problem facing in my company. We are building an online education platform , in this we got one interesting use case.
We have admin site currently (one front end, one back-end, one mongodb server), here admin will create the courses, content, divide the students into batches. we have mentors, TA's every content , classes, batches management is done from this side.
Now we have another static front end application up to now, for students. Now we have to design a separate interface for students for accessing this course, assignment, content which was created by admin.
The business requirement , the student site should never go down, it should be available every time and they want student and admin instances to be separate for security reasons.
Here comes the architecture problem, now we have three options
Separate front end, back end, database for admin and students. . Here we have to fetch the content from admin app , because all the content will sit in admin database. If admin app server is down, we can't fetch the data which will make student app down. Data redundancy exists here.
Separate app servers for student and admin but single db. My insights are on this one only because here we don't need to duplicate the data. But here we depends on admin app server to fetch the data because all the course data will sit in admin only and the models are defined in admin app server only
All student and admin data in single front end, back end , mongo db server. Here there is no redundancy, everything is monolith , but here comes the problems of abstraction in having separate security and notification framework like that , because as requirements varies, how we can handle that. We have senses of bloating code.
I was pulling my hair on how to solve this, so please give me insights on how to approach this, is there anything i was missing, is there anything blunder, please let me know.
We are using MEAN stack
We can use redis to manage the data for showing to students instead of calling admin site every time for content. There are lot of trade offs and options, i am in dilemma on to which side i have to go.