Answer the question
In order to leave comments, you need to log in
What is the best way to design a cloud service?
I am building a cloud service.
In a nutshell, a small accounting program.
--
On nginx+django+postgree.
Got a question.
How to make it safer and more correct.
--
1. All in one application and on one database, and bother to resolve rights between users.
--
2. Or for everyone to make his isolated micro server.
With his database, his environment.
---
As if in the first case there is no overhead, but it's dumb that if they break it all at once, or it will break for everyone at once.
Especially security worries users will need to be protected from each other somehow.
But how would it be easier to update and manage.
--
And in the second case, overhead costs, everyone will eat a little more resources.
We'll have to figure out how to administer them at once, update them and control everything at once.
But on the other hand, if someone is broken, then it’s him alone, and even if something doesn’t break for everyone at once.
And scale if it’s more convenient, know to add servers if one suddenly stops being enough.
---
Which option do you think is more correct and reliable and why?
Answer the question
In order to leave comments, you need to log in
Or for everyone to make exactly his isolated micro server
And in the second case, overhead costs, everyone will eat a little more resources.
All right, but.
In fact, division by instances does not greatly increase reliability, because they will be of the same type, which means that they will be vulnerable to all at once, if we talk about classic 0day vulnerabilities ... i.e. that in a monolithic version, that in a distributed one, if they break, then most likely everything at once.
A distributed solution has good benefits
- horizontal scalability is facilitated, it is possible to transfer especially busy users to a separate server 'out of the box'
(a monolithic version can also be taken out separately using master-master replication, sometimes it gives a huge plus, but at the expense of memory costs, since all data is copied)
- the chance of breaking everything due to an administration error is slightly reduced, especially if the integration of updates will not be carried out immediately for everyone, but it is possible to allocate a group of individual users for a live test, i.e. you will break everything for the test group and not for everyone at once ... but the chance is really scanty, errors according to the law of meanness are always insidious and nasty.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question