|
|
|
|
|
by jbwyme
4384 days ago
|
|
Loose coupling is awesome and dogfooding your public API is smart as well. However, it seems like there is a lack of strong technical leadership and a lot of big decisions are being made without thinking them through. For instance, "We were constrained by the same rules we enforced on third-party applications... It was not possible, for example, for a microservice to notify users about activity on private tracks". This type of constraint should be immediately obvious to the person/people making large architectural decisions. Throughout the article there are a few examples of "we tried this but shortly found out it wouldn't work". I may be wrong though and this whole post was actually the result of an hour meeting to discuss new architecture but phrased to sound like you actually tried all of those approaches. |
|
I didn't get that impression at all. The ability to do it right (tm) the first time is quite often hindered by the need to iterate quickly and focus on growth and/or revenue. You'll eventually end up with an increasingly-more-painful monolithic core system, but that's an okay trade off if it got you to a place where your business really takes off.
At that point you have a few options. You can do a major rewrite, re-architecting everything from the ground up. Or, you can take Soundcloud's approach, and slowly migrate the old system to a more service-oriented architecture, reducing the amount of dev resources you need to throw around.
The trick is that the slow migration will be different for every business, and it depends on the needs of the platform and the way things were constructed initially. Just like you can't blame the technical leadership the trade-offs made early on, and you can't blame them for experimenting and iterating before finding solutions that worked for them. (After all, hindsight is 20/20.)