Day 1 of System Design : How Simple Solutions Solve Real Business Problems

Yash Verma
7 min readFeb 13, 2025

--

Introduction

Hello, I’m Yash Verma, and I’m on a journey to deepen my knowledge and understanding of designing complex systems. I had the privilege of working with a Web3 startup from the ground up, which gave me countless opportunities to consult with my team on architecture decisions, feature requirements, UI/UX flow, backend performance, edge case handling, efficiency, and cost-effectiveness.

In a fast-paced startup environment, decisions need to be made quickly. There isn’t always time to thoroughly study design principles before implementing a feature — you have to think on your feet and deliver a working solution as soon as possible. I learned to adapt, refine, and continuously improve the product while keeping up with tight sprint deadlines.

Through this blog, I want to share my insights on system design — how I approach designing features, what factors I consider, and how I navigate challenges. My goal is to help you think outside the box while also learning as much as I can from this process, its a mutual knowledge transaction between you and me.

I’ll be covering various topics related to system design in each blog post or other forms of media content.

Through this series of blogs, you’ll gain the ability to effectively communicate your ideas in team meetings or design interviews. This will not only help your team make better decisions but also improve your performance in system design interviews.

Today, let’s discuss what system design is. You’ve probably heard about distributed systems — but how are they designed to meet business requirements? When we talk about system design, we’re referring to how different components are structured within a distributed system and how they interact with each other.

To illustrate this, let’s take a simple example: an e-commerce website. This is a platform where users can browse and purchase products. Through this example, we’ll explore how real-world systems leverage design patterns and tools to address customer needs efficiently.

3 CORE METRICES TO DESIGN A SYSTEM

  1. Simplicity:
  • Is the design easy to understand?
  • Can we modify or extend it if necessary?
  • A simple design is easier to maintain, debug, and adapt as requirements evolve.

2. Fidelity:

  • Does the design align with the original requirements?
  • Are all specified needs and use cases being addressed?
    Fidelity ensures that the system effectively meets the intended goals without overlooking critical features.

3. Cost-Effectiveness:

  • Is the design affordable and feasible?
  • What are the implementation costs, including infrastructure, tools, and maintenance? Here, we evaluate the financial impact of the design to ensure it provides value without unnecessary expenses.

So always try to make design decisions based on these three key factors (Simplicity, Fidelity, Cost effectiveness).

Let’s start with an example of an e-commerce website.

Imagine you meet a friend who sells t-shirts. Currently, they are selling these t-shirts either through social media or offline channels. Now, they want to build an online presence to reach a wider audience.

They come to you, as a technical expert, and ask for your advice on how to sell t-shirts online. As you approach this problem, remember the three key metrics:

  1. Simplicity: The solution should be easy to understand and manage.
  2. Fidelity: It should meet all their business requirements.
  3. Cost-Effectiveness: The implementation should be affordable and efficient.

Considering these factors, one of the best solutions might be to leverage an existing platform like Amazon. It’s a well-established, cost-effective solution that can help them start selling online without the need to build an entire website from scratch.

However, when you suggest Amazon, your friend responds:

“Amazon isn’t the best fit for me. I can’t customize the look and feel of my shop the way I want. Plus, products are recommended based on Amazon’s algorithm, which may not align with the t-shirt styles or collections I want to promote.”

This presents an interesting challenge: while Amazon offers simplicity and cost-effectiveness, it doesn’t meet the fidelity metric here — your friend wants customization and control over product recommendations and the store’s appearance.

So, what should we consider next? Let’s explore possible alternatives.

At this point, you suggest:

“Why don’t you host your t-shirt shop on Shopify?”

Shopify provides a good balance of flexibility and simplicity. It offers reasonable control over your store’s design, allows you to have your own custom webpage, and comes with numerous built-in integrations for payment and delivery providers.

Your friend checks out Shopify, explores its features, and responds enthusiastically:

“This looks fantastic! I’ll go ahead with it.”

Pro Tip #1: Focus on Solving the Business Problem

The core principle of software architecture is to solve the business problem — not to create a complex technical solution right away.

If a reliable, cost-effective solution already exists, use it. There’s no need to reinvent the wheel by building everything from scratch.

Key takeaway:
✅ Leverage existing tools when they align with the business requirements.
⚠️ Don’t rush into custom development unless absolutely necessary.

By prioritizing business goals over technical complexity, you not only save time and resources but also deliver value faster.

The Plot Thickens: New Challenges After Success

Fast forward three months, and your friend returns with exciting news:

“Shopify has been a game-changer! We’re now processing around 100 orders per day.”

But along with the success, they’ve encountered some serious operational challenges that need your help.

🛠️ Challenge 1: Order Tracking Issues

Your friend explains:

“Whenever we check order details in Shopify, we don’t get a detailed log of how the t-shirt moves from order placement to delivery. Customers frequently call asking, ‘Where’s my t-shirt?’ or ‘Has it been delivered?’”

Right now, the process is manual:

  • Log into the portal → Check the delivery status → Call the customer back → Update them manually.

This inefficiency is not only time-consuming but also costly. The lack of real-time delivery tracking is affecting customer experience and driving up support expenses.

🌐 Challenge 2: Payment Gateway Problems with International Orders

Your friend continues:

“We’ve also received complaints from international customers. When they try to pay using foreign debit or credit cards, the payment gateway fails. This is stopping nearly 10–20% of our sales.”

The issue arises because the current payment provider doesn’t support certain foreign currencies, preventing international orders from going through.

🤔 What Should We Do Next?

Now, you’re faced with two critical system design challenges:

  1. Improving Delivery Tracking:
  • Should you integrate with a third-party logistics API to get real-time delivery updates?
  • Or should you consider building a custom tracking solution for more control?

2. Upgrading the Payment Gateway:

  • Should you switch to a more globally-friendly payment provider like Stripe or Adyen?
  • How do you ensure seamless integration without disrupting current sales?

💡 Reminder: Revisit the three design metrics:

  • Simplicity: Can the solution be implemented and maintained easily?
  • Fidelity: Does the solution solve the core issues while meeting all requirements?
  • Cost-Effectiveness: Does the chosen approach justify the cost?

What would you recommend in this situation? pause here and think about all the possible solutions….

Applying System Design Principles: Finding a Practical Solution

At this point, you apply the core principles of system design and ask yourself:

“Do I really need to design a new system from scratch? Or can Shopify, or one of its integrated partners, solve this problem?”

You advise your friend to raise a support ticket with Shopify and speak with the payment gateway provider about accepting international cards.

However, your friend responds:

“I’ve already tried that. The payment provider refuses to accept international cards unless we move to a standalone website. It’s a similar situation with the delivery provider — there’s no timeline for when these issues might be resolved. Unless we move away from these providers, we’ll keep facing these problems.”

🛠️ The Turning Point: Where System Design Begins

This is a pivotal moment. System design truly begins here.

  • You have an existing system with integrations.
  • You need more control and flexibility over certain functionalities.
  • You must now design a solution that satisfies the new business requirements.

The goal is to wrap around the existing Shopify infrastructure while introducing custom components to address the challenges without discarding the current setup entirely.

High-Level System Design Solution

  1. Payment Gateway Integration
  • Build a custom payment page that integrates with Shopify.
  • When users proceed to checkout, they are redirected to this new page.
  • On this page, provide multiple international payment options like: Razorpay, PayPal, Stripe
  • Once payment is completed, redirect the user back to Shopify for order confirmation.

2. Delivery Tracking System

  • Create a delivery tracking page linked to the order data from Shopify.
  • Users can enter their Order ID to track the status of their shipment.
  • This system can integrate with delivery service APIs to provide real-time tracking updates, eliminating the need for manual checks.

🔍 Why This Approach Works

  • Simplicity: You don’t build an entirely new e-commerce platform. You enhance the existing Shopify setup.
  • Fidelity: The new pages align with the evolving requirements — international payments and better tracking.
  • Cost-Effectiveness: You avoid costly migrations and leverage existing Shopify integrations while adding only the necessary custom components.

This design strikes a balance between reusing what’s already available and customizing what’s necessary — demonstrating a fundamental principle of smart system design.

Next Steps:

  • Identify the best APIs for payment and delivery tracking.
  • Design a flow for handling payments and updating tracking statuses.
  • Ensure smooth integration with Shopify for a seamless user experience.

System design isn’t just about creating new things — it’s about adapting, integrating, and evolving systems to solve business problems efficiently.

So let us draw this out as a bunch of block diagram most of this are black boxes

Congratulations on completing your very first system design! 🎉

I hope this experience gave you the perfect dose of dopamine and excitement — the kind that makes you want to explore more complex systems.

Personally, I find it fascinating how these seemingly small components, when synchronized properly, can come together to create something powerful and efficient.

System design isn’t just about architecture diagrams or technical jargon — it’s about understanding how things work together to solve real-world problems. Stay curious, stay excited, and I’ll see you in the next blog!🙌✨😁

signing off 👋

Yash Verma

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Yash Verma
Yash Verma

Written by Yash Verma

Empowering decentralized futures, advancing full-stack development, and pioneering blockchain engineering.

No responses yet

Write a response