|
|
|
|
|
by bognition
213 days ago
|
|
Hard agree with this article. Split up your application by domains, create public apis between modules, understand your dep tree and keep it clean. The devil in the details is how you pull something like this off. At the end of the day is boils down to how do you enforce that your team does the right thing. You can have a single person that enforces standards with an iron fist, but this doesn't scale. You can teach everyone how this should work, but you're going to experience drift over time as people come and go. Or you can enforce it using technology and automation. In the cases of the first choice, its going to restrict how big your team can get and will end up eating all of the time of your one person. In the case of the second choice, a combination of the tragedy of the commons and regression to mean will degrade the system to spaghetti code. For the third scenario language choice matters here a lot. In Java with multi maven modules you can setup maven to forbid imports of specific module types allowing you to make modules as private/public. In Python you can't do any of this. |
|
In the end, AWS only happened because of Jeff Bezos’ infamous “all intra-team communication now goes over HTTP, no exceptions, or you’re fired”-email.
The decision to prefer modules whenever they do the job, and defer only to microservices whenever they don’t, seems like the kind of mantra that needs to come from the CTO and made part of the company culture’s DNA.