TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: How do you think about dependency management?

1 点作者 steviee大约 6 年前
Dear engineers and architects,<p>how much do you value having certain (micro-)services under your teams&#x27; direct control&#x2F;influence over having other teams maintain those services in a central manner?<p>Also how does this reflect the changes in the industry regarding microservices (and data-locality) and conways law?<p>As a developer (or engineer if you want) I always strive to have _less_ dependencies and easier access to the systems _I_ (or my team) has to maintain in a production state.<p>How do you think about this kind of dependencies?<p>Kind regards, Steviee

1 comment

PaulHoule大约 6 年前
I had an interesting talk about software architecture the other day and noted that the term &quot;dependency&quot; is used for very similar things that happen at different levels.<p>For instance a &quot;dependency&quot; exists in project planning in that some tasks require others to be completed; thus over time scales of weeks and months that kind of dependency has to be managed.<p>Then at runtime a framework like Spring &quot;resolves dependencies&quot; to initialize objects. You could look at it as a backwards or forwards chaining problem, but either way it knows that &quot;A depends on B&quot; so it initializes B first. A and B are software objects instances in this case. The timescale is usually less than a second here.<p>Then there is the dependency resolution done by Maven at build time, which might take a few minutes. There A and B are software packages that mainly contain software object definitions.<p>These different levels of dependency are somewhat but not perfectly parallel to each other -- e.g. the Conway&#x27;s law that you mention.<p>Aside from that I think you have to be aggressive about managing the &quot;little things&quot;. If you go full polyglot and let coders pick any version of any language that they want you are not going to realize the productivity and quality gains that you can get from microservices. For instance years ago we had a JDK 7 client and JDK 6 server and found that a set of JAXB classes we made weren&#x27;t portable. It took us a few days to understand the problem, but it would have taken many more days to convince management that if they want ultra-fast software development we have to have less problems like that.<p>You have to standardize as much as you can about build process and libraries that people use. I&#x27;ve found that this kind of functionality frequently gets re-developed:<p><a href="https:&#x2F;&#x2F;www.envoyproxy.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.envoyproxy.io&#x2F;</a><p>If you can standardize on a limited selection of &quot;middleware&quot; you may come out ahead with microservices, but having five different ways to do the same thing will end in tears.