As a developer at Cloud Application Manager, I wear the IT Ops hat just as often as I spend time writing code. So I understand all too well the pain IT Ops endure to keep things running smoothly after a production update. In the continuous delivery world of devops where small, incremental code changes are deployed every day, chances are that IT Ops have to constantly put out fires. Luckily, in my own job, I’ve been able to leverage a combo of tools and workflows to catch the problems right where they originate — in the development environment.
Defining Reusable Components for the Development Stack
I believe that a developer’s dream should not turn into a nightmare for IT Ops. So I rely on a set of workflow and tools that help IT Ops like me sleep better at night. One such method is to provide a base level environment for the development stack. This stack usually comprises a company-approved base level runtime that is tested and production certified. The idea is that when it’s time to push updates in staging or production, the code is more stable and less likely to involve bugs or errors.
Let me give a simple example. At Cloud Application Manager, we want developers to launch a production-style environment locally in a standardized way. Part of the environment setup involves creating a user that allows the developers to log in securely. To enable this functionality, we configure an SSH key manager, which installs OpenSSH, creates a user, and allows the developer to access the instance securely using the private key the developer provides. Here you can see that I launched a basic app called Hello World with the SSH manager allowing me secure access to the instance.
Sample Reusable Runtime Service Catalog
Similarly, developers can consume other base level runtime components that IT Ops provides and add them as building blocks for the applications they build. One important aspect of standardizing the development stack is to make sure the environment stays consistent and up-to-date across the board. In this example, any new updates to the SSH box are available to the developers in two ways:
If a developer already deployed an environment, auto updates enabled by IT Ops notifies them to apply the updates.
Or the IT Ops has the option to push updates automatically to keep environments consistent without asking the developer to do so.
The SSH manager is just one small example. Like this, you can have many useful components built into the development stack. Here are some components I made available to developers in a self-service catalog.
- Boto. Boto is a Python library that can call any AWS API. For example, it helps register machines in an AWS route53 DNS service, which forwards requests to AWS services like EC2 instances, load balancers, and external services.
- Java. Some applications need the right Java JDK, and RTE installed in the environment.
- ELK. ELK is an open source stack, where Logstash collects and transports event data from remote sources, which Elasticsearch and Kibana then help query and visualize.
Adopting a Workflow That Enables DevOps
Across many enterprises today, IT Ops face a common problem. You receive a ticket from developers requesting a specific environment. First, you have to prioritize this request from among other high-priority production related tasks. When you get the environment ready, you have to notify the developers, and then communicate back and forth for every update to this setup. Think of the time delays for both sides, the communication overhead, and frustration.
Now compare that friction to this simple workflow: You share the production configured environment or runtime components in a catalog that developers can self-service and reuse on demand. For developers, this is as easy as logging in to Cloud Application Manager and spinning up the environment from their personal or team workspace.
At the end of the day, there’s no standard way to do good DevOps. What we provide are tools that help IT Ops enforce good DevOps practices, which build validation and consistency across environments every step of the way. Contact us for access to these tools and workflows. We’re happy to help you get started.
Want to Learn More About Cloud Application Manager?
Cloud Application Manager is a powerful, scalable platform for deploying applications into production across any cloud infrastructure – private, public or hosted. It provides interactive visualization to automate application provisioning, including configuration, deployment, scaling, updating and migration of applications in real-time.
Visit the Cloud Application Manager product page to learn more.