A Close Look at Eclipse Che
In the era of microservices and cloud-native applications, Software Development Lifecycle (SDLC) is going through a major transformation. The combination of containers and continuous integration and deployment (CI/CD) is enabling rapid deployment of software like never before. And though the languages, runtimes, frameworks, deployment targets have changed dramatically, the tooling hasn’t evolved much. Developers are still relying on traditional integrated development environments (IDEs) such as Visual Studio, Eclipse, and IntelliJ. While they may be powerful, they are definitely not designed to take advantage of emerging technologies.
Enter Eclipse Che, an integrated development environment that will get as portable as your code and applications. Imagine the power of carrying an IDE that’s bundled along with the code, required dependencies, and runtimes. That’s the premise on which Eclipse Che is built. It aligns with the emerging trends such as social coding and lightweight containers. Eclipse Che redefines how IDEs are designed and built.
Eclipse Che is a Java application that runs on Apache Tomcat server. The in-browser IDE is built using the Google Web Toolkit (GWT). Che’s power lies in its software development kit (SDK), which is highly extensible to develop new plug-ins. Adding a new language, framework, and runtime is as simple as creating a new plug-in.
To appreciate Eclipse Che, we need to understand its architecture and terminology.
Typically, IDEs are decoupled from source code management systems, build pipelines, and deployment phases. This gap becomes glaringly visible when working in a polyglot environment. Eclipse Che addresses this by bringing together the IDE, project artifacts, and runtimes into one unified, logical sandbox called the workspace. Technically, it’s based on a three-tier architecture where the editor is the front-end, with an API layer managing the project workflow acting as the middle tier, and a runtime responsible for hosting the application acts as the backend.
The best thing about an Eclipse Che workspace is that they can be persisted, versioned, snapshotted, and ported to other environments.
Developers can connect the workspace to a remote source code repo hosted on Github or BitBucket. The runtime is packaged as a Docker container that runs specific environment such as Node.js, Python, Java, or Ruby. Since Che supports SSHing into the container to install additional components, it calls it as a machine. It’s also possible to configure multiple machines running disparate runtimes to parallel test code in different environments.
Let’s summarize this: Eclipse Che runs in a server, which hosts a workspace that contains multiple projects connected to remote repositories that can be compiled and tested on multiple machines.
Each Che Server can host multiple workspaces assigned to different teams and developers who access it from their web browsers. Workspaces can also be shared across developers for concurrent access. Che is currently based on last-write-wins policy to handle simultaneous file access. But it is going to get Google Docs like concurrency to handle simultaneous edits.
The best thing about an Eclipse Che workspace is that they can be persisted, versioned, snapshotted, and ported to other environments. Developers can start working in a local Vagrant environment and move the entire workspace to Amazon EC2 anytime.
The best way to try Eclipse Che is setting up a local Vagrant Box or a Docker container. When I ran it in a Docker host created by docker-machine, I discovered that each workspace is launched in a dedicated container on the same host running the Che Server. Each time a developer creates a new workspace, Che will build the new image and launches a container.
The following screenshot shows that I am running two workspaces — Node.js and PHP.
Running docker ps command on the host shows that we are running three containers: Che Server, Node.js workspace, and PHP workspace.
The first container with ID 830caf2ad131 is hosting PHP workspace while the second is responsible for Node.js project. Che Server is the container that bootstraps the workspaces.
The Dockerfile definitions for all the supported runtimes are available on GitHub. Following the typical Docker workflow, the container can be stopped, committed, and pushed into a registry as an image, which can then be launched in other environments.
As a containerized application, Eclipse Che can be easily scaled by running additional instances on Docker Swarm or Kubernetes. Backed by a durable, persistent storage, Che running on a container orchestration engine can become a solid development environment for an entire organization. It will be interesting to see if Che can be deployed in CaaS platforms like Google Container Engine or Amazon EC2 Container Service.
It is also possible to mount a remote Che workspace on a developer workstation. Based on a super-fast Fuse-based mount and sync mechanism, developers can perform a mount on any operating system that supports Docker. This feature emulates Che as a desktop IDE.
Eclipse Che can be deployed in three modes: Local, Private Cloud, and SaaS. Local installation includes bare metal, VMs, and containers. It can also run in public cloud environments such as Amazon EC2, Azure VMs, and Google Compute Engine. Bitnami, the popular OSS marketplace for multi-cloud images has a one-click installer for Che. The commercial SaaS edition of Che is available in the form of Codenvy.
Apart from offering the commercial edition, Codenvy is one of the major contributors to Eclipse Che. IBM, Red Hat, Samsung, SAP, and Microsoft are the other contributors to the project. At the recent Red Hat Summit, Red Hat demonstrated Che’s integration with OpenShift PaaS. SAP has chosen Che for its HANA platform. Che is bundled with Samsung’s Embedded IoT platform, ARTIK.
As developers start to embrace microservices and serverless computing, lightweight, cloud-based IDEs become the key. Platform vendors and cloud providers will start exposing customized development environments that come with preconfigured tools and runtimes. Eclipse Che can potentially become the embedded IDE for a variety of PaaS and cloud-native platforms. The rise in IoT will also drive the adoption of Che. OEMs developing System-on-a-Chip computers will also start bundling Che.
Going forward, the cloud-based IDE segment will be dominated by Che, Cloud9, and Visual Studio. With the recent acquisition of Cloud9, Amazon is gearing up to integrate all its services with the IDE. Microsoft has a history of shipping cutting-edge tools for developers. It’s a matter of time before Visual Studio finds its way to the cloud. Other public cloud vendors will adopt Che to deliver customized tooling experience.
The developer tools market is ripe for disruption and, Eclipse Che will be leading that from the front and center.