Architectural Acrobatics: When It’s All About Tools and Third-Party Apps in the Industry

Rizki Nurhidayat
CodeX
Published in
5 min readSep 13, 2024

In the world of software architecture, we expect deep discussions about design principles, creating scalable, maintainable, and efficient systems. However, what often happens is a case of architectural acrobatics, where conversations ultimately center around tools and third-party applications to handle various technical aspects.

This phenomenon is common: rather than delving into true architectural solutions, many projects shift focus to selecting and using pre-built tools as if they are the only answer to every problem. On one hand, these tools do help accelerate development, but on the other, they often cause neglect of the essence of good architectural design.

What Is Architectural Acrobatics?

Architectural acrobatics refers to the tendency in today’s industry to focus on technical solutions that appear complex and cutting-edge, but don’t necessarily solve fundamental problems. Instead of addressing core system issues, teams often get caught up in demonstrating technical complexity by using the latest tech stack or buzzworthy tools. Some examples of architectural acrobatics include:

  • Microservices Overkill: Implementing microservices even when the application could function perfectly well as a monolith, just because microservices are the trend. Tools like Kubernetes, Docker, and Istio become the stars of the show.
  • Serverless Everything: Pushing every service into a serverless model, even for simple tasks, just to use AWS Lambda or Google Cloud Functions. The goal shifts from efficiency to “using what’s cool.”
  • Over-Engineering with Fancy Tools: Adopting tools that are unnecessary for the task at hand — like forcing the use of GraphQL for simple queries that could be handled with REST or adding Kafka when a simple RabbitMQ or even an in-memory queue would suffice.

These are all examples where the focus isn’t on good architectural design, but rather on performing technological acrobatics with tools. So, let’s dig deeper into why this happens and what the consequences are.

Tools and Third-Party Apps: Shortcut or Trap?

In the industry, time is money. Everyone wants fast and efficient solutions, and that’s where tools and third-party apps come in. These tools are often marketed as quick fixes for complex problems, saving teams from deep technical thinking. But here’s the catch: these quick solutions are often superficial and temporary.

Here are a few reasons why focusing too much on tools or third-party apps can be a trap:

1. Forgetting the Fundamentals

When relying heavily on third-party tools, it’s easy to forget the basic architectural principles. For example, instead of truly understanding scalability, developers might think, “I can just use Kubernetes for auto-scaling.” The core architectural design may not even be scalable, but the tool becomes the crutch.

2. Overhead Learning Curve

Each new tool brings its own set of complexities. It’s not just about installing and configuring the tool; the development team must learn how to use it, debug issues, and manage it in production. For example, introducing Apache Kafka for messaging without fully understanding the use case may lead the team to spend more time learning and maintaining Kafka than solving the actual business problem.

3. Vendor Lock-in

Using too many third-party apps can lead to vendor lock-in. Imagine your entire system depends on solutions like AWS Lambda, DynamoDB, or Google Cloud Pub/Sub. Switching from one cloud provider to another becomes expensive and complicated because your entire architecture is tied to a specific ecosystem. What seems efficient at first becomes a significant hurdle when your business needs to evolve or migrate.

4. Neglecting Good Design Principles

Over time, architecture that is based primarily on tools loses flexibility. When every problem is solved with a third-party tool, the system gradually becomes tool-dependent. This makes adapting to change difficult, as every modification requires either tweaking or replacing the tools that have been integrated. Vendor updates, feature deprecation, or even the end-of-life (EOL) of a tool can severely affect the stability of your system.

5. Missing Out on Custom Solutions

Sometimes, the best solution isn’t a pre-built tool but a custom-built solution that’s tailored to your team’s specific needs. However, custom solutions often get ignored because they are seen as time-consuming or difficult compared to out-of-the-box third-party tools. Custom solutions, though, provide full control over the system and greater flexibility in the long run.

Why Do Tools Dominate?

So, why do we fall into the trap of architectural acrobatics that ends with tool-talk?

  1. Limited Development Time
    With pressure to release products or new features quickly, developers and architects often seek shortcuts, and third-party tools offer that instant solution. Instead of spending time redesigning the architecture or building a better system from the ground up, teams “patch” the problem using tools that are readily available.
  2. Technological FOMO (Fear of Missing Out)
    There’s a strong sense of FOMO in the tech industry. If other companies are using Kubernetes or Docker, there’s pressure to do the same to appear up-to-date. In many cases, these tools may not even be necessary or suitable for smaller-scale businesses.
  3. Vendor Marketing
    Large vendors like AWS, Google Cloud, and Azure aggressively market their tools as “one-size-fits-all” solutions. Their strong marketing presence makes these tools seem like the perfect answer to every problem when, in reality, that’s not always the case.

Refocusing on Good Architectural Design

How do we avoid falling into the trap of architectural acrobatics and stay focused on solid design principles?

  1. Stick to Fundamentals
    Before deciding on tools or third-party apps, ensure that you understand the fundamental principles of your system’s architecture. Does your system need scalability? Resilience? Don’t just focus on the tools available; think critically about the problems you are trying to solve.
  2. Minimize Tool Dependency
    It’s okay to use tools, but they shouldn’t be the backbone of your architecture. Build a modular architecture where tools can be swapped out if necessary, and don’t let the tools dictate how your system works.
  3. Choose Tools Based on Real Needs
    Instead of adopting technologies just because they’re trendy, ensure that the tools you choose are genuinely necessary for your specific use case. If your application doesn’t need high traffic, you might not need Kubernetes or Kafka. Don’t over-engineer your system just to be “cool.”
  4. Consider Custom Solutions
    Sometimes the best answer is a custom-built solution. While it may take longer upfront, custom solutions give you full control over the architecture and can be adapted as your business evolves, without relying on third-party vendors.

Conclusion

Architectural acrobatics is a common pitfall in today’s tech industry. Focusing too much on tools and third-party apps can distract from building a solid architectural foundation. Tools are important, but they are just that — tools. The real challenge lies in understanding the problem and designing the right solution for it.

Tools and technologies will change over time, but good architectural principles will always stand the test of time. So before getting lost in tool-talk, ensure that you’re focused on solving real problems with the right design, not just performing acrobatic stunts with the latest tech.

--

--

Rizki Nurhidayat
CodeX
Writer for

🌟 Hitting life full throttle, no brakes. 💥 📈 Up for every challenge, down for every adventure. 🌍 💡 Dropping truths, stirring pots.🔥 👊 Embracing Mondays