Apps

3 characteristics of an effective cloud developer

Share this post:

wpid-thumbnail-f84acd2be0a476ed12b573bb5c8d2b99-500x334The days of writing an application that goes down or becomes unavailable are long gone—this is simply no longer acceptable. The end user’s expectation is that once your service is “live,” it’s always available and it always performs reasonably well. The only way to do that is to ensure that you’ve built a highly resilient, robust application.

Of course, this isn’t as easy as snapping your fingers and making it so. Cloud is a major enabler to deliver scalable, resilient applications (also known as cloud-native applications). Cloud-native applications make it possible for startups and enterprises alike to respond rapidly to market opportunities.

Developers will only become more important to these organizations. But in order to be effective in today’s marketplace, developers must embrace DevOps practices such as continuous delivery and evolutionary design. Most importantly, developers must approach their work with an operational mindset such as designing to handle failure quickly, and they need to be well versed in cloud technologies.

(RELATED: 5 bold cloud predictions from IBM Distinguished Engineers)

In the following article, I’ll detail why each of these are critical to becoming a highly effective cloud developer:

An operational mindset

Many developers today show up to work, write their code for a given line item they have, and move on to the next task. They may go a step further and deploy (often manually) their changes to a simplistic test environment. But the responsibility of deploying and operating the code is often handed to another group with the software developer having little input or knowledge of the production environment. Such an approach simply does not scale when developing a cloud-native application.

Developers today must take a more holistic, operational mindset approach to their work. They must understand full-stack engineering, including deployment automation, and possess an understanding of the infrastructure supporting their application and the non-functional characteristics of the application.

Developers should be able to answer these questions:

– What is the production deployment topology for the application including all compute, storage, and network resources?

– What are the possible points of failure and how can they be avoided?

– What security concerns exist with the application such as data encryption and access rights/keys?

– How will we scale the components of the application?

– What are the key metrics that will be tracked and shown on a dashboard?

Answering these questions is a matter of understanding the operational environment in which your application is going to run, and being able to configure it and customize it in an automated fashion.

Unfortunately, most developers don’t approach a project with this mindset. As we move into the new era of development—especially developing for the cloud—deploying, configuring, and operating a cloud application is much more important and more difficult than developing the function.

Ultimately, focusing on the operational aspects of an application will make developers more effective because they’ll write more secure, robust and resilient code, which is absolutely critical in an always-on (cloud) environment.

Robust cloud computing skills

Developers have to be prolific in cloud. In today’s environment, there’s no way around this, given that cloud is a major enabler for rapid innovation. All cloud developers need to have a basic understanding of compute, storage, and network cloud resources and how they relate to one another.

Part of this relates to the operational mindset I mention above—the need for developers to take a broader view of their applications, taking into account how they will operate the application, as well as the functional aspects. Building cloud-native applications is very different from building a packaged application that runs behind a firewall. To do this effectively, developers must know how to:

– Perform the basic CRUD APIs for compute, storage, and network

– Scale an application within a cloud environment

– Support a hybrid application that spans multiple (on- and off-premises) clouds

– Enable logging and monitoring of your application for problem detection and resolution

– Take advantage of the efficiencies that cloud offers such as fail-over, replication, security services, as well as advanced services such as cognitive and analytics services

Acquiring basic cloud education is not difficult. Almost all cloud providers make it very easy to learn at little to no cost. There’s no excuse for a developer not to invest a little time to educate themselves with the cloud basics. Still, developers should strive toward mastery of cloud.

Cloud providers are constantly evolving the services they provide, including new compute models such as Docker containers. They should eventually understand how to leverage cloud for developing resilient, high-availability cloud-native applications. There are so many possibilities for developers to doing more advanced work in the cloud, which they’ll eventually need to truly innovate and grab market opportunities with solutions that can be developed quickly and scale as demands increase.

The bottom line: Take the time to understand basic cloud capabilities if you plan to build cloud-native applications.

Adopt DevOps practices

In all cases, bar none, cloud developers must adopt DevOps practices.

Let’s say, for example, you’re developing cloud-native applications. You will want to have fully automated deployment and configuration of your cloud resources and applications deployed to cloud. This is necessary for operating your application within a cloud environment with repeatable and reliable processes.

Very early in your project you want to setup a continuous delivery pipeline to automate the delivery of changes. I would argue that from day one you would have a continuous delivery pipeline in place to ensure that every change is deployed and tested in the same manner. The only way to effectively automate the delivery of changes to your application running in the cloud—whether public, private or hybrid—is by following strict DevOps processes.

Remember, the expectation is that there’s no disruption in service. And beyond that, if something’s not working, users want updates to it immediately. You have to be able to accomplish that with no disruption.

It’s also important to apply lean startup thinking when developing cloud applications. Identify the hypotheses that you want to test in the market and develop a minimum viable service to get the necessary feedback to validate the hypotheses (or not). Then you can adjust and deliver content (using the continuous delivery pipeline) in an incremental fashion that you have confidence will meet your customer needs. Remember: It is better to deliver a service right now than get it right.

If you don’t set up proper DevOps practices for continuous delivery of change, you’re never going to be able to keep your customers happy.

Dan Berg is a Distinguished Engineer in Foundation Services & DevOps for IBM. He discusses the evolving role of the developer in the IBM Cloud Dragon Dojo video series.

Distinguished Engineer

More Apps stories

French insurer teams with IBM Services to develop fraud detection solution

Auto insurance fraud costs companies billions of dollars every year. Those losses trickle down to policyholders who absorb some of that risk in policy rate increases. Thélem assurances, a French property and casualty insurer whose motto is “Thélem innovates for you”, has launched an artificial intelligence program, prioritizing a fraud detection use case as its […]

Continue reading

Cloud innovation in real estate: Apleona and IBM rely on new technologies

Digitization does not stop at the proverbial concrete gold — real estate. In fact, the real estate industry is on the move. Companies are realizing the benefits of digital transformation and are capitalizing on the power of new technologies such as cloud, AI and blockchain. Take, for example, Apleona GmbH, one of Europe’s largest real […]

Continue reading

Innovate with Enterprise Design Thinking in the IBM Garage

We’ve all been there. You have an amazing idea that’s really exciting. Maybe it’s a home improvement project, or perhaps it’s a new business idea. You think about all the details required to make it real. But, once you get to the seventh action item, you’re not so excited anymore. Sometimes when we realize the […]

Continue reading