4 ms·
The major problem of bringing in external technologies is that they take over your architecture, not that they might introduce bugs. There is no catch-all arch
by white-flame 10y ago
The major problem of bringing in external technologies is that they take over your architecture, not that they might introduce bugs.
There is no catch-all architecture, so there is guaranteed to be some impedance mismatch between the expectations of your project, and the provisions of the 3rd party tool. Heaven help you if you need the facilities of multiple architectures, and try to marshal and connect disparate datatypes and calling/threading assumptions together.
As programmers, we work with general purpose programming languages. Many project-specific problems are not difficult to solve in a custom manner, given somebody with enough experience and hindsight to know how to write such a forward-looking thing robustly. It is a serious consideration whether or not to defer your architecture to generic external sources that were not written with your unique needs in mind. And even if you do, it is by far a best practice to ensure that such things live behind an application-specific abstraction separating out your project-specific code from entangling 3rd party code, allowing you to perform the inevitable migration to a different platform later.
- davidgerard 10y agoThis is an issue we're grappling with at present, as we move all our sites out to AWS: do we build our apps to use the incredibly tempting AWS services, or do it ourselves? Our present approach is "hell yeah, if it can be outsourced it should be" and that applies to services too. We do keep an awareness of what it would take to do each thing by hand again though.
- white-flame 10y agoWith AWS, I think cost becomes a significant issue in selecting which services to use, more so than development issues. But then again I've also always found that once you start coding to it, AWS gets you 90% of what you want, and you spend the other 90% of the time fleshing out the exact retry, migration, and error-handling behaviors you need manually on top of it. :-P