Cloud Computing 12 min read

What I Learned Building a Hybrid Cloud System: Architecture, Tools, and Best Practices

Over the past two months I helped develop a distributed hybrid‑cloud platform, tackling challenges from OS differences and network ports to message queues, logging, multi‑language integration, and testing, and I share the architectural decisions, tooling choices, and practical lessons learned for building robust backend systems.

21CTO
21CTO
21CTO
What I Learned Building a Hybrid Cloud System: Architecture, Tools, and Best Practices

Preface

In the past two months I was deeply involved in developing a distributed system. Although I never aimed to become an architect, the experience forced me to take responsibility for both design decisions and more than 70% of the coding work.

I realized my strengths lay in software concepts such as design patterns, layered architecture, and API design, but I lacked knowledge in hardware and networking.

Characteristics of different operating systems

Network port management and distribution

Choosing network protocols for monitoring virtual machines

Hardware support for distribution and .NET/C# compatibility

When to use multithreading and how to handle thread exceptions

The importance of a logging system in a distributed environment

When to use relational databases versus NoSQL

Choosing between MSMQ and RabbitMQ

Effective communication with other departments

Scheduling across systems written in different languages

The role of test cases in evolving a large system

How coding standards and system standards aid maintenance and extension

Project Overview

The project, which cannot be described in detail, involved building a coordination system for a large domestic vendor's private cloud and purchased public cloud—a hybrid cloud solution.

We used RESTful APIs extensively, discovering that JSON and REST are universally loved by developers worldwide.

Why Software Configuration Failed After Installation

After configuring open‑source tools, the system would not start because the company’s IT only opened common ports and blocked others. Obtaining additional ports required a formal process, highlighting the need for an external development VM.

Using RabbitMQ

I prefer message queues; RabbitMQ offers a richer protocol than MSMQ and better supports the many open‑source languages we integrate with.

Message queues decouple components, simplify data exchange, and require asynchronous handling of unconsumed messages.

Redis

We employed MySQL, SQL Server, and Redis. Redis stores data that lacks clear relational structure, such as large JSON payloads, and we use it for read‑heavy operations while writes go to MySQL with triggers for replication.

Log System

In a deep, multi‑threaded system, comprehensive logging is essential for diagnosing issues that are hard to trace with traditional debugging.

Component‑Based Development

We adopted a branch‑per‑developer workflow, committing code weekly to reduce merge conflicts in a large, modular codebase.

Test Cases

Initially, test cases were seen as unnecessary, but for this project they became crucial for validating APIs that provide monitoring data (CPU, I/O, network) across multiple servers.

Stable APIs and thorough test cases help isolate logic and coordinate components effectively.

Coding Principles

Weekly code reviews address inconsistencies such as naming, variable placement, and method length. We also separate concerns, ensuring that operations like VM creation and database logging are not mixed within the same method.

Communication

Since the project spans multiple teams, understanding each team’s technology stack and business logic is vital. Coordinating message formats and exchange definitions for RabbitMQ required detailed email discussions to avoid misunderstandings.

Key Takeaways

The experience taught me many lessons about technology selection, architecture, and cross‑team collaboration that will guide future projects.

Technologies used:

Languages: C#, Java, Python

Data stores: MySQL, SQL Server, Redis, XML files

Data exchange: REST, JSON, RabbitMQ

Operating systems: Ubuntu, Windows

VM monitoring: Zabbix

Search: Solr

Concepts: multithreading, layered architecture, modular and component‑based development

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Distributed SystemsBackend ArchitecturetestingRabbitMQhybrid cloud
21CTO
Written by

21CTO

21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.