Carousell is a consumer-to-consumer mobile marketplace.
Carousell is one of the largest and fastest growing classifieds app in Asia. Since our launch in May 2012, we've expanded into 19 major cities with over 158 million listings. As a team of passionate individuals working together to solve meaningful problems, we want to build products that make selling as easy as taking a photo and buying as simple as chatting to inspire every person in the world to start selling and buying so we can share possibilities. While solving problems for our users, we want to make the best use of all the available technologies to improve user experience and engineering productivity.
Here at Carousell, the systems engineering team works on a variety problem domains. The challenges range from designing scalable systems for a huge and critical user base, making best use of various infrastructure automation technologies to troubleshooting intricate performance and scale issues.
- Design and build core infrastructure components that power Carousell. This includes all layers of the stack: routing, services, storage etc.
- Automate all aspects of infrastructure deployment to ensure fast, error free and repeatable deployments.
- Design and deploy best in class monitoring and alerting systems to ensure easy troubleshooting when needed.
- Optimize performance of various components, including application code, databases, key-value stores, indexing engines etc.
- Ensure high availability of the Carousell infrastructure.
- Set high standards for engineering throughout the company and mentor junior engineers.
- Strong experience in building scalable systems. Experience with microservices and exposure to highly available web scale systems is a must.
- Knowledge of modern tech stacks. Strong, hands on programming skills: either in Go or Java.
- Strong knowledge of storage technologies, including databases (Postgres), key value stores (Cassandra etc), caching systems (Redis) and search engines (Elasticsearch).
- Experience of working in cloud environment.
- Strong knowledge of distributed systems. Should be able to reason for data consistency and availability.
- Strong general Computer engineering fundamentals (OS, networking, data storage).
- Demonstrated ability to work smoothly in teams and with equally strong peers.
- Good communication: both verbal and written.
- At least 5 years of experience as a software engineer with relevant experience working in systems engineering.