TripAdvisor backed Eatigo's restaurant reservation platform is Asia's No.1, book and dine at top restaurants in Asia at the best price. However, during the COVID-19 pandemic, the company shifted its focus to adapt to the changing business landscape, enabling restaurants to continue serving customers despite lockdowns and restrictions by delivery and takeaways.
Responsibilities
- Order Management System: Implemented the order state machine to ensure smooth transitions between states, enabling efficient handling of both reservations and new delivery/takeaway services.
- Billing System Enhancement: Upgrade the existing billing system, ensuring it supported the complexities of delivery and takeaway orders.
- Integration with Multiple Payment Providers: Integrated multiple payment providers to offer secure and flexible payment options for different cities.
Technologies
- Languages: Go (Golang)
- Designed Algorithm: Finite-State Machine (FSM)
- Data Store: MySql
- Messaging Queue: SQS, DLQ
- Infrastructure: Docker, Kubernetes, AWS, Buildkite
- Monitoring and Analytics: Datadog for real-time error alerting, and monitoring
- Logging and Error Tracking: Elasticsearch and Kibana
Challenges and Solutions
Challenge: Adapting a reservation-only platform to handle delivery and takeaway orders efficiently without disrupting the original reservation system.
Solution: Enhanced order state machine that seamlessly managed both reservation and delivery/takeaway workflows.
Challenge: Billing system, with considering multiple payment providers - Aydin and Stripe, to account for delivery/takeaway fees, dynamic pricing, and refund processes
Solution: Collaborated closely with the billing team to provide essential information, ensuring the existing billing system was updated and aligned with the new order flow.
Impact
The platform was able to quickly adapt to the new business requirements brought on by the pandemic, allowing restaurants to offer delivery and takeaway services seamlessly.
Role and Contributions
As a Senior Backend Engineer, my primary responsibility wasenhancing the order state machine
to ensure seamless transitions between different order states. I also had the opportunity to closely collaborate with the billing team, providing key insights to ensure the billing system was updated and aligned with the new order flow.
Additionally, I adapted the payment provider service to support multiple providers, allowing city-specific configurations for payment options.