This is a project that will help new software developers tune their software skills. This project is the first in the series of projects . This project will be the base line and will create a working project baseline . The subsequent projects will contain fine tuning of the design
I read a book Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman and have been inspired by it . This project is an attempt to create something on the same lines for the team of software engineers Engineering is always about making the trade offs for the use case . Engineering is also about mastering the set of tools used in day to day jobs . A modern software engineer is expected to not only write the code but test and deploy it to production . This should give you an idea of the expectation of what is required
A Logstream consists of a set of events / records . A record typically contains a header which includes the following identifiers programName UserName IPAddress TimeStamp and the payload . Assume the identifers are json strings and have a maximum length of 255 bytes . All records longer than 255 bytes are truncated .
The task is to write a server which will accept multiple of these Logstreams and then serves them to requesting clients ( browsers ). Assume the server stores all the LogStreams in memory .
1. Time the last event occurred
2. Number of events available in the server after 1 .
3. Basic filtering capabilities ( by each of the parameters in the header of the record )
1. No need to provide pagination ( back / forward ).
1.The server should store up to 2,00,000 events
2.The server should handle upto 200 log streams
3.The server should handle 50 browsers . Each browser should have a response time of less than 1 second
4.The browser will have a max lag ( i.e. between event in server and event notified in browser of less than 10 seconds )
1. Requirements document outlining the problem and the assumptions
2. Github project structure containing server .
3. Github project sub structure containing code to generate events to the server
4. README containing instructions to checkout build install and test
2 weeks
- Fork this project
- Check in the code and send it a Git Pull Request