Service-oriented architecture. A digital copy of the business

What SOA is, how it differs from microservices, and how it helps build flexible, manageable IT systems.

  • Are microservices better?
  • Company growth problems
  • The company needs superheroes
  • Service and the valuable final product
  1. January 22, 2022 Read time: 11 min. SOA, or service-oriented architecture.

  2. A fundamental element in building complex computer systems, without a proper understanding of which it is impossible to build any systems other than monolithic ones. It does not matter what architecture the final systems were intended to have.

  3. If the company does not understand what a service is, all systems become complex and the setup of any solution becomes confusing.

  4. The boundaries of responsibility for software under departmental control become blurred, as do the boundaries of the departments and divisions themselves within the company. As a result, numerous conflicts arise, and implementing any innovation feels like crossing a minefield: slow, dangerous, and not everyone makes it through.

Are microservices better?

Many IT people, when they hear about SOA, may say knowingly something like, "I know what that is, but we have a microservices architecture."

With rare exceptions, this phrase is a reliable sign of misunderstanding SOA

And an IT specialist who does not understand SOA only confuses the business user as well. As a result, managers see service-oriented architecture as some kind of obscure principle.

Seems useful, but "microservices are better"

In our work advising KT.Team clients, we have never once found services built completely without errors. And mistakes in service design can cost a company half its IT budget!

This is such an important topic that in our course for project managers and strategic consultants we set it apart in the enterprise organizational framework module.

We teach not to confuse IT services with organizational charts and approval-based business processes.

Company growth problems

Imagine that your organization has just been born.

There are no job titles or departments yet, no procedures or agreements on how authority is divided, and in general you are all sitting in a small office.

In engineering terms, you can be called a monolith.

As long as there are only a few functions and your processes are as simple as possible, thanks to a manager's good judgment, adding a new responsibility or task to the company is organizationally inexpensive.

You briskly solve problem after problem, and the machine keeps running.

However, the company is still being managed manually.

Your company is growing, and your processes are growing with it.

You no longer fit in a single room; you occupy an entire building.

However, you do not yet have an organizational structure, and without it there can be no service architecture.

Processes have more and more nuances, and the likelihood that each new change will be implemented decreases. You cannot fire

You reprimand Masha for not completing item No. 7 of your contract review instructions, because a dozen important functions depend on it. Masha says to you: "I was at fault, it won't happen again."

Next time, it may well satisfy item No. 7, but it will likely violate item No. 9 and item No.

The authority of departments and individual employees is still mixed together.

You do not yet need as many people as you have functions.

You divided the company in what seemed logical to you, for example by the floors where the departments sit.

This example is intentionally far-fetched.

Of course, you divided the departments into a notional accounting department and a procurement department, for example.

But can you now demand everything from accounting specifically from accounting?

Are there clear metrics there

Aren't there cases when accounting tells you, "We know about this problem, but the IT department is to blame because it did not build the needed feature"?

? Aren't there cases where the materials procurement department tells you it bought everything strictly by the book, but the data in some shared system is poor quality, with duplicates or inaccuracies? Such situations signal that departments do not have the authority to make decisions about changing how they work, which means you do not have the authority to demand results from them.

Over time, without proper separation of domains and authority, and without delegating full responsibility together with a limited management context, the organization becomes unmanageable.

The manager is at work from morning till night, never leaves their laptop or phone, not on vacation or on weekends, just so that "everything works normally."

If it is even possible to measure accounting and procurement, responsibility for that result always belongs to someone else.

In the nice picture, you have an organizational chart for the enterprise.

In fact, you still have a monolith.

A monolith is a state of an organization or program in which every new functional expansion costs more than the previous one.

Each subsequent change requires more and more service actions.

It gets to the point where the number of people grows, but profits do not.

A monolithic IT architecture is exactly the same.

Outwardly, it may look like different programs and services, but in fact everything is so tightly interconnected that adding new functionality always creates more overhead than before.

The company needs superheroes

Of course, your company can somehow function with poorly separated departments, which in IT is called tight coupling.

The problem is that departments are expected to be staffed by superpeople who can solve any problem. These superheroes will work themselves to burnout. The same thing happens in IT under tight coupling.

Each person on the team understands the logic only up to a certain point.

But the further you go, the harder it becomes to understand exactly what needs to be done.

You will need an increasingly brilliant engineer to sort out any problem until they burn out. Something has to be done, right?

The reactions of many managers and engineers in this situation are very similar.

Managers read Harvard Business Review, listen to trendy conferences, and

Gref, and learn about Agile, about teal, or about some super-duper solution that will systematize your business and do all the work for them. "Oh my God, there is some magic pill that will solve everything!"

Developers begin frantically reading trendy articles and learn about microservices architecture or some other super-duper system, language, or approach. Inspired, they come to a manager and talk about big plans for change. At that moment, the biggest mistake is to believe in magical thinking. To believe that one technology can solve organizational problems in one fell swoop. To believe that data quality will improve simply by implementing some new system.

That development will speed up if you switch to some new approach...

The system-level solution that can improve a monolithic organizational structure is to split off part of the functionality into a separate block.

But you cannot divide things by intuition, neither in business nor in IT.

Moreover, IT should be divided along exactly the same boundaries as the business.

Assess where AI can deliver impact in your process

Service and the valuable final product

And now we have reached why understanding the service matters.

A service is not some magical incantation that is supposedly better than a monolith but worse than microservices.

Service architecture is a map of your system functions broken down into business blocks.

A service is defined within the paradigms of the valuable final product or in process output definitions within process management.

The output should make it completely clear and transparent what exactly another company, or another department within your company, is "buying" from this service. For example, let's look at Hubbard's organizational chart.

According to this scheme, the company has a communications unit, and within it there is, in turn, a recruiting and onboarding department.

Let's call this the HR context

This department produces its core value product: hired, onboarded, and high-performing employees.

This department will be responsible for its final product if and only if it has full authority to deliver its core value product. The HR department should work in its own isolated IT system precisely so it can manage the necessary changes independently. It is important that the HR department delivers only what is its core value product to your organization. In the real world, that is employees; in the IT world, it is a digital copy of an employee.

At the same time, the HR department should provide a digital copy of employees in a format for which it can be responsible, while its work should not depend on which solutions other departments use.

This is called loose coupling

In the non-digital world, this kind of connection works like this: the HR department places an employee dossier in a shared location where other departments can come and view it, but not change it themselves. Digital interaction between departments should always be provided through special solutions called buses.

They are what allow each department to define its own rules for providing information needed by other departments.

If tomorrow the HR department switches its 1C system to a cloud service, the only thing it needs to do is change the rule in the bus for how to access the employee dossier.

This is part of the HR department's responsibilities, alongside recruiting and onboarding employees.

A digital copy of an employee is still the same employee, just in digital form.

The dangers of magical thinking

Now imagine that an incredibly talented IT specialist comes to you and says, "I will implement a super-architecture that will improve every department." Will each individual department have the authority over the button it needs? If so, how much time will each implementation take? If two changes compete for resources, how will the conflict be resolved? You can build IT services without taking target business processes and services into account, focusing only on new technologies.

But this will lead to the digital copy of your enterprise and your enterprise itself becoming increasingly separated. The HR department must have the authority to say, "I do not need your trendy gadgets, I want a different solution." The IT department's responsibility is not to micromanage how other departments work, but to provide common infrastructure so that each department can place a digital copy of its valuable end product into a shared space.

03

This does not mean that the board of directors is no longer responsible for developing the product's production technology or no longer takes part in defining rules and procedures. It means that implementing and carrying out such changes in the digital world should happen exactly as it does in real life.

04

When your IT department brings you an innovation, you should not see it as a magical cure for problems. Instead, map it onto processes and make sure the autonomy and flexibility of departments are not lost.

Should the architecture be unified across the entire enterprise?

  1. There is no such thing as a microservices architecture for an entire enterprise, just as there is no single size for departments. Depending on the specifics of the business, your HR department may have three people with broad expertise, and they may need one cloud application to do their work. At the same time, accounting may consist of hundreds of employees, each with a very narrow specialization.

  2. Accounting staff will be unified only by common terms and entities, which in microservices architecture is called a "bounded context," and they will work in microservices. Meanwhile, a PR department may work in monolithic programs. And that is normal, because the digital copy of departments cannot differ from reality. This principle was described 60 years ago by

  3. Mel Conway, whose paper Harvard Business Review initially rejected because he did not provide convincing evidence for his conclusions.

  4. Forty years later, HBR finally published all of Conway's conclusions.

  5. The digital era has clearly shown what happens to companies that ignore these rules.

Conway's Law

  1. Organizations that design systems, in the broad sense used here, are constrained to produce designs that are copies of their communication structures. Any organization that develops a system, in the broad sense, is forced to create designs whose structure copies the organization's communication structure.

  2. Eric Evans describes the same idea in his book Domain-Driven Design.

  3. He clarifies that not only the digital "version" of departments, but even digital copies of business processes and entity names, cannot differ from real life.

  4. The book is written for developers, and if you do not have a technical background, reading past the second chapter will be boring.

  5. But the beginning and the conclusions of the book tightly connect the realities of IT and management.

  6. We recommend this reading, following Dave Farley, Martin Fowler, and Thomas Erl.

  7. Their contribution to the development of computer engineering makes their recommendations worth hearing.

The principle of building IT architecture

Before making a decision about IT architecture, make sure your technical team is interested in creating a digital copy of your company, not in adopting trendy technologies.

This is a common and understandable situation: IT people like to try something new and trendy that they can add to their portfolio.

To avoid mistakes, first define the company's organizational structure with departments and subdepartments.

Then draw a map of sections using approval-level business processes. Depending on process complexity, the output of the entire department or each section will become a service. Whether it is micro or ordinary is determined not by IT, but by how your business is organized. Clearly, while your enterprise is still small, several services will be handled by the same people, and in the case of software, by the same programs. As the organization grows and the load on these sections increases, they will split further.

In the end, the business will end up with many very simple functions responsible for very narrow tasks.

If you plan your departments properly from the start, the growth of people, business processes, and software functionality will be synchronized.

The beauty of services is that when they are defined and separated correctly, they do not separate technology from business, but rather put technology at the service of the business.

But in many companies we see that reporting lines are arranged differently: the IT department, without managing the strategy and technology of work and product creation, defines the technology for creating digital copies.

It is not IT that lives by business rules; the other departments live by IT rules.

When services are divided incorrectly, conflicts arise when one task seems like it should be handled in one place, but is partially handled somewhere else too.

Just like incorrect separation of departments leads to conflicts between departments and opaque decision-making.

There are plenty of technical examples

For example, a corporate website that is merely an interface to the procurement department's system generates an invoice on its own instead of requesting it.

Or the quality of procurement data somehow becomes the responsibility of a system that is not under that department's control. This is not an easy concept to grasp.

When training managers, we break it down and ask them to create service maps, teach them to model in the context of the organization's business processes, and correctly identify conflicts between services.

Discuss the article: Service-Oriented Architecture...

Send via: