Title: Hi HN,<p>Suppose you had to understand a large distributed system. The modules which interact together can be written in different programming languages and all expose a REST endpoint along with a documentation of what each endpoint can do.<p>For the simplicity of discussion lets consider these languages(Java, C++, Scala, Python and PHP). They could use a distributed database like solr, couchbase<p>Some of these modules can be 12factored and some with pretty bad code practices. There is no existing mechanism for monitoring but logging.<p>How would go into analyzing this vast system ? (Not just one at a time, elaborate your techniques)<p>To what degree would you trust the documentation, infrastructure, existing testing tools, environment setup tools in the process of understanding a module ?<p>What would you make sure you definately do NOT do?<p>What language specific strategy would you suggest ? (Entrypoints, configs, static analysis etc.)<p>Would you think of creating a mechanism for cloud debugging ?<p>How do you keep track of the knowledge you learn from one module and apply that as you go along ?<p>How do you keep your life together and still swim in so much complexity ?<p>Share your stack! http:&#x2F;&#x2F;stackshare.io&#x2F;<p>How do you apply these techniques to learn, update and maintain this system?<p>PS: I am asking this question in general and not for an existing system. But if you would like to give an answer with some open-source project as example, that would be great.
Upvote: