At an emergency call center, something wasn’t right. All of the calls coming in were apparently coming from the same spot in the middle of the Atlantic ocean! It turned out the third-party geo-location service that the call center was using had stopped working. For each address query, the service was simply responding with latitude and longitude (0,0). This default error value made it look like the dispatch center was suddenly serving Atlantis!
Some issues occur outside of our organization that we can only react to. Common problems involving external dependencies include:
- A dependency no longer being supported
- A dependency being taken down
- A dependency having an internal outage of its own
There are a variety of methods we can use in order to help resolve issues with external dependencies:
- We can be on the lookout for news of scheduled outages, vulnerabilities, or cancellations from our most important dependencies.
- We can define fallback strategies for our external dependencies. If we detect that a dependency is not working, we might switch to a different dependency, or hide the functionality that depends on the failing service.
- We can automatically update dependencies as new versions are released. However, there is the possibility that a change in the new dependency version can result in our system breaking.
When using external services, we open up our system to issues that are often outside of our control. On the other hand, external services enable the development of far more powerful applications than we could create on our own. By implementing resiliency strategies, we can have the best of both worlds.
Have you used any external dependencies in your projects? Has this caused any problems?
In late 2021, an outage of Amazon Web Services (AWS) caused many major sites that depended on that cloud to become unavailable for several hours. Gamers were locked out of their matches. Students were unable to access their online classrooms. Customers couldn’t log into their bank accounts. This was an important illustration of the number of companies relying on the same dependency.
In this illustration, we can see an application depending on an external service only for it to become disconnected.
So far, the problems discussed have basically been accidents. These problems occur not out of malice, but from the complexity of managing complex systems. But what about problems caused intentionally, to cause harm to our organization? We will be discussing these malicious actors next.