When developing software on the cloud, your environment is fundamentally different from what is on your laptop. This is a benefit to the development process because your code adapts to the environment it is running on. This article will go over five different integrated development environments (IDEs) that can improve your programming experience.
Che
While it's perfectly acceptable to develop on a local IDE with minimal integration to a local platform like OKD or minikube, there's a better option. Che is an IDE designed for, and that runs on, Kubernetes. For a developer, an IDE that's aware of the peculiarities of the cloud can be useful.
Some developers don't like using an IDE, because they feel an IDE can manage too much of their code for them, making them feel distant from the code base. But when your code is being developed on the cloud, there's a lot of benefit to letting the cloud remain abstract. You don't need to know about the platform you're coding on, because you're coding for an ephemeral, yet totally predictable, container. If you let your IDE be your primary interface, you don't have to worry about the filesystem you're using or the layout of the system. You can focus on your code, while your IDE manages your environment.
CodeReady Workspaces
A natural extension to running an IDE on Kubernetes is the ability to run your choice of several IDEs on Kubernetes. CodeReady Workspaces is an OpenShift feature that launches popular IDEs in a container.
Whether your language of choice is Python, Java, Go, Rust, C or C++, JavaScript, .Net, or something else, you can probably benefit from a good IDE. CodeReady Workspaces has access to VS Code, JetBrains, Che, Theia, and more. There are plenty of good arguments for standardizing a development team on the same IDE, and that's precisely what CodeReady Workspaces can make possible.
CodeReady Workspaces runs on OpenShift, so it can be used with several different cloud providers, including Red Hat OpenShift Service on AWS platform, but also Azure, Google Cloud, as well as your own private OpenStack cloud.
Container hubs
There are libraries for you to use in the software development world so you don't have to reinvent technology that someone else has already worked hard to figure out. Similarly, the cloud has containers that afford developers and sysadmins the same luxury.
When you're developing a cloud-native application and realize you need some standardized component (for instance, a database), you can import a container that provides that component. All you have to do is look at the inputs and outputs of the container, as if it were a function in code, and write your software accordingly.
There are many popular and reliable container hubs out there.
Like software libraries, well-supported containerized components have the advantage that they're maintained by someone else. While you could learn to make your own containers and run your own custom support applications, your first stop should be a container hub.
Buildah
When it comes time to build your own container, whether it's because a container hub doesn't have a well-maintained container for what you need, or because the container you need is your own, there are tools out there to make the process easy.
Even if you're developing applications in relative isolation, when you're developing for the cloud, your application at some point is sure to be deployed as a container. There are a few different ways to build a container. You can base your work on existing containers, or if you really need to start fresh you can build a container from scratch.
Whatever tactic you use, you want your solution to ultimately become automated so you can integrate it with your CI/CD or build process. Buildah is a flexible, easy to learn tool that's well worth using.
Kubectl
Depending on which cloud provider you're dealing with,the kubectl
command may or may not be available to you, but there's a difference between using a command and knowing a command.
I've found that learning kubectl
has been significant in my understanding of the underlying components of cloud technology. As a developer, you may never need to know what nodes are present in a cluster, but it can be nice to understand that they exist, why, and what they do. You also may not need to worry about what namespace your container runs in, or what pod it's a member of, but it can be useful to understand what is and isn't available inside and outside of a namespace or a pod.
[ Download now: Kubectl cheat sheet ]
Regardless of whether your cloud provider gives you access to kubectl
or you need to run it for a project, if you're the type of developer who wants to understand the whole stack, then you should learn kubectl
.
A developing story
Cloud-native application development is an evolving story. New tools continue to surface, and the task of developing in the cloud is getting easier and more accessible. One thing's for sure: you should definitely take the chance to get familiar with using different environments when computing in the cloud. With so many open source tools to make life in the cloud feel like your native environment, you have plenty of options to choose from.
[ Take the free online course: Deploying containerized applications ]
2 Comments