Project

General

Profile

Idea #13497

Updated by Tom Clegg almost 6 years ago

h2. Background 

 This is the first an early step toward retiring the Rails API server (#9053). It unblocks: 
 * implementing new APIs in Go (without increasing the discovery/routing burden in every client/SDK) 
 * porting individual APIs to Go (without having to update all clients/SDKs each time, or proxy requests through Rails) 
 * federation routing (#13493) 

 Related goal: 
 * refactor existing Go services as packages so they can be used in unit tests 

 h2. Objective 

 This initial version changes the way requests are routed inside an API server node. 
 * Before: client → Nginx → arvados-api-server 
 * After: client → Nginx → arvados-controller arvados-router → arvados-api-server 

 This version does *not* add or change any new API endpoints, port any existing API endpoints to Go, or implement load balancing or service discovery. For example: 
 * Request and response headers are passed through blindly 
 * All requests are proxied to one single arvados-api-server (Rails) service at the configured address and port (typically localhost:8000) 

 h2. Requirements 

 Load configuration from the cluster configuration document from #12260. There will be no arvados-controller arvados-router config file. 

Back