This week’s work focused on reviewing the systems I am responsible for and identifying potential risks, particularly in preparation for cloud migration.

Several key issues were identified, mainly around:

  • how to safely migrate existing data to the cloud
  • how to transform the current single-region deployment into a multi-region architecture
  • how to resolve inconsistencies between on-premise and cloud data

Another important finding was that some services still rely on on-premise databases, which should eventually be phased out. However, these are legacy systems, and making direct changes carries risk. Before taking action, it is necessary to thoroughly analyze:

  • the existing data migration mechanisms
  • supporting services involved in synchronization
  • detailed code paths that may affect data consistency

Early identification of potential issues is critical to avoid failures during migration.

To ensure a safe migration process, comprehensive monitoring is required. Key metrics include:

  • request success rate
  • timeout rate
  • write failure rate
  • data inconsistency rate

These should be monitored through both metrics dashboards and log analysis to provide full visibility into system behavior.

For multi-region deployment, the current design direction is to adopt a master–replica architecture:

  • writes are directed to the primary node
  • reads are served from replicas
  • replication is one-way from primary to replicas

The goals of this architecture are:

  • improving system stability
  • reducing latency for geographically distributed users
  • minimizing the impact of cross-region network instability

However, replication delay is an unavoidable aspect of this design. It is necessary to define an acceptable delay threshold and manage it through both theoretical understanding and real-time monitoring.

In addition to system-level considerations, I also realized the importance of mastering a scripting language. For tasks involving repetitive operations or data analysis, tools like Python can significantly improve efficiency.

That said, it is not always appropriate to use Python for building large-scale systems. Different programming languages serve different purposes while many can accomplish similar tasks, some are better suited for specific scenarios. Choosing the right tool for the right problem is essential.