Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Microservice architecture #68

Open
tmaiaroto opened this issue May 19, 2015 · 1 comment
Open

Microservice architecture #68

tmaiaroto opened this issue May 19, 2015 · 1 comment

Comments

@tmaiaroto
Copy link
Member

I'm thinking about switching Social Harvest to a microservice architecture. Though it could all be ran from a single binary...There would be harvester services which would each gather data and then pass to a shipper service (which would store in the database, log file, etc.)

This approach would make for an easier to maintain (and extend) data pipeline. It'd be more modular.

My choice is Koding's Kite (which also has a front-end JavaScript client library which the dashboard might be able to use), but there's also Google's new gRPC which has clients in multiple languages and also handles authentication. gRPC also uses protocol buffers and HTTP/2. It's FAST. Though I don't know if protobuf will be all that useful given JSON is going to be more convenient throughout the pipeline.

Kite also has Kontrol, a service registry which gRPC does not (yet) have. So I'm leaning toward Kite but could feasibly see a desire to switch to gRPC later on down the road once it matures. It's quite attractive to know that people could be interacting with Social Harvest from so many different languages.

@tmaiaroto
Copy link
Member Author

The other nice thing about the microservice architecture is that the memory concerns with the geocoder can be resolved in a nice way... Different geocoding services with different data sets and memory requirements... So a user could choose one (less accurate) data set but need less memory (cheaper hosting) in exchange. Microservices make these kind of trade-offs and high level configurations easy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant