Wednesday, February 14, 2018

Design Build System

Could you please add more information and context to your question?
For example, what does the build system have to support?
  • Only the compilation of source files? Or also dependency management? Or continuous integration (like Jenkins)?
  • Only a particular language or it has to support many languages / platforms? For example, Ant is a popular build system for Java. And of course there is Bazel which is powerful and supports many languages and platforms.
  • Used by how many developers? Does it need to be distributed?
  • How about dependency management? Assuming there are some way to specify explicit dependencies and the build system is able to identify which resources that need to be rebuild upon a change of some components (i.e., via a DAG).
Feel free to add more if there's something that I missed.
Some other requirements to consider:
  • Handle versioning? For example, in web development, the htmls need to refer to the correct versions of .js and .css files
  • Deal with secrets? For example, if the source code refer to some key or connection strings, does the build system need to plug-in the correct values for different environments?
  • Authentication for users? Is the system a product like VSTS/visualstudioonline or is it an internal service?

Cache vs. Session Store: How we can use Redis for both?

Duration of Skype Call per Day

Design a system to caculate the duration of the average skype call per day