  Large scale data management systems utilize State Machine Replication to
provide fault tolerance and to enhance performance. Fault-tolerant protocols
are extensively used in the distributed database infrastructure of large
enterprises such as Google, Amazon, and Facebook, as well as permissioned
blockchain systems like IBM's Hyperledger Fabric. However, and in spite of
years of intensive research, existing fault-tolerant protocols do not
adequately address all the characteristics of distributed system applications.
In particular, hybrid cloud environments consisting of private and public
clouds are widely used by enterprises. However, fault-tolerant protocols have
not been adapted for such environments. In this paper, we introduce SeeMoRe, a
hybrid State Machine Replication protocol to handle both crash and malicious
failures in a public/private cloud environment. SeeMoRe considers a private
cloud consisting of nonmalicious nodes (either correct or crash) and a public
cloud with both Byzantine faulty and correct nodes. SeeMoRe has three different
modes which can be used depending on the private cloud load and the
communication latency between the public and the private cloud. We also
introduce a dynamic mode switching technique to transition from one mode to
another. Furthermore, we evaluate SeeMoRe using a series of benchmarks. The
experiments reveal that SeeMoRe's performance is close to the state of the art
crash fault-tolerant protocols while tolerating malicious failures.
