Also, I’m sure production monitoring is a real challenge. Did you implement 3rd parties services or did you build yours?
For any third party services, we would usually use the third party service if it had a sandbox mode. All local environments would point to the a separate version of the 3rd party. For example, we use Intercom, which provides a test environment for users, so our local API keys would point to that test environment.
Likewise, we use the IoT service from AWS, which I haven’t found a good serverless offline version yet, so we created a separate instance, role, and keys for local environments to point to.
Since we used Terraform, dev reproduces the prod environment by creating an IoT instance, roles, and keys for the dev environment.
For the most part, we utilized Terraform+Serverless to create reproducible environments. When on local, we would re-use that Terraform config to create any services that there weren’t offline versions of. For 3rd party services, we would create separate sandbox accounts to point to.