Microservices have been hyped for years, but they are not always the best solution. What small and medium-sized businesses with limited resources often ignore: Microservice architectures are true resource hogs, despite all the advantages they offer in day-to-day operations. Learn more about (often doomed) alternatives here.
To avoid misunderstandings: Microservice architectures are not unsuitable for SMEs as such; however, they do have some pitfalls that should be taken into account. To take full advantage of the flexibility that microservices undoubtedly offer, companies must be able to handle decentralized development and maintenance within their IT organization. This is often a major challenge.
“Companies that don’t have mature teams for software development and maintenance should critically question whether they can really afford microservices..” – Igor Pshul, Solution Architect
Monolithic architectures are often seen as the outdated counter-model to microservices. However, they are not as bad as their reputation, provided they are implemented with a high level of quality. In (often ideologically driven) debates about software architectures the advantages of monolithic architectures are frequently ignored.
Which architectural style is the right one in each individual case cannot be decided by what is technologically currently fashionable. Instead, the key factor is which approach is feasible for a company and is better suited to achieving its business goals. That’ s why we at voltage IT support our customers both objectively and with a clear view to long-term success.
The challenge every company faces sooner or later: by eroding their architecture, software systems gradually become more error-prone and inefficient. Even the smallest adjustments can result in a great deal of anxiety and pain. In the following, we will give advice on how you can prevent this with the right architecture.
Microservice architecture: features, requirements, pros & cons
Microservices represent an architectural style of software applications that consist of small services (microservices). Each individual service is executed in its own process and communicates via interfaces (HTTP, REST API) with other services or systems in the company.
Services are organized around business functions, managed in a largely decentralized manner, and can be deployed independently and fully automated. Microservices can be developed in different programming languages and use different technologies for storing data. Services are implemented using containers that are orchestrated (provisioned, scaled and managed) with Kybernetes.
Advantages of microservice architectures:
- Flexibility: easily replaceable and extendable due to modularization
- Sustainability: software development fully under control long-term
- Risk: changes to the overall system less risky
- Freedom: different technologies can be used
- Scalability:granular expansion as needed
- Resources: different teams needed for maintenance and development
- Communication: Manage independent deployment units
- Performance: Latency in the interaction of services and systems
- Infrastructure: Redundancies through independent deployment processes
- Security:Every API is a potential point of attack for cybercriminals
- Architecture: Keep decentralized service structure (avoid “monolithization”)
Conclusion: Microservice architectures are flexible in terms of adaptation and further development. However, this requires distributed teams to be deployed and coordinated. With highly distributed systems, companies tend to develop an overhead for administration and communication.
Monolithic architecture: features, requirements, pros & cons
Unlike distributed systems based on microservices, monolithic software architectures combine all functional elements in a single homogeneous entity. The systems’ components are deployed and operated in a common process. Accordingly, these systems can only be scaled as a whole.
The advantages of monolithic architectures largely correspond to the disadvantages of microservice architectures and vice versa.
Advantages of Monolithic Architectures:
- Development: “classic” implementation and easy roll-out
- Communication:one deployment unit managed centrally
- Performance: “short” communication paths between components
- Scalability: “one size fits all” reaches its limits as complexity grows
- Sustainability: software development increasingly cause effort and fear
- Risk: changes to the overall system increasingly risky
- Freedom:limited to technologies that work together
Modular monoliths: Combining the best of both worlds
What is often ignored in ideological debates about software architectures is that microservices and monoliths are not mutually exclusive. The optimum is somewhere between the two. Smart programmers combine the best of both worlds and create systems that don’t follow architectural styles dogmatically. The key is the business value that results from smartly combining different approaches.
At voltage IT, we focus on structured software development, which starts monolithically but can take advantage of microservices at any time. We achieve this, for example, by creating a clear vertical structure according to functionalities and developing according to highest quality standards: domain driven design, test driven development, to avoid erosion and tight coupling of individual modules, so that each module can be subsequently extracted to a microservice.
We call this “reasonable” software engineering because we are not guided by the microservice hype, but strategically build the basis for systems that focus on the actual requirements and can be maintained and flexibly developed by companies or their service providers themselves in the long term.
- Microservices – brief introduction by James Lewis (martinfowler.com)
- MonolithFirst – good reasons for starting with monoliths (martinfowler.com)
- Don’t start with a monolith– When monoliths are not suitable (martinfowler.com)
- Distributed big balls of mud – About distributed architectures (codingthearchitecture.com)
Need help? Let’s talk!
For many years we aim to enable companies to make the right IT decisions and to get software systems they sustainably benefit from and manage themselves in the long term. Our mission: Building “reasonable” solutions beyond technology hype.