19 research outputs found

    System support for elasticity and high availability

    No full text
    Elasticity and high availability (HA) are key requirements among modern Internet applications. Elasticity enables applications to dynamically allocate/release physical resources in proportion to request load. High availability enables applications to mask failures in the system from end users. In current practice, every application implements these features as part of its own application logic, resulting in unnecessary design complexity. This thesis argues that facilities for elasticity and HA should be exposed as system-level primitives, in the same way abstractions for files and networks became operating system-level primitives three decades ago. Unfortunately, providing these higher-level services efficiently may require knowledge of application data structures, consistency requirements, and workloads. This thesis describes initial instantiations of such interfaces for two broad (and different) classes of applications: network middleboxes (e.g., load balancers, intrusion prevention systems, etc) and database systems. Elasticity is achieved typically through dynamic partitioning of state and inputs into independent subsets, while HA is achieved through state replication. Guided by this principle, this thesis presents a system-level runtime that partitions the middlebox state along flow boundaries and provides abstractions for elasticity and HA using live migration and replication of flows respectively. For database systems, this thesis presents a hypervisor-level HA system that performs database-aware virtual machine replication, eliminating the need for complex application-level HA mechanisms. This thesis concludes that while there may not be a one-size-fits-all solution to application elasticity and HA, it is still feasible and beneficial to provide system-level primitives that are applicable across one or more application domains.Science, Faculty ofComputer Science, Department ofGraduat

    App-Bisect: Autonomous Healing for Microservice-based Apps

    No full text
    Abstract The microservice and DevOps approach to software design has resulted in new software features being delivered immediately to users, instead of waiting for long refresh cycles. On the downside, software bugs and performance regressions have now become an important cause of downtime. We propose app-bisect, an autonomous tool to troubleshoot and repair such software issues in production environments. Our insight is that the evolution of microservices in an application can be captured as mutations to the graph of microservice dependencies, such that a particular version of the graph from the past can be deployed automatically, as an interim measure until the problem is permanently fixed. Using canary testing and version-aware routing techniques, we describe how the search process can be sped up to identify such a candidate version. We present the overall design and key challenges towards implementing such a system

    SCHEMA MEDIATION IN PEER DATA MANAGEMENT SYSTEMS

    No full text

    SecondSite

    No full text
    corecore