Passer au contenu principal
Uber logo

Réinventez le monde avec nous

Parcourez les offresParcourez les offres

Réinventez le monde avec nous

Parcourez les offresParcourez les offres
Backend, Engineering

uAct – Unified Action Platform

9 février 2023 / Global
Featured image for uAct – Unified Action Platform
  1. Pullo – to raise access requests for software tools and services
  2. Uber Feedback – to provide and receive co-worker feedback
  3. Uber Learning – to undertake assigned training
  4. Workday – to apply for leaves, sign HR contracts, etc. 
  5. ERD-PRD tool – to seek and provide approval of engineering and product documentation
  6. UberHub – to make requests for IT infra, hardware & software, etc. 
  1. Provide an aggregated view of an employee’s pending requests across several applications
  2. Track, manage, and take action on requests 
  3. Approve/reject requests on the move via Slack 
  4. Nudge the approver in case of critical or long-pending actions
  5. Filter/sort requests on various parameters to quickly get to the important ones
  6. Maintain an audit trail of actions initiated from uAct 
Image
Figure 1
  1. Real-time Ingestion: Requests are fetched in real-time from source applications
  2. Offline Ingestion: Requests are fetched from source applications via cron jobs and stored in uAct’s data store using the . Request Crawler fetches either in an incremental way (to get updated requests) or a complete way (to get all requests).  These crawls are set up at scheduled intervals that could be different for each application based on the nature of the data being ingested. Request Ingestor saves the fetched requests into the Requests Store.
Image
Figure 2
  1. Received Requests View: This is uAct’s default view showing requests that are assigned to the user to take some action, such as to Approve/Reject
  2. Sent Requests View: This view shows requests initiated by the user and helps in tracking them to closure
  1. Be redirected to the source application, landing on the deep-linked request. The user can then take the desired action in the source application itself.
  2. Take action within the uAct Platform. Action Dispatcher authenticates and authorizes the request, then relays the action (e.g., Approve/Reject) to the source application. Additionally, Audit Trail Provider creates an entry in the Audit Store for compliance and visibility purposes. 
Image
Figure 3
  • Receives the requests coming to the platform 
  • Converts the requests object to the entity object and transfers it to the next layer (controller)
  • Returns the results received from the next layer (controller) into the response object
  • Contains the business logic of the application
  • Fetches the data from the gateway and repository orchestrator
  • Compiles and returns the results to handler
  • Routes the requests to the gateway clients using a mapper for each application
  • It aggregates the responses received from multiple gateway clients
  • Routes the requests to the DB clients using the mapper for each data store
  • It aggregates the responses received from multiple DB clients
  • Acts as a bridge between the uAct boundary and source application domain
  • Maps the client response to uAct entity object
  • Acts as a bridge between uAct boundary and uAct data stores
  • Maps the relevant data store object to uAct entity object
  • Handles interaction with a variety of uAct data stores, each catering to a different requirement:
    • MySQL client manages user requests/approvals 
    • CacheFront client manages the user preferences
Image
Figure 4
Image
Figure 5
Image
Figure 6
  1. Database vs. API Interaction
  2. Queue-based event stream consumption vs. Bulk report (query builder) consumption
  3. Rest Https vs. Thrift vs. gRPC protocol
  4. Complete system dump vs. time-based delta dump
  5. On-demand Pull vs. Constant Polling 
  1. Fetches chunks of data from source application
  2. Validates and ingests the data 
  3. Maps application-specific data into uAct’s generic data schema
  4. Ingests data into the uAct data store
  5. Repeats all these steps until ingestion is complete
  • Real-time Ingestion source applications: For these applications, uAct only needs to add a new Gateway Mapper to interact with the source application client. The business logic of the Controller layer does not need any changes, hence does not hinder the existing functionality. This also means minimal development effort for the dev team.
  • Offline Ingestion source applications: For these applications, requests are stored in MySQL DB. Common MySQL query is formed to fetch the requests on demand. In this case, no explicit changes are required on the backend.
Image
Figure 7
Image
Figure 8
Image
Figure 9
Image
Figure 10
Image
Figure 11
Image
Figure 12
Image
Figure 13
Image
Figure 14
Chankit Bansal

Chankit Bansal

Chankit Bansal is a Sr. Software Engineer on the Workforce Data Experience (WDE) team within the IT Eng org at Uber. Chankit provides tech leadership on a number of applications aimed at improving employee productivity, including uAct.

Manmeet Kalirawana

Manmeet Kalirawana

Manmeet Kalirawana is a Software Engineer II on the WDE team within the IT Eng org. Manmeet has led the design, architecture, and implementation of the uAct Platform from the ground up.

Aasav Badera

Aasav Badera

Aasav Badera is a Software Engineer on the WDE team within the IT Eng org. Aasav has been instrumental in building integration with source applications in uAct.

Publié par Chankit Bansal, Manmeet Kalirawana, Aasav Badera

Catégorie :