US-20260126964-A1 - LOCAL SYSTEM ENVIRONMENT FOR CLOUD BASED DEVELOPMENT
Abstract
A system, device, and method for providing a development environment for a client system that runs on a cluster is disclosed. The method includes (i) starting the cluster from the client system to run the development environment, wherein starting the cluster includes instantiating the cluster based on a predefined cluster image, and configuring a set of dependencies for the cluster, wherein the set of dependencies includes a mounting for a network file storage, (ii) receiving, via the development environment, code input to an interface with the client system, (iii) determining to execute the code, and (iv) in response to determining to execute the code, executing the code using the cluster including automatically scaling the cluster based on a workload for executing the code.
Inventors
- Eric Liang
- Philipp Moritz
- Sofian Hnaide
Assignees
- Anyscale, Inc.
Dates
- Publication Date
- 20260507
- Application Date
- 20251022
Claims (20)
- 1 . A system for providing a development environment for a client system that runs on a cluster, comprising: one or more processors configured to: start the cluster from the client system to run the development environment, wherein starting the cluster includes instantiating the cluster based on a predefined cluster image, and in response to instantiating the cluster, automatically configuring a set of dependencies for the cluster; receive, via the development environment, code input to an interface with the client system; determine to execute the code; and in response to determining to execute the code, execute the code using the cluster including automatically scaling the cluster based on a workload for executing the code; and a memory coupled to the one or more processors and configured to provide the one or more processors with instructions.
- 2 . The system of claim 1 , wherein the set of dependencies is persisted for subsequent starts of the development environment.
- 3 . The system of claim 2 , wherein automatically scaling the cluster includes configuring each worker node of the cluster based on the set of dependencies stored to the network file storage that is persisted through termination or subsequent starts of the development environment.
- 4 . The system of claim 1 , wherein automatically scaling the cluster includes configuring each worker node of the cluster to use data stored on the network file storage.
- 5 . The system of claim 3 , wherein the data is persisted through termination or subsequent starts of the development environment.
- 6 . The system of claim 3 , wherein automatically scaling the cluster includes instantiating a new worker node for the cluster, comprising: retrieving the set of dependencies from the network file storage; and configuring the new worker node based at least in part on the set of dependencies.
- 7 . The system of claim 1 , wherein the set of dependencies comprises a mounting for a network file storage.
- 8 . The system of claim 6 , wherein configuring the set of dependencies includes copying the set of dependencies to the network file storage.
- 9 . The system of claim 7 , wherein the set of dependencies copied to the network file storage is persisted through termination or subsequent starts of the development environment.
- 10 . The system of claim 1 , wherein the code is input by a user to a local development environment running on the client system, and the code is transmitted to the development environment running in the cluster when the user requests that the code be executed.
- 11 . The system of claim 1 , wherein the code is persisted on the network file storage through at least one subsequent start of the development environment.
- 12 . The system of claim 1 , wherein the one or more processers are further configured to: receive, from the client system, an access request to access the development environment; and in response to receiving the access request, cause the cluster associated with the development environment corresponding to the access request to start based at least in part on a corresponding cluster image.
- 13 . The system of claim 12 , wherein the access request comprises a user identifier for a user requesting access to the development environment.
- 14 . The system of claim 13 , wherein the one or more processors are further configured to determine the development environment based least in part on the user identifier.
- 15 . The system of claim 14 , wherein the development environment is persisted in association with the user identifier.
- 16 . The system of claim 15 , wherein persisting the development environment comprises capturing a snapshot of at least the development environment and storing the snapshot on the network file storage mounted to the cluster.
- 17 . The system of claim 16 , wherein the capturing of the snapshot is performed at predetermined intervals.
- 18 . The system of claim 16 , wherein the snapshot comprises information pertaining to the mounting to the network file storage and does not comprise network dependencies to third party services.
- 19 . The system of claim 16 , wherein the snapshot is stored in a compressed format.
- 20 . The system of claim 1 , wherein configuring the set of dependencies for the cluster comprises mounting a network file storage, and the network file storage comprises a working directory for the development environment.
Description
CROSS REFERENCE TO OTHER APPLICATIONS This application is a continuation of U.S. patent application Ser. No. 18/214,360, entitled LOCAL SYSTEM ENVIRONMENT FOR CLOUD BASED DEVELOPMENT filed Jun. 26, 2023 which is incorporated herein by reference for all purposes. BACKGROUND OF THE INVENTION Traditional software development often requires developers to have dedicated hardware and software resources locally installed on their machines. This approach poses several challenges, such as the need for frequent software updates, hardware compatibility issues, and limited scalability. Developers often encounter difficulties in managing the installation and configuration of various development tools and dependencies across different operating systems, which can lead to inconsistencies and time-consuming troubleshooting processes. Additionally, the reliance on local hardware restricts the accessibility and mobility of developers, as they are bound to a specific physical location to carry out their work. Furthermore, collaboration between geographically dispersed team members becomes cumbersome, as coordinating software versions and configurations becomes a complex and error-prone task. BRIEF DESCRIPTION OF THE DRAWINGS Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings. FIG. 1 is a block diagram of a system for providing a development environment according to various embodiments of the present application. FIG. 2 is a block diagram of an embodiment of a system for developing code. FIG. 3 is a block diagram of a system for providing a development environment according to various embodiments of the present application. FIG. 4 is a block diagram of a system for providing a development environment according to various embodiments of the present application. FIG. 5 is a flow diagram of a method for providing a development environment according to various embodiments of the present application. FIG. 6 is a flow diagram of a method for providing a development environment according to various embodiments of the present application. FIG. 7 is a flow diagram of a method for determining whether the development environment has been previously instantiated according to various embodiments of the present application. FIG. 8 is a flow diagram of a method for starting a development environment according to various embodiments of the present application. FIG. 9 is a flow diagram of a method for obtaining a copy of a previously started development environment according to various embodiments of the present application. FIG. 10 is a flow diagram of a method for providing a development environment according to various embodiments of the present application. FIG. 11 is a flow diagram of a method for performing a snapshot of a development environment according to various embodiments of the present application. DETAILED DESCRIPTION The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions. A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured. As used herein, a git may include a version control system, such as a system for managing source code and tracking changes in software deve