Building Microservices: Designing Fine-Grained Systems
Rate it:
Kindle Notes & Highlights
Read between November 1 - December 24, 2017
2%
Flag icon
The concept of continuous delivery showed how we can more effectively and efficiently get our software into production,
2%
Flag icon
Domain-driven design. Continuous delivery. On-demand virtualization. Infrastructure automation. Small autonomous teams.
3%
Flag icon
Microservices are small, autonomous services that work together.
3%
Flag icon
Cohesion — the drive to have related code grouped together
3%
Flag icon
“Gather together those things that change for the same reason, and separate those things that change for different reasons.”
3%
Flag icon
Jon Eaves at RealEstate.com.au in Australia characterizes a microservice as something that could
3%
Flag icon
be rewritten in two weeks, a rule of thumb that makes sense for his particular context.
3%
Flag icon
the smaller the service, the more you maximize the benefits and downsides of microservice architecture. As
3%
Flag icon
These services need to be able to change independently of each other, and be deployed by themselves without requiring consumers to change.
3%
Flag icon
The golden rule: can you make a change to a service and deploy it by itself without changing anything else?
3%
Flag icon
For example, for a social network, we might store our users’ interactions in a graph-oriented database to reflect the highly interconnected
3%
Flag icon
nature of a social graph, but perhaps the posts the users make could be stored in a document-oriented data store,
4%
Flag icon
with microservices, we can build systems that handle the total failure of services and degrade functionality accordingly.
4%
Flag icon
Organizational Alignment
Tommy
orgnaztion algnmennt owner of microservixe
4%
Flag icon
We also know that smaller teams working on smaller codebases tend to be more productive.
4%
Flag icon
We can also shift ownership of services between teams to try to keep people working on one service colocated.
5%
Flag icon
Optimizing for Replaceability
5%
Flag icon
there is a lack of good consensus on how to do SOA well. In
5%
Flag icon
So you should instead think of microservices as a specific approach for SOA in the same way that XP or Scrum are specific approaches for Agile software development.
6%
Flag icon
No Silver Bullet
7%
Flag icon
as we know so little about what good looks
7%
Flag icon
like.
7%
Flag icon
Thus, our architects need to shift their thinking away from creating the perfect end product, and instead focus on helping create a framework in which the right systems can emerge, and continue to grow as we learn more.
7%
Flag icon
we should think of our role more as town planners than architects for the built environment.
7%
Flag icon
He does not say, “build this specific building there”; instead, he zones a city.
7%
Flag icon
We cannot foresee everything that will happen, and so rather than plan for any eventuality, we should plan to allow for change by avoiding the urge to overspecify every last thing.
7%
Flag icon
They need to ensure that the system is
7%
Flag icon
fit for purpose now, but also a platform for the future.
7%
Flag icon
As architects, we need to worry much less about what happens inside the zone than what happens between the zones.
7%
Flag icon
Your inclination to let teams pick the right tool for the job may be tempered by the fact that it becomes harder to hire people or move them between teams if you have 10 different technology stacks to support.
7%
Flag icon
Netflix is an extreme example, where scale is likely the strongest overriding factor, but you get the idea.
8%
Flag icon
“be worried about what happens between the boxes, and be liberal in what happens inside.”
8%
Flag icon
Making decisions in system design is all about trade-offs,
8%
Flag icon
Strategic goals should speak to where your company is going, and how it sees itself as best making its customers happy. These will be high-level goals, and may not include technology at all. They
8%
Flag icon
Principles are rules you have made in order to align what you are doing to some larger goal, and will sometimes change.
8%
Flag icon
Our practices are how we ensure our principles are being carried out.
8%
Flag icon
They are a set of detailed, practical guidance for performing tasks.
9%
Flag icon
You might choose to adopt a push mechanism, where each service needs to push this data into a central location. For your metrics this might be Graphite, and for your health it might be Nagios.
10%
Flag icon
For example, you might want to mandate the use of circuit breakers.
10%
Flag icon
Our technical vision exists for a reason. If we deviate from this reason, it might have a short-term benefit but a long-term cost.
11%
Flag icon
If you are working in an organization that places lots of restrictions on how developers can do their work, then microservices may not be for you.
11%
Flag icon
Part of what architects need to handle is governance.
11%
Flag icon
governance is about ensuring what we are building matches this vision, and evolving the vision if needed.
11%
Flag icon
They need to make sure as well that these principles don’t require working practices that make developers miserable.
11%
Flag icon
With microservices, on the other hand, we have multiple autonomous codebases that will have their own independent lifecycles.
12%
Flag icon
Governance Ensure that the system being implemented fits the technical vision
12%
Flag icon
the win! What Makes a Good Service?
12%
Flag icon
want you to focus on two key concepts: loose coupling and high cohesion. We’ll
12%
Flag icon
When services are loosely coupled, a change to one service should not require a change to another.
12%
Flag icon
This also means we probably want to limit the number of
« Prev 1 3 6