We are experts in the design, development and ongoing operation of progressive API based, microservices architectures that take advantage of cloud native capabilities. Leveraging our expertise with Serverless solutions built around AWS Lambda, we are able to deliver business value to our customers by developing cloud native solutions that are not only resilient and scalable, but also have low operational costs.
AWS Lambda supports a variety of use cases. It is simple to use, supports multiple languages and frameworks and is inexpensive to run. Three of the most common use cases addressed by the solutions we deliver to our customers are developing Serverless web applications and building both integrations with external services and data ingestion services.
Serverless web applications
Our clients often need to get new features to market quickly to be able to respond to the ever changing needs and behaviours of their customers. We combine AWS Lambda with a number of other AWS services to build serverless web applications that are able to aggressively scale to meet traffic demands, provide resilience for strict SLAs and evolve quickly as your business changes. This architectural style avoids the undifferentiated heavy lifting often associated with delivering rich interactive experiences, allowing customers to focus their time on delivering real business value.
Static site objects are stored and retrieved from the Amazon Simple Storage Service (S3). Access speeds for downloading the content can be improved by caching content in Amazon CloudFront. Lambda@Edge can also be used to deliver very low latency services. Requests from the client are routed using domain name resolution services provided by Amazon Route 53.
Requests are sent to Lambda functions via API Gateway HTTPS endpoints. The API Gateway secures the API endpoints and provides a consolidated view of all endpoints to the outside world.
The AWS Lambda function handles the application logic that when triggered will retrieve data from the fully-managed DynamoDB non-relational database service.
Serverless architecture also allows us to adopt modern deployment processes such as canary deployments. With canary deployments, new features can be phased in and trialled with little impact to customers. Deployment times can be greatly reduced allowing deployment to production earlier and more often which ultimately allows our customers to experiment with new features without incurring undue risk.
Integrating with external services
Slow responses from external services can often impact the performance of web applications. When integrating web applications with these external services, we can leverage deep integrations between AWS Lambda and a rich set of AWS services to counteract any performance impacts.
One way to minimise these impacts to the customer experience is to periodically refresh a locally cached version of the data sourced from the external data provider. For this example, we invoke the Lambda function through a time-based CloudWatch event, but we can also invoke it through other trigger mechanisms that include web hooks or messages.
The AWS Lambda function handles the application logic that when triggered will retrieve the latest data from the external data provider API, e.g. flight data, and update a table in the fully-managed DynamoDB non-relational database service.
This locally cached version of the data can then be used for the web application to hide any slow responses from the external service from customers.
Data ingestion services
Data ingestion services are often complex and time consuming to develop and maintain. When developing these services we combine AWS Lambda with other AWS data processing services to simplify the retrieval of data from external SaaS data sources, to be processed and stored ready for ingestion by internal data platforms.
For this example the AWS Lambda function is triggered by predetermined schedule events added to an SQS Queue. The AWS Lambda function will fetch data for the scheduled event from a particular SaaS data service.
The retrieved data records are then submitted to either Amazon Kinesis or Amazon SNS, depending on the volume of records retrieved. Each of the two event streams supported has a single subscriber that takes records and populates the Amazon S3 bucket. Amazon Kinesis Data Firehose is used for the Kinesis event stream and a custom topic subscriber Lambda is used for the Amazon SNS event stream. For minimal latency, other users of the data could subscribe to an event queue for updates as opposed to querying the data ingested by the Internal Data Platform.
The final step is for data in the Amazon S3 Bucket to be read by the Internal Data Platform for ingestion and to be made available for query purposes.
There is an opportunity to not reinvent the wheel and to help reduce common challenges and risks organisations face when adopting new technologies, which is why have made a significant investment in the creation of solution accelerators. This provides several advantages:
- It helps to demonstrate and prove our capabilities.
- Helps accelerate implementation by minimising the duration of iteration 0 activities and time to start building features.
- Not only a technology quick start but also a team quick start by reducing the time taken to make technology decisions and align ways of working.
- And it provides a smoother path towards productionisation.
Our Serverless accelerator
Our Serverless based accelerator platform, Choris, is built on AWS and implements a number of common patterns that can help organisations get going faster. It provides an end-to-end development approach inclusive of the following core components that support rapid application development and automation of AWS services.
Our accelerators not only provide the capability to fundamentally change the way digital solutions are developed and built, but most importantly, it provides a great opportunity to create cultural change around technology, attract amazing people and deliver great experiences for customers.
Please contact us for more information or to organise a demonstration of our Serverless accelerator.
AWS Lambda helps to remove some of the complexity when we develop Serverless, cloud native solutions for our customers.
- Applications scale automatically – automatically scale up or down to handle your critical usage periods.
- Applications are resilient – run highly available configurations across multiple availability zones.
- Costs are reduced – you only pay for the number of requests for your functions and the duration, not for idle computing time.
- Operations are simplified – as a fully managed AWS service, you run your code without the need to provision or manage any servers.