3 ms·
you can get pretty far with (2) and (3), haven't really understood the need for (4) unless you're FAANG
by 383toast 11mo ago
you can get pretty far with (2) and (3), haven't really understood the need for (4) unless you're FAANG
- yearolinuxdsktp 11mo agoFacts! #1 is not insane as long as you keep your internals modular (all-in-one deployment doesn't mean ball of mud... you can avoid putting service calls into your domain objects or your data plane code). And you can go from #1 to #2 once you see the need and slice the services out that need it (such as decoupling async batch processing into a 2nd service that shares the domain and the data plane code and does not include the front-end).
- kstrauser 11mo agoIn fairness, it being a tightly coupled ball of mud is part of my definition of #1 here. What you describe is basically #2 waiting to happen, just that no one's needed to do it yet.
- yearolinuxdsktp 11mo agoMakes sense, I agree then that #1 as you exactly define it is insane.
- amarant 11mo ago4 doesn't really work for serious big load applications either: nobody will be able to understand the codebase. You want 3. During my days at mojang we did some variation of 3. We had ~250k requests/second, and handled it just fine (we had 4 nines availability forever chasing the fifth, and sub 20ms response times) I think even among those who do see big loads, few see as much malicious traffic as we did. This was one of the arguments for a micro service architecture. If a DDOS took down our login service, already logged in players would be unaffected (until their tokens expired anyway) Well, that was a long winded way to say, 3 is about as micro as you want to go. I've only seen 4 done once, and that site actually went under whenever they had more than 30 request per minute. (Admittedly they had made a bunch of other really bad decisions not covered in the above description, but having ~30 services on a team of 12, in order to handle a handful of requests per hour was certainly their biggest mistake.)