Skip to content
Nick Ager edited this page Feb 18, 2021 · 5 revisions

Scaling with Serverless

  • Scaling with Serverless
  • Bob gregory - great talk.
  • Good overview of different messaging within AWS ie Kinesis, EventBridge, SQS, SNS
  • EventBridge is a PUB/SUB broker technology in which producers and consumers don't know about each other only about the event broker ie EventBridge.
  • Kenesis is used for analytics.
  • Different systems map to unique business processes with the company; eg buying a car vs selling a car
  • "I will die on this hill" that you've got to be able to test your system in isolation and be confident to ship it to production. Its not Ok to say I can't test my code because you made a mistake in your system. You need to clearly demark the interfaces between systems and design your test strategy to work in this way. Otherwise you have this combinatorial problem where as you get more teams and systems it becomes effectively impossible to release anything. The so called Distributed monolith antipattern; although you have lots of independant bits you need to be able to version and ship them all together and you can't move anymore. Test at the contract boundaries. Every system publishes its external API. Test that contract.
  • https://docs.pact.io - pact is contract testing.
  • Designing contracts. Using metaphors - 1970 office with pneumatic tubes or letters in the post or what if there weren't computers; how would it work, who would need to talk to who and what messages would be sent between people.
  • Synthetic or real data
  • Test the contracts of a system; use unit tests. Run some acceptance test. Trying to avoid people writing tests that need to run across multiple systems. People get stuck in a mindset of the only way to test something is to start a browser and run across all the things people do in the browser which doesn't work once the system gets above a certain size.
  • Invest in observability. A spectrum from unit test to running synthetic tests in production and observing the results and having metrics which can be used to find issue and so will work in production as well as.
  • When your testing a system think through the scenarios with synthetic data, rather than dumping a load of production data at it. Testing against real data, rely on observability and monitor how systems are working.
  • Use a headless ecommerce product: https://commercetools.com
  • Eventbridge schema registry which uses OpenAPI 3 format to JSONSchema, Swagger
Clone this wiki locally