How to Streamline the Customer Experience with Monads in Kotlin

 At my company, we see a lot of SDKs and Swagger-generated clients that could throw exceptions at any time. This could be a fault in our logic, or it could be a fault with some 3rd party SDKs that have no rhyme or reason to how their exception handling works. But either way, when our customers want to fetch a Git commit history for a service, they do not want to be greeted with an error message.

We've seen GitHub go down during a customer demo and 3rd party integrations throwing other unexpected exceptions. Overall, it was a very discouraging experience for our customers that we had no control over.

Microservices Testing: Key Strategies and Tools

Development teams are increasingly choosing a microservices architecture over monolithic structures in order to boost apps' agility, scalability, and maintainability. With this decision to switch to the modular software architecture — in which each service is a separate unit with its own logic and database that communicates with other units through APIs — comes the need for new testing strategies and new testing tools.

Testing microservices is a critical part of the microservices application process: you need to ensure that your code doesn’t break within the unit, that the dependencies in the microservices continue to work (and work quickly), and that your APIs meet the defined contracts. Yet, because many microservices are built with a continuous delivery mode to build and deploy features consistently, developers and DevOps teams need accurate and reliable testing strategies to be confident in these features.

So which different types of tests exist for microservices, how can they work for other areas of your software, and what are their benefits? The well-known "testing pyramid" can provide a testing framework for approaching these tests.

According to Martin Fowler, a prominent author on software engineering principles, “The 'Test Pyramid’ is a metaphor to group software tests into buckets of different granularity.”

The different layers of the pyramid are defined as: