|
|
|
|
|
by sebringj
2995 days ago
|
|
Just noting this as I have some successful use cases of microservices as it may help others. What I mean by successful is I have reused them in many projects without having to modify them for each project, meaning they stood alone with only needing some config items to add one or more clients. 1) Authentication - JWT and OAuth provider related, can be used with multiple clients or installed per client
2) Pre signing of S3 uploads (very tiny file to do this one)
3) Ecommerce api w / shipping using fedex and stripe
4) Plugable CMS with JS dropped on a page used for UI and auth and S3 used as content store with an API sitting in between I guess some of them could be considered just an API? But if you can reuse it generally and the scope is fairly narrow, that is more of what a microservice should be. There is also the tradeoff where you may be thinking if this is so tiny, why even do it?...which is probably a good thing to consider before adding more complexity. |
|
- Proxies that upload/retrieve assets to multiple cloud providers (i.e. upload files to / retrieve from GCS and S3 in case one is down)
- A service that screens/transforms attachments/uploads for security before allowing them to reach other services
- An API for sending mail/SMS/other contacts via multiple providers to deal with outages to one or more providers.
Often, these are before built as libraries and imported into multiple projects which is the wrong approach. Offering up an API for these instead can help decouple.
However, the author probably doesn't understand versioning and deprecates or makes breaking changes to APIs and then has to update a bunch of consumers. If you want a decoupled system, you have to not break the system. This is why legacy stuff exists at older companies. Once API v1 of the mail sending service is done and working, there's no reason you need to break it, or add new features, or take it down. Keep it running and also run v2 so that people can use the new features. The author is probably running v1 and v2 out of the same codebase and overwriting the v1 history so they can't maintain it, that's just bad software project management.
Maybe the title should switch to: "coordinating a complex architecture is hard, I only build easy stuff"