The complexity of software architecture has exploded in recent years. The number of tools, methodologies, execution environments, and services that you can incorporate into modern systems grew almost exponentially within just the last five years. If you take a closer look, you'll realize this wasn't driven by technology. The main drivers were continually evolving business requirements pushing established approaches to the limits.

[ Discover ways enterprise architects can map and implement modern IT strategy with a hybrid cloud strategy. ]

An architect is a driver behind successful and sustainable development projects.  An architect is also indirectly responsible for team velocity. How can you put more emphasis on the kinds of technologies that help teams perform faster and more efficiently?

Image depicting the evolution of process, architecture, packaging, and infrastructure over time.

Even though DevSecOps and continuous integration/continuous development (CI/CD) pipelines are common now, setting up development environments continues to be challenging. It is a tedious but necessary task that usually happens during project creation. Creating development environments is somewhat documented, but as teams grow, the process is rarely optimized. That's less of a challenge when you're working within a well-defined set of technologies and smaller teams. But it quickly becomes a nightmare when you need more strict governance and as the team grows larger.

[ Learn how to build a flexible foundation for your organization. Download An architect's guide to multicloud infrastructure. ]

What makes up a development environment?

Development environments are usually separated into two areas. One is the inner loop, which describes everything happening on a developer's laptop, and the other part is called the outer loop. Here is a rough sketch of an inner/outer loop setup for a traditional Java project.

Image showing two loops. The inner loop is green and the outer loopis red.

Within the inner loop are established tools like integrated development environments (IDEs), build tools like Maven or Gradle, and tools to package and test your services locally. You might even have client tooling for version control or various IDE plugins to secure conformant code and configuration. While this sounds trivial, it turns out to be a lot more complicated. You want to make sure that library and container dependencies are pulled from the correct repositories, and you might need to use corporate templates for code inspection. Tabs or spaces may seem like the least of your concerns. But configuration is critical because it has to be exactly the same on every developer's machine.

With every new piece of technology, the dependencies grow even further. Think about building and running containers locally to execute integration tests for individual services. One major advantage of modern Kubernetes-native frameworks like Quarkus is that they come with support for containers and local tests. With the help of Quarkus' DevServices, you can spin up containers locally for databases and directly test them. But some days, not even this type of convenience is enough, especially when you have to switch between different project settings often.

This is where centralized development environments come into play. One example of this is OpenShift Dev Spaces (previously known as CodeReady Workspaces).

3 advantages of cloud-based development tools

Cloud-based IDEs solve some of the boundaries of local IDEs in several ways. First and foremost, they decouple project environment descriptions from a local installation. This is done with the help of devfiles that contain a complete workspace description. It also allows replicated launches of the same environment for all team members. They enable you to provide a standardized, up-to-date environment within minutes for almost any number of developers joining a project.

Another advantage is that IDEs aren't limited by resource constraints. Spinning up complete clusters with dependent containers for various services may extend beyond the resources available in the most powerful developer laptops. In heavily regulated environments, it's mandatory to work as close as possible to the production environment.

If you're using OpenShift, instead of testing with different container versions and runtimes locally, Dev Spaces can work within the OpenShift platform to keep development as close as possible to the production environment.

[ Download Hybrid cloud and Kubernetes: A guide to successful architecture

Third, an important byproduct of cloud-based IDEs is increased data security for development artifacts and the complete environment. This is because everything a developer works on stays on the centralized cluster and corporate infrastructure. Nothing leaves the secure workspace that is governed by centralized access management, no matter where (or on which device) someone is working.

Wrap up

Centralized IDEs like OpenShift Dev Spaces help mitigate some of the challenges of remote work environments, speed onboarding, and limit context switching. These are very important aspects of enabling team velocity and productivity.

[ Become a Red Hat Certified Architect and boost your career. ]


关于作者

Markus Eisele is a Red Hat Developer Tools Marketing Lead at Red Hat. He is also a JavaTM Champion, former Java EE Expert Group member, founder of German JavaLand and a speaker at Java conferences around the world.

UI_Icon-Red_Hat-Close-A-Black-RGB

按频道浏览

automation icon

自动化

有关技术、团队和环境 IT 自动化的最新信息

AI icon

人工智能

平台更新使客户可以在任何地方运行人工智能工作负载

open hybrid cloud icon

开放混合云

了解我们如何利用混合云构建更灵活的未来

security icon

安全防护

有关我们如何跨环境和技术减少风险的最新信息

edge icon

边缘计算

简化边缘运维的平台更新

Infrastructure icon

基础架构

全球领先企业 Linux 平台的最新动态

application development icon

应用领域

我们针对最严峻的应用挑战的解决方案

Virtualization icon

虚拟化

适用于您的本地或跨云工作负载的企业虚拟化的未来