Identifying the Critical Paths A critical path is typically a user experience that is critical to the operation of your business. Examples of user requests that follow critical paths include ordering a taco, making a payment for your child’s Christmas present, donating to a charitable cause,or tracking a parcel. If these requests go wrong or […]
Category: Promoting Serverless Observability
Instrumentation – Operating Serverless
Instrumentation Instrumentation is the process of configuring the microservices and managed services in your system to emit trace data when making API calls and performing tasks. For managed services, API calls are instrumented via the configuration of the resources you create. For example, to enable tracing for a Step Functions workflow you would include this […]
Debugging with the Core Analysis Loop – Operating Serverless
Debugging with the Core Analysis Loop When you receive a notification, either from an alert or directly from a user, that something in your application is not working correctly, you know that something is wrong but you do not know why. Following the core analysis loop, as introduced in the book Observability Engineering, allows you […]
Noncritical paths – Testing Serverless Applications
Noncritical paths The noncritical paths in your application will usually be background processes. These will not be time-sensitive and will be fully recoverable in the event of performance degradation or outages resulting from transient bugs or persistent errors, or following a code fix or rollback. The operational quality of noncritical paths should be primarily supported […]
Just enough testing – Testing Serverless Applications
Just enough testing Adopting a test strategy of “test everything all the time” simply does not scale. As your application’s codebase grows and becomes increasingly fragmented across microservices and infrastructure stacks, this all-encompassing test strategy will require you to continually add more tests, spreading those tests across more service boundaries. No matter how much you […]
Just-in-time testing – Testing Serverless Applications
Just-in-time testing To efficiently test and deliver your serverless applications, it is not enough to limit your test coverage; you must also limit the number of times those tests are run. Serverless and infrastructure as code make it possible and inexpensive to replicate your production environment. However, if a test passes in one non-production envi‐ […]
Environments – Testing Serverless Applications
Environments The traditional approach to software testing involves the use of multiple pre-production, or staging, environments. A snapshot of the application is deployed to the first environment in the chain and then promoted to the next environment as soon as all the tests pass, until this version of the application finally reaches production. The common […]
Integration points testing checklist – Testing Serverless Applications
Integration points testing checklist For each integration point you should capture the failure modes for the categories listed in Table 7-1 and decide whether to cover them with tests. Table 7-1. Integration points testing checklist Remember not to couple decoupled components in your tests. Whenever possible, test the source and target of an integration point […]
Testing integration configuration – Testing Serverless Applications
Testing integration configuration In our example architecture, you are responsible for the configuration of the custom EventBridge event bus and the EventBridge rule, which includes the event pattern and the target. Using an IaC framework such as the AWS Cloud Development Kit allows you to make assertions about the resources in the underlying CloudFormation template. […]
Identifying the Units of Scale – Operating Serverless
Identifying the Units of Scale Most of the serverless managed services you will use in your architecture will provide automatic scaling and pay-per-use billing. This means you will be able to scale your application to respond to any level of demand while only paying for the resources you use, when you use them. For example, […]