Addressing microservices challenges – insights from a seasoned architect

Harshal Bhavsar

December 18, 2024

wipro blog

This week, we’re excited to welcome Harshal Bhavsar, Senior Architect at Wipro, to share his insights from the field. With years of experience supporting cloud migrations and solving the complexities of distributed applications, Harshal brings a wealth of knowledge to the challenges of managing microservices. In this post, he dives into the unique hurdles teams face and strategies to overcome them. Take it away, Harshal!


Over my two decades in the IT industry, I’ve observed a common trajectory in application development: applications start strong with well-designed architectures, but over time, the focus on rapid delivery overshadows code quality. This challenge is particularly pronounced in microservices-based architectures, where the distributed nature of the system amplifies complexity and makes technical debt harder to detect — often growing unnoticed until it becomes a serious issue.

The surprisingly simple culprits behind technical debt

Technical debt doesn’t arise overnight. Based on my experience, some of the common contributors include:

  • Lack of awareness: Development teams may not fully understand the original application design and framework
  • Insufficient reviews: Absence of self-reviews, peer reviews, or architectural oversight during development
  • Knowledge gaps: Frequent vendor turnover or employee churn in development teams leads to a loss of institutional knowledge.

Tools to bridge the gap

The good news is that modern tools can help tackle these issues by providing insights and governance needed to maintain architectural integrity. For example, vFunction’s architectural observability platform:

  • Provides architects and engineering leads with actionable, metric-driven insights into application complexity and technical debt
  • Automates architectural governance to support best practices for microservices

Before exploring how vFunction can help, let’s explore the unique challenges of microservices-based architectures. Microservices are widely adopted for their ability to perform as small, independent services, enable faster development cycles and achieve greater scalability compared to monoliths. However, this approach introduces its own challenges, including:

  • Complexity: Managing multiple small services can lead to tangled architectures if not governed properly
  • Inter-service communication: Ensuring smooth and efficient communication between services is critical
  • Data consistency: Maintaining consistency across distributed services can be challenging
  • Monitoring and testing: Tracking and testing interactions between microservices is inherently more complex than with monoliths

These challenges demand careful planning, design, and implementation. With the right tools, you can mitigate these issues and build resilient, scalable systems.

Real-world problems and how vFunction solves them

To design an effective architecture, it’s essential to start by identifying a clear, business-related problem that needs solving — one that all stakeholders agree is worth addressing.

Based on my own experience working as a software architect over the years, one can identify a general pattern of problem identification and resolution:

general pattern of problem and solution

Focusing on a common, well-defined challenge can lay the foundation for an industry-standard architecture. This approach also highlights how a powerful platform like vFunction can effectively tackle these issues and streamline the process.

Let’s explore some common challenges in microservices architecture and how vFunction can help visualize, modernize and manage applications to address them.

Problem 1: Handling increased traffic and scalability

Description
Need to handle more requests/traffic due to increased retail banking business over the last few years.

  • Legacy monoliths were built with limited capacity and are struggling to handle increased demand
  • Cloud costs are rising due to vertical scaling of compute resources
  • Teams need to deliver new features faster while maintaining low latency

Solution

  • Refactor legacy monoliths into microservices using vFunction for horizontal scalability
  • Leverage serverless architectures (e.g., AWS Lambda, Azure Functions) or containerized workloads to optimize cloud costs
  • Use vFunction to identify bottlenecks and align services with scalability goals
handling increased traffic and scalability

Problem 2: Inter-service communication overhead

Description: Inter-service communication creates a heavy load on network traffic (distributed)

  • In a distributed architecture implementation, it is not unusual to see higher network traffic and issues related to communication latency
  • It is a challenge to meet real-time and backend communication requirements efficiently

Solution

  • Use vFunction’s observability features to analyze inter-service communication patterns
  • Identify and fix circular dependencies, multi-hop flows, and unintended calls that increase latency
shopping cart service app
Example Use Case: A shopping cart service needs to calculate up-to-date discounts in real time.

Problem 3: Increase in latency due to long service chains

Description: Service-to-service communications/long chain of calls

  • HTTP calls to multiple microservices result in long request chains
  • Querying across several services increases latency and complexity

Solution

  • Use vFunction’s architectural observability to pinpoint inefficient flows and unintended behaviors
  • Implement data aggregation strategies or consolidate operations to reduce long service chains

Problem 4: Lack of architectural governance

Description

  • Dev teams inadvertently introduce dependencies that violate architectural best practices.
  • Unchecked complexity leads to higher MTTR (Mean Time to Recovery) during outages.
  • Services may improperly access shared resources, increasing risks.

Solution

  • Use vFunction’s architecture governance capabilities to enforce architectural rules, such as restricting certain service-to-service communications.
  • Set alerts for violations, such as services accessing restricted databases, and prevent new multi-hop flows from degrading performance.

Continuous learning: the key to architectural excellence

Architectural governance and modernization are ongoing processes. As software architecture evolves, staying current with tools, techniques, and best practices is essential. Platforms like vFunction not only help manage complexity but also enable teams to continuously learn, adapt, and improve.

By leveraging tools like vFunction, you can ensure your microservices-based architecture remains robust, scalable, and aligned with your business goals — release after release.

Harshal Bhavsar

Senior Architect, Wipro Limited

Harshal works as a Senior Architect at Wipro looking after App modernization and cloud migration opportunities. He has more than 15 years of experience in IT industry. Specialized in providing design and solutions to distributed applications and help in improving App Scalability, Engineering Velocity and Resiliency etc.

Get started with vFunction

See how vFunction can accelerate engineering velocity and increase application resiliency and scalability at your organization.