Microservices – How they change a company
Adaptability – the ability to change quickly and easily – has become a primary goal for modern businesses and has put pressure on technology teams to build platforms that are easier and less expensive to change.
Working in these environments, these teams have been increasingly drawn to the style of using microservices in software architecture. What attracts them is the promise of a method to accelerate changes to software, without introducing unnecessary danger to the business.
The way of making services through microservices is possible in large part by favoring the decentralization of software components and data, more specifically, dividing the “monolithic” elements into smaller and easier-to-change pieces and deploying those pieces in network. Making this architecture work well requires a change in the way work is done and how work is regulated. The organization adopting the Microservices is one that “gets out of the way of the developer”, and provides the freedom and autonomy to make the magic happen.
In organizational design, the goal is to decentralize decision authority. Rather than having a few people make the software architecture and design decisions for everyone in the organization, decentralization would allow them to distribute the decision-making power among the people who do the work.
Pushing decision-making authority directly to workers allows them to produce with more freedom and autonomy. Under the right circumstances, this will lead to better and faster changes. However, if your organization is wrong, a series of poor decisions can slow down the exchange rate – or worse, end up damaging your business.
It is very important not to forget to start working on the synergy between the teams with an understanding of their natural competencies, drivers and above all, enhancing soft skills.
The trick is to decentralize only those things that help you speed up, without sacrificing the security of your system. Obviously not? but it is not a bad thing to reinforce the message that security should never be sacrificed.
Finding the right decentralization strategy is an evolutionary process that requires organizations to adjust, analyze and adapt. To help you get started in the right direction, here are the top three questions to consider:
What decisions should we make?
Our goal in all of this is to increase the variability of your platform. So you must start by finding the bottlenecks that prevent change from happening. Take a look at how features and changes move from idea to implementation and find the parts of the process where the people who need to get the work done can’t because they are waiting for someone else to make a decision.
Decentralization is not a silver bullet for unlocking bottlenecks. However, in an organization that leans toward centralized decision making, decentralization will likely help. On the other hand, if you can’t find many situations where employees get stuck due to centralized decision processes, decentralization shouldn’t be your biggest concern.
Getting work done in the microservices system requires more than just brainstorming the size of the components. All areas of your organization that involve creating and changing services have a role to play. Here is a non-exhaustive list of the types of decisions that could be candidates for decentralization in a world of microservices:
- Service life cycle – When are services created or retired? How are they called? When do we have to separate them?
- Service implementation – What tools, languages ??and architectures should we use within each service?
- System architecture – How do services speak to teach others? How do developers learn about them?
- Data architecture – How is data shared between services?
- Change process – When can services be changed? What are the tools and process for implementation and quality control?
- Team management – Who serves on which team? What is each team responsible for? What do the team members do?
- People management – How are people hired and fired? How do you incentivize and reward employees? What is the vacation policy?
- Security management – How can we reduce the risk of security incidents? What needs to be done to improve the security of the entire system? Acquisitions – What software can you buy? What protections are required to use open source software
It is worth analyzing how decisions are made in these spaces. How do they influence the way the system is changed? What decision processes are they retaining? Which ones prevent people from being innovative? And finally, in which cases would freedom and autonomy be more beneficial?
Netflix is a great example of a company that has been able to decentralize in innovative ways. His policy of empowering employees to decide how much time off they need decentralizes a decision that has traditionally been tightly controlled.
Giving employees the authority to designate their own vacation assignments may sound strange. But the exact approach you need to take if you want to put your organization’s changeability into a higher gear frees yourself from redundant and unnecessary coordination work, while at the same time refraining from introducing new risks. Teams that are pursuing the style of building software microservices need to think about these types of optimizations across their organizations.
This does not mean that the policy of distribution of vacation decisions should be a principle of the microservices architecture. Netflix can do this because its culture and workforce make this policy easier to implement. Its employees are trusted to make decisions that are best for the entire system, and the company is known for being selective in who it employs.
Not all organizations look like Netflix, and very few operate in Netflix’s niche of online video content delivery. Each company has its own unique set of limitations and goals. You will have to figure out your goals and constraints for yourself. Analysis, understanding, and experimentation will help you prioritize your decentralization efforts and steer your system toward the goal of adaptability.
Who are the people involved?
Some of the decisions people make can be incredibly impactful to your business. The decision to change the way a bank account transaction is implemented would be risky for a traditional bank. The decision to change the user experience of an application would be a risk for a software company with a large user base familiar with the old interface.
Organizations try to increase control over these types of decisions so that this risk is minimized, which leads to a centralization of decision-making power
For example, in earlier years, Apple was known for having a highly centralized design group, consisting of a relatively small number of people who made most of the design decisions for its products
Centralization happens because the right people need to make the decisions that matter most. Typically, the “right people” are the ones with the mix of talent, experience, and expertise that allows us to trust them enough to make the best decisions. We could call these people our “star” decision makers.
If an organization was only full of stars, then all its decisions could be decentralized. If we trusted more of our people to make the best decisions, we would distribute more decisions to more people
In practice, companies have a limited number of star decision makers. In reality, most teams have a few stars combined with a larger number of decision makers who are competent but lack the experience or talent required to make perfect decisions
The good news is that you don’t need an all-star team to employ a decentralization strategy. You just have to be thoughtful about where you put your teams and where you deploy your best decision makers.
The microservices style makes all of this easier because the impact of decisions can be limited while increasing the speed of implementation of individual changes. If a team makes a wrong decision while working on a microservice, the error explosion radius should be small and contained. When changes to the system are made cheap and easy, the team can quickly improve on previous decisions, allowing them to arrive at the best decision faster.
In this kind of environment, you’re not limited by your star power – when the goal is to get to the best decision, you just need to provide a system that gives competent workers the freedom and autonomy to get there.
Who owns what part?
No decision is made instantly. It is based on options, which in turn is based on domain knowledge. Decisions should never be implemented immediately. At times it may require someone’s blessing, while at other times, it may need highly specialized skills or knowledge to implement.
Management expert Henry Mintzberg gives us a nice model outlining the steps of a decision process:
- Research and information gathering
- Generation of options
- Selection (make a choice)
- Authorization of the election
- Execution and implementation
The key to all of this is that it is not necessary to be absolute when employing decentralization of decisions. Each of Mintzberg’s steps can be independently centralized or decentralized, allowing greater flexibility by balancing speed and security of decision-based changes in a system.
Consider the typical case of the hiring process in a large company: When it comes time to find new people, it is the centralized Human Resources division that broadcasts the open position and invites people to apply for the job. The same centralized team examines the candidates and generates a list of the best of that group. The list is then turned over to the actual hiring manager, who selects the best candidate based on additional scrutiny. From there, the hiring manager hands the ball back to the core HR team, which completes the paperwork and completes the process.
This centralized recruitment model combined with decentralized recruitment is common in large companies. In fact, most organizations that have incorporated the microservices style use it in some form.
For example, a centralized company team can identify the three database flavors that all microservices teams should use. It is up to the individual teams to make the selection of choice, but they are expected to choose from the menu that has been provided. If they deviate from the approved list, they will have to justify their decision, thus providing the centralized team with a feedback mechanism with which they can re-evaluate the menu.
Decentralization of the selection, authorization and execution parts of the process allows individual teams to move quickly and at scale.
Centralizing research and choice generation stages hurts innovation in general, but reduces the risk of decisions being made that negatively affect the overall system. It is a popular pattern, as it strikes the right kind of engagement for most organizations
Decentralization comes up a lot when people talk about microservices organizations because it is an effective way to improve the speed of change. But don’t forget that it is only part of the equation. Who your people are, how they coordinate their teams, and all the systems, tools and context in which they work, are equally important.
It is essential that you understand that thinking about how decisions are made and more importantly, how the process can be improved is a great way to move towards a change-friendly organization.
Autor: Diego San Esteban