Service Orientation
Service Oriented Architecture (SOA) is a big deal. SOA should be the default way of thinking and operating services in modern software architecture. Service Orientation should be the default choice for solutions. Services are more important and better than internal libraries.
Services allow Isolation, Independence and Flexibility. When services are done right, with proper contracts, refactor can happen under the hood. Services allow different stacks and technology.
Services should be Capability oriented. Services should be as generic as possible and it’s okay to have more granularity and more code in a service. Services do not need to be micro(Micro Services).
The most important part of services is the contract. The contract is the API. The API should be as stable as possible. The API should be backward compatible as much as possible. The API should be well documented and versioned.
Contracts must be well designed and reviewed carefully. It is not difficult to make poor contracts because engineers, and even more so frontend engineers, are just thinking about what needs to change, and are not thinking if it is the right place to make the change or if it should be that way at all. Contracts must be explicit and not hidden. The cost of refactoring a contract is usually high, while refactoring the internal implementation is low, as long as you do not break the contract.
Services require a lot of thinking, they are not a panacea.
SOA is a big Deal
Service Orientation should be the main operating model for software architecture. Services should be the default way of thinking about solutions. Services should be the default way of building solutions. Services should be the default way of operating solutions.
Because services allow us to have business capabilities that can be shared across different services, applications, products and use-cases. Services also allow us to isolate and have decoupling from contract and implementation (if done right), allowing the engineering team to improve things under the hood without breaking or slowing down the business.