Yassir is the “super app” category leader in French-speaking Africa, using on-demand services such as ride hailing and last mile delivery, which solve important and immediate needs, so to build unconscious trust in order to fuel financial services for this large but previously underserved population (+80% unbanked without large scale on demand services).
About Yassir: Yassir is the “super app” category leader in French-speaking Africa (currently available in Algeria, Morocco and Tunisia), using on-demand services such as ride hailing and last mile delivery, which solve important and immediate needs, so to build unconscious trust in order to fuel financial services for this large but previously underserved population (+80% unbanked without large scale on demand services).
About the Role: We are looking for an engineering manager to lead our engineering department and help us build great products. You’ll also manage our infrastructure and ensure all internal systems operate securely and effectively.
To be successful in this role, you should be confident managing our teams while, at the same time, setting goals, budgets and timelines for various projects. We also expect you to be in charge of our integrations with external partners and oversee all software development plans from ideation to execution.
What you'll do: Oversee front-end and back-end development teams and their projects Monitor reliability and performance of all internal systems to suggest improvements Ensure compliance with security regulations Manage software development projects by setting requirements, goals and timelines Prepare and manage the engineering department’s budget Design strategies for future development projects based on the company’s overall objectives and resources Hire engineers and coordinate their training Implement innovative technologies Coordinate with external stakeholders for new integrations and tools Review and update policies relevant to internal systems and equipment
Requirements Work experience as an engineering manager or in a similar senior-level position at an engineering department Extensive experience with cloud technologies and modern human-computer interfaces Hands-on experience in back-end and front-end development Good understanding of agile methodologies Leadership abilities with a strategic mind Excellent project management skills Ideally experience managing remote teams. BSc/MSc in Engineering, Computer Science or relevant field
Yassir infrastructure is mainly hosted in GCP and relies on many GCP services
Main architecture components
Mongodb Database Mongo Atlas fully managed DB Cluster of 5 nodes 1 master 2 secondary 1 read only 1 for BI/Analytics Hosted in GCP, in the same region as Kubernetes cluster’s region, for low latency. Redis 1 x Memory Store node which is a fully managed Redis as service hosted on GCP Used for : Caching Queue Broker for Socket IO
Exposed backend Language : NodeJS Role/purpose : Authentication of token based requests Verification of token signature Autorisation based on user’s role extracted from token, to access specific url paths Proxy requests to internal backend Internal backend Language : NodeJS Sits behind the exposed backend, Assumes coming requests are already authenticated and authorized. Communicate with MongoDB directly
Socket IO server Takes care of real time communication use cases Used Redis as broker for scalability. Parallel processes can handle multiple socket connexions Other processes like workers or internal backend could broadcast or send messages through the Broker (Redis).
NodeJS Scheduled Jobs
Same code base as Internal Backend
Have access to DB
Jobs are scheduled using Kubernetes Jobs configuration
Example jobs:
Calculate drivers invoicing status by the month
Calculate drivers invoicing status by the day
Various scheduled exports
Reset monthly consumed balance for b2b users
Time consuming asynchronous Real time jobs
Fault tolerant
We use Google Cloud, Cloud Functions Node Js
We use a Google Cloud PubSub as Queue, Each topic of the queue triggers a cloud function each time a message is pushed into
Used mainly for :
generate invoices and various email attachments
Send emails
Send push notifications
Real time tasks Workers:
Same code base as Internal Backend
Have access to DB
Multiple process running in parallel for maximum concurrency
Processes are listening to ultra fast Redis based Queue.
Each message produced to queue is consumed by a worker as Task
Once a task is completed by a worker, it will listen again for new messages
This architecture guarantees that a task is consumed only one time, and therefore executed by max one worker.
Usage:
Trip/Order assignment
Send driver/courrier location to rider/customer through socket, on each location update while driver on approach
GCP load balancer is used to managed routing of requests
SSL traffic is handled at GCP LB level.
Socket requests are proxied to socket io server
Other requests are proxied to the exposed Exposed backend
fulltimeRemote3+ years
fulltimeUS / RemoteEngineering manager6+ years