Skip to content

hvram1/ApprenticeSoftwareProject1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

ApprenticeSoftwareProject1

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

Software Engineering

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

What is the problem

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 .

The user interface expected at the browser should at contain atleast the following :

  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 )

Not in scope

  1. No need to provide pagination ( back / forward ). 

Limits

 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 )

What is expected output

 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  

How long should this take

  2 weeks 

Typical workflow

  1. Fork this project
  2. Check in the code and send it a Git Pull Request

About

This is a project that will help new software developers tune their software skills. This project is the first in the series of projects

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors