Our Client provides a seamless way for hospitality venues to interact with their customers through one solution that provides many associated services needed for both traditional service and quick service restaurants. This ground-breaking ordering and mobile app and solutions platform delivers increased opportunities for both consumers and businesses. It is a dynamic mobile technology company specialising in innovative use of mobile and cloud technologies to simplify and speed up consumer / merchant interaction.
The backend team is responsible for building and maintaining scalable microservices that enable them to process tens of thousands of orders and payments every day (this number is increasing every week!). From building and storing menus, to processing payments taken via Stripe and placing orders with 3rd parties. You will work closely with other backend engineers and the wider engineering team to develop new features and iterate on existing functionality that is used by thousands of users every day.
Tech stack details:
Our client has an event driven, microservice architecture running on Kubernetes. They use SQS heavily for event queues, Redis, Aurora Postgres and DynamoDB. As the company scales they are starting to consume SQS messages outside of their Kubernetes cluster using AWS Lambda. Their services are deployed to Kubernetes via Elastic Container Registry and are written in NodeJs/TypeScript. Github Actions are used for CI/CD. They have a number of HTTP APIs for their products such as their native mobile apps and restaurant portal website. Pusher.com is used for any event driven communication with their apps and websites. ReactJS web applications are hosted on S3 and delivered via CloudFront. ElasticSearch is used for application logging, DataDog and CloudWatch used for monitoring. ETL tools populate Snowflake used by their Data Engineering team.
1. Review other team members code and architecture designs and provide feedback to ensure high code quality and scalability throughout their codebase
2. Work (and sometimes lead) on projects to deliver new, and improve existing functionality 3. implement code changes to existing services with minimal disruption to existing functionality and performance
4. Work collaboratively with other cross functional teams to deliver end to end features
5. Suggest and implement changes to day to day working processes to improve ease and efficiency of development lifecycle
6. Optimise existing features to improve overall performance as they scale
7. Ensure your code is readable, maintainable and testable - utilising TDD wherever possible
8. Troubleshoot, debug and resolve high priority issues where they arise
Required Skills and Experience:
● React with TypeScript
● SQL (postgres) and noSQL (dynamoDb, redis) databases
● Docker and Kubernetes
● AWS services - RDS, EKS, SQS, S3, Lambda
● Test driven development (TDD
● Git & GitHub
● Experience with Continuous Integration & Deployment
● Experience working with payment providers
● Experience working with open banking (nice to have)
They are looking for a candidate with strong communication skills and the confidence to challenge ideas to ensure the best possible solution is chosen. This is a fast-paced company with lots going on, presenting a challenging agenda for the future. It is also an incredibly rewarding company in which to work and this role presents an opportunity to make a difference to the organisation and move it forward significantly.