Skip to content

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

License

Notifications You must be signed in to change notification settings

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors