We at the MaaS Global go serverless-first when we build our mobile app's backend service. Since 2016 when we started to develop the service, we've used Lambdas, API Gateways, and other managed services that AWS offers.
Our service contains hundreds of Lambdas per stage, dozens of API gateways, S3 buckets, and such. In addition to that, there are dozens of ways to do the same thing in AWS. For example, you can use Lambda, Kubernetes, ECS with Fargate, or plain EC2 instances for computing, and all options come with different features and restrictions. So even for senior engineers, adding new pieces to this puzzle can feel overwhelming. When the organization grows, and new engineers join the team, they also must adopt the internally used practices as part of the onboarding process.
To help engineers with their efforts to architect features consistently, we've introduced a library of patterns that can be used to build larger architectures. It contains simple things like an API gateway, Lambda and PostgreSQL connection, S3 event triggers and queue processing. Also, it includes some high-level patterns such as a webhook proxy and cross-account event routing.
Our patterns library is publicly available in GitHub https://github.com/maasglobal/maas-aws-patterns.