Replies: 3 comments 2 replies
-
CCC is definitely part of the answer to those 3 or 4 items you called out. To your question of whether being a point of failure outweighs the alternative —— I think so. With our proxying we at least have the ability to wrap many dynamic areas of input and API contracts that we do not own the data of in order to intercept things as best we can. Until we control all of the data shapes, I do not know of a saner pattern (unless we implement a circuit breaker). Proxying authenticated requests does sound like additional complexity and we would probably prefer not to take that on. We could have some things related to auth remain on-device as a hybrid solution to save us the trouble and users their security (not that we couldn't find a secure way to go about it). Maybe it would be worth our time to put together a small investigation of the approaches we could take, their pros and cons, and a recommendation before going a certain direction. |
Beta Was this translation helpful? Give feedback.
-
I've been convinced to support the server approach again – it seems less fragile than the codepush approach… (e.g., if our codepush server goes down, then any new downloads / redownloads of the app would get the original bundle without any of the fixes?) My next question: how do we handle authenticated endpoints? Things like "get my class schedule", etc. Below: a random graphql example of how we could structure part of the classes stuff… query MySchedule {
myClasses {
title
subtitle
grade { code option }
offerings {
instructor
schedule {
dayOfWeek startTime endTime
location {
building { id name }
room
}
}
}
}
} |
Beta Was this translation helpful? Give feedback.
-
New idea: once CCC is Rustified, we could bundle it in the app and run a server copy; that way, if the server dies, it could fall back to the local copy! |
Beta Was this translation helpful? Give feedback.
-
I know that I've gone back and forth on this topic, but I'm revisiting it again.
I was thinking about future features, especially personalized ones, and how we won't be able to proxy those through CCC, which means that we'll still need arbitrary network access in the app, and probably HTML parsing as well.
At that point, why involve CCC?
But, are those upsides enough to outweigh "another service that we have to maintain", and "we become a point of failure", and still having to include the code client-side?
Or do I need to bite the mental bullet and figure out how to proxy authenticated requests (eww)?
Beta Was this translation helpful? Give feedback.
All reactions