ets-labs / newsfeed Goto Github PK
View Code? Open in Web Editor NEWNewsFeed Microservice
License: BSD 3-Clause "New" or "Revised" License
NewsFeed Microservice
License: BSD 3-Clause "New" or "Revised" License
Idea of this issue is to create event output microservice (following microservices splitting chart).
Acceptance criteria
Idea of this issue is to create subscription microservice (following microservices splitting chart).
Acceptance criteria
Refactoring is needed for Subscription
entity and related functionality.
Acceptance criteria:
Subscription.from_newsfeed_id
should be renamed to Subscription.newsfeed_id
.Idea of this issue is to implement subscription storage provider using Redis.
Acceptance criteria
AS A Project Leader
I WANT to make service conceptual design
SO THAT I could demonstrate what service is about to wider auditory
Acceptance criteria
Idea of this issue is to build CI for the project using Travis CI . As a first step, it is needed to run unit tests for each pull request and report results back to GitHub.
Acceptance criteria
AS A Project Leader
I WANT to design service API
SO THAT I could demonstrate what service is about to wider auditory
We need to have service API documented, so it could be presented in terms of making service capabilities demonstration. It would also be quite beneficial to have API documented in Swagger-compatible format (like OpenAPI), so that it would be possible to make manual interaction with the service on the fly.
Acceptance criteria
/docs/
endpointdocker-compose
environment runs SwaggerUI that by default shows docs from /docs/
endpointThis issue is intended to track progress of refactoring of subscription-related domain model.
Acceptance criteria
Subscription
SubscriptionFactory
SubscriptionRepository
SubscriptionService
Idea of this task is to implement configurable base path. This base path should be provided via API_BASE_PATH
environment variable, and once it is set, API method routes should be prefixed with its value.
For example, with next docker-compose.yml
:
newsfeed:
environment:
API_BASE_PATH: '/api-example'
API methods should be accessible like:
GET /api-example/newsfeed/{newsfeed_id}/events/
POST /api-example/newsfeed/{newsfeed_id}/events/
...
Endpoint GET /docs/
should also return API_BASE_PATH
value in servers
section.
Idea of this issue is to implement event storage provider using Redis.
Acceptance criteria
There is a need to refactor subscription_storages
module.
Acceptance criteria
subscription_storage
-> subscription_storages
AsyncInMemorySubscriptionStorage
-> InMemorySubscriptionStorage
delete
to use FQIDAS A Project Leader
I WANT to design service architecture
SO THAT I could demonstrate what service is about to wider auditory
Acceptance criteria
This issue is intended to track progress of refactoring of event-related domain model.
Acceptance criteria
EventFQID
Event
EventFactory
EventRepository
EventDispatcherService
EventPublisherService
Acceptance criteria
CONTRIBUTORS.rst
is added to root of the repo.Example: https://github.com/ets-labs/python-dependency-injector/blob/master/CONTRIBUTORS.rst
Idea of this task is to define optimal infrastructure providers for Milestone 2.
Acceptance criteria
docker-compose
.We need to create demo application so we could do product demos to people, and people could play with product by their own.
Acceptance criteria
Idea of this task is to introduce concurrent processing of events by adding multiple event processing tasks.
Acceptance criteria
Idea of this issue is to add mypy
as a lint tool.
Acceptance criteria
mypy
checks to make lint
Idea of this task is to make clean and easy to understand application bootstrap process. It should also include explicit bootstrap of application for unit testing.
Nothing to special, just code skeleton application with all basic components.
Idea of this issue is to add running of static analyzers to CI pipeline.
Acceptance criteria
Idea of this issue is to create a chart that will demonstrate splitting NewsFeed into microservices.
Acceptance criteria
Currently there is a possibility to subscribe newsfeed to itself. This is a domain integrity bug and should be fixed.
Idea of this issue is to make a decision about what framework / language / etc we use for API test cases automation.
Acceptance criteria
There is a need to refactor event_storages
module.
Acceptance criteria
event_storage
-> event_storages
AsyncInMemoryEventStorage
-> InMemoryEventStorage
get*, get, add, delete
We need this for pre-flight OPTIONS requests in Cross-origin resource sharing (CORS).
Idea of this issue is to introduce limits for in-memory infrastructure providers to protect system from potential resources exhaustion.
Acceptance criteria
This issue is intended to make validation of newsfeed ID length to reasonable value.
Acceptance criteria:
Service doesn't handle a situation when newsfeed A subscribes to newsfeed B multiple times. That leads to creation of multiple subscriptions and further duplication of publishing events. Domain integrity rule here is that there should only one subscription between newsfeed A subscribes to newsfeed B .
There is a need to refactor event_queues
module.
Acceptance criteria
AsyncInMemoryEventQueue
-> InMemoryEventQueue
get, put
Idea of this issue is to implement event queue provider using Redis.
Acceptance criteria
Idea of that issue is to make a review of product in the Milestone 1. Review is intended to summarize the list of work that should be done before closing Milestone 1 and may result in list of minor and moderate size issues.
Idea of this issue is to implement nice and fancy automatic approach for API integration testing.
Acceptance criteria
Idea of this issue is to add an integration test that would cover all functionality introduced in Milestone 1 (e.g. scripts/sample_check.py
).
Acceptance criteria:
Idea of this issue is to create event dispatcher microservice (following microservices splitting chart).
Acceptance criteria
Idea of this issue is to add serializer for event entities.
Acceptance criteria
Idea of this issue is to design integration test cases that would cover existing service API.
Currently we have demo application that could be a nice start point for getting acquainted with service functionality. API documentation could be obtained from swagger by running service locally and visiting http://127.0.0.1:8000/swagger/
. We also have scripts/integration_check.py
script that plays a role of integration test - it could be used as a source for grabbing some test cases.
Acceptance criteria
Idea of this issue is to create event processor microservice (following microservices splitting chart).
Acceptance criteria
Idea of this issue is to refactor application configuration so that application_factory
doesn't contain any knowledge on what is the source of configuration.
Idea of this issue is to make a decision on what Redis client library is used.
Acceptance criteria
Idea of this issue is to find an API results reporting system that could be used the project. As an example of such results reporting system we could use coveralls.io - https://coveralls.io/github/ets-labs/python-dependency-injector?branch=master
Acceptance criteria
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.