Serverless Stack for Our Web Application Development

Yi Ai
Yi Ai
Nov 21, 2018 · 3 min read

The choice of a relevant tech stack is particularly challenging for us, Whenever we want to build a product from scratch, the option is always to go with the easiest solution, however, easy is far more enough, the main aim of a developer is not just to build a professionally, functioning software, but something more than that — maintainability, scalability and security of the app, the levels of which would be determined as per the requirements.

I’ve decided to share our experience for choosing the most appropriate tech stack for our applications.

Backend

There is no server at all, we build Serverless applications! Why Serverless? because it is cool, AWS lambda can be automatic scalability, high availability and reduces costs dramatically. It also makes things simpler since there are less moving parts: no servers, no load balancers, no auto-scaling groups…

The main techs we use are:

For database, we use no-sql AWS DynamoDb and Amazon DynamoDB Accelerator (DAX) which is a fully managed, highly available, in-memory cache for DynamoDB

Authentication and Authorisation

We designed centralised fine-grained authorisation flow using Amazon Cognito User Pools with federation to Azure AD and store user role policy to DynamoDb, with this design, one Cognito user pool can auth all users from different apps and websites.

Frontend

Here are the major frontend technology stack we use

  • React
  • Apollo Graphql Client
  • AWS Amplify
  • Babel
  • Webpack
  • AWS Amplify

Where is the Redux? How do you handle local state? While implementing the Apollo client, i realised that application with local state keys can use apollo-link-state to replace Redux for managing local state.

Docker

Docker is not serverless, however We only run development and test builds using Docker, which fixes mismatched node version causing different behavior between developers and testers.

Error Tracking

We use Sentry for our error reporting, and we love it. It is simple, gives options for a lot of different use cases, and can easily be integrated to AWS.

Testing

Check out this Awesome Article!

CI/CD

My favourite deployment tool is CircleCI, We use CircleCI to automatically deploy our web apps to Amazon S3 buckets


I always think to use the right techs for the job. I’m very excited about the Serverless stack we have been using for our projects. In our case, building our production projects proved that Serverless is mature enough to run production loads.

The Apps Team

We are an Applications Team in Australia. Our mission is to provide our staff with the best technology to provide the best possible service to customers.

Yi Ai

Written by

Yi Ai

An aspiring full-stack developer, a Serverless enthusiast

The Apps Team

We are an Applications Team in Australia. Our mission is to provide our staff with the best technology to provide the best possible service to customers.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade