Presentation

A Terraform Cloud UX Journey: Building Workflows

At HashiCorp, we want to make Terraform Cloud the single source of truth for your infrastructure. To do that, we need the workflow experience and design to be exceptional. Hear from our Engineering, Product and Design (EPD) team about how they have built and polished the UX for Terraform Cloud.

Speakers: Jon Schulman, Roary Tubbs

Transcript

Jon Schulman:

Hello everybody and welcome to HashiConf Europe. Thanks for joining us. The session that we're about to do today is a Terraform Cloud UX journey: Building workflows, not technologies. It's one of the HashiCorp values. My name is Jon Schulman. I'm a senior product manager here for Terraform Cloud at HashiCorp, and I'm joined by my partner, Roary.

Roary Tubbs:

Hi, my name is Roary Tubbs. I am a product designer working on Terraform Cloud. Super excited to be with you all today, and welcome to HashiConf EU.

Jon Schulman:

A real quick primer to get everybody started, what is Terraform Cloud? Many of you are probably already familiar with what Terraform itself is. It's an open source binary. We have an open core model here at HashiCorp, and that is a binary that allows you to author and manage your infrastructure as code. You can take advantage of all the great things — things like version control and collaborative development bring you and manage infrastructure. The things that run your applications, run your business, and power your entire business as code.

Terraform Cloud is an infrastructure as code experience. That's our platform version of Terraform where we deliver Terraform to you as a service. It's a way that allows you to interact with your teammates, take advantage of all the API functionality and the cool things that platforms enable that an open source binary doesn't always.

Terraform by the Numbers

A little bit about what Terraform brings to the marketplace — wouldn't be a HashiConf talk without some numbers. That Terraform infrastructure as code binary — the open source tool —  is by far the most popular in the marketplace, with a hundred million downloads and growing every day. But the Terraform Cloud Platform has more than 120,000 users, adding 5,000 or so every month. By the time you see this, there could be 130 - 140 - 150,000 users. It's growing very rapidly.

We have those users doing over 15,000 provisioning runs per day, and those are the infrastructure management operations that Terraform does. Things like creating or destroying or changing a piece of infrastructure — each of those counts as a run and we have 15,000 of those or more per day. And, of course, Terraform would be nothing without our provider and community module ecosystem. The providers, of course, being the little bits of code that transform the Terraform framework into actions on your different cloud providers: AWS, Microsoft Azure, VMware, whatever the case may be.

We have over a thousand of those providers in our ecosystem and more than 5,000 modules. Modules being those little chunks of code that are reusable and drive the composable, reusable story of Terraform forward. And thank you to everybody in our ecosystem who's developed modules or providers or has contributed code to any of those or to Terraform itself.

Roary Tubbs:

I'm going to talk a little bit about how we do software development at HashiCorp. We believe software development here is a team sport. It's at the core of our values of who we are as a company. And it covers all the things from the marketing websites, from this event you're taking place in right now, our UIs, our documentation, the CLIs, Learn platforms, even the APIs. 

Engineering, Product and Design (EPD)

We are solving problems with creative solutions, and we do that as an EPD team. You might be wondering “what is an EPD team” — also commonly known as a three-legged stool. It's how engineering, product, and design work together at HashiCorp. We try to avoid things like handoffs, or siloed teams. These EPD teams are tightly connected from the initial vision to the launch of the feature, building towards shared outcomes that solve the needs of our customers. 

But it doesn't end there. We listen to your feedback, we iterate as much as possible and we can't do this without you. At the end of this talk, Jon's going to present you a couple of signup links you can go to, where you can sign up for our user research across HashiCorp — across all ourproducts. Or you can also sign up for the betas that we have coming up in the future for Terraform Cloud.

You might also be wondering: EPD — where the heck are the engineering folks? While there are a lot of different teams that were part of this feature, these are the folks that made it happen.  A huge thank you and a lot of love to our engineering partners. 

What Infrastructure Do I Manage?

Now let's talk a little bit about the problem we're trying to solve. We have a fairly ambitious goal to make Terraform Cloud the single source of truth for your infrastructure. As we reimagine how users would interact with their Terraform Cloud managed infrastructure, the first step is to transform how they understand what they're managing. Which led us to the question, “Do customers understand what infrastructure is being managed by Terraform Cloud?” 

As we started down the journey to understand how Terraform Cloud can be the single source of truth for infrastructure — and answering, “What infrastructure do I manage?” — we believe our users had three main mental models and we categorize them around: 

  1. What do I have today? 

  2. What did I have yesterday? 

  3. What will I have tomorrow? 

This led us to focus on what do I have today? Because if we can't answer that question, the other two don't matter.

Focusing on User Research, Identifying Key Workflows

We had some initial assumptions on how to solve this problem. But we needed to validate those assumptions with our customers. We did that through utilizing several different user research methodologies — including talking to customers one-on-one, exploratory interviews, several different iterations of usability studies, A/B testing, and even a few beta programs with more to come.

We do this type of research because we don't want to make things up. We want to build products that not only meet the needs of our users, but are enjoyable to use. And we value our customer's voice. 

Through that user research, we dug into how users do this today. We learned that finding this information that tells the full story of “What do I have today?” was either not available or scattered across the product and external workflows. Which in itself, of course, isn't bad. We know our users will have existing tools and workflows that they're going to integrate with Terraform Cloud, but we knew we could make it better.

Like I mentioned, we did a lot of research and are still doing more. But I wanted to share a quote from the initial research phase when we were validating our assumptions. "Why would I ever go to Terraform Cloud? The current UI does not add value. It's just the output." 

That's tough. That's harsh, but we appreciate and need that critical feedback. This type of feedback pushes us as a company — as individuals — and it helps us make better products. And that is what it's all about, making a delightful product for you, our users.

So coming out of the early research phase, we synthesize our findings into three main themes: 

  1. What's being managed? What are the things? We found that users struggle to understand the infrastructure footprint of what they were managing with a limited sense of how it's changing. 

  2. Discoverability. HHow do I find those things? Users lacked a sense of what actions could be taken. 

  3. Organization. Where did I put those things? Organizations that had large amounts of workspaces found it extremely difficult to find what they needed when they needed it.

This early feedback allowed us to iterate quickly on things we got wrong and a few things that we got somewhat right. 

I wanted to call out a couple more quotes. The first two stacked quotes on the left-hand side are from the same user that we talked to at the beginning of the usability study, and these were the quotes coming out of that study: 

"This is giving me so much more information that I can help someone. You've given people a reason to use the UI, Terraform Cloud." 

Doing a lot of iterations, being closely connected with our customers, working closely with engineering and product and design, we were able to iterate and provide value to our customers. Sharing iterations and directions we felt we heard from those customers.

Jon Schulman:

O ne of my favorite pieces of feedback we got is "Where did the Readme come from?" And we'll talk about that in a moment. 

"But is that from the repo? That's freaking cool. I use those all the time." This was a person who decided to take one of the improvements that we made and use it to drive business models forward for his own company — changing the way that they interact, not only with our tool, but with other tools in their development chain as well. That was exciting for us.

We want to do a little bit of a demo for you. We've done a bunch of iterations, we've made some changes, we've done a lot of work on the back of the research that we conducted. And we wanted try to answer this question of “What do I have today?” With that, we'll switch into a little bit of a product demo.

Terraform Cloud Demo

This is the workspace view that we have today. And this is how you visualize your infrastructure within Terraform Cloud. If we click into one of these workspaces, you can see a lot of the improvements that we made as a result of this research. 

We have this new workspace overview page.  It contains a whole bunch of new information about things like:

  • Your latest run

  • The changes that were made during that most recent run

  • The configuration of the repository and the workspaces that are connected to the repository

  • Some metrics that give you a high level overview of how the workspace is operating and how it continues to run

  • Configuration information about run triggers and other contributors

  • The Readme that's being sourced from the Git repository in the background

And that's what that user was talking about a moment ago.

This is a more holistic way to visualize things and we'll start a new plan. We'll say, queue a new run. We'll give this a chance to run, and that's going to open up our run. And while this is kicking off its plan, we'll switch over into the previous experience. 

This is what our users were seeing before that new workspace overview page was introduced. You can see here that it's just a list of runs. The context relies on the user to provide a meaningful note and the settings or the general information about how the workspace is configured — it's buried here in the settings.You can still find all of this data, but it's scattered around. It's not always super easy to locate. We wanted to make sure that that was more visible. Now our plan is finished. Our cost estimation and policy checks are completed, and we're going to come to the next phase, which is the apply. This is a new addition to the Terraform UI as well, where we've introduced a structured apply UI. 

This is much more than what we used to have, which was scrolling command-line text. This gives you real insight into individual resources as they're provisioning. You can see them update in real time as each individual resource starts to come online, is created. You have context about the IDs and things as they're made. And we have this progress bar across the top that shows you exactly what operations are being conducted and how the overall flow is running. You can also see we have a link that gives you the opportunity to provide feedback on the individual feature — and that's something we like to include.

If you expand the nodes, you can see that there are details about them. In this case, this is an AWS instance. This remote exec script is running. That's what transforms this VM into a web server. And all the code gets loaded into it and all that cool stuff happens. Once this apply finishes, we'll see that progress bar start to complete. Everything's all done, ready to go. 

And we give it one more second, we'll scroll down, and we can see that not only do we have the resources, but also the outputs. The outputs, of course, being things that you programmed into your config. We can filter this view to find specific resources. In this case, I can locate that instance again by typing in “instance” or any term that you might like to search by.

If we pop back over to the Overview tab, you can see all of those resources are enumerated here as well — and this is also filterable. We can search for, in this case AMI, and find that same resource. There it is. Or a VPC as the case may be Whatever you want to search for, that filtering is consistent across both.

Those outputs are here as well too. If we take the output from the address, say, which is the URL for our new web server, and we open up a new tab and we go to that, we can see our super cool demo application. I mean applications are applications. But that's pretty much the details, the workspace overview. This is the new page we introduced to make more information more readily available to you as a consumer.

Coming Soon! 

So, now you've seen what it is that we've already introduced — and by the way, all of those things you saw are available for you in Terraform Cloud today — here's a little bit of a sneak peek at what's coming soon, and we have a lot of cool ideas on how we can continue to refine that experience for you.

For example, a whole new workspace grid replacing that landing page that lets you see what the different pieces of infrastructure you're managing today are. We want to make that equally accessible with all the same more meaningful, contextual, impactful information provided to you right up front. We want to give you the ability to do things like tagging, filtering, grouping, searching, favoriting — because it's all about what's showing you what's the most useful to you in the moment. It doesn't need to just be a spreadsheet. We want to make this more valuable to you so you can find the things you care the most about, make your workflows easier, make your workday shorter and get you onto the next things. The more important things like running your business.

Join the Conversation

We talked a lot about how we interact with our customers, how we gather this information, and how we conduct the research to find out what we should do next. We've got a couple of great ways for you to do that. 

First of all, you can help us overall with HashiCorp's tools by signing up at hashicorp.com/user-research. This is a more general purpose user research study, where you can participate on multiple different products at multiple different times. You'll be signaling that you're interested in helping us improve our products in general.

You can also join Roary and I for future beta tests around this particular Terraform Cloud project at hashi.co/tfc-beta. That'll take you to a survey that'll collect some very basic information about you and your needs and ask you a couple of questions. We would love to include you in beta testing and get your feedback on the next phases of this project and others to come.

And with that, a big thank you and we hope that you enjoyed the talk. Thank you for joining us at HashiConf Europe and thank you for using HashiCorp's tools.

More resources like this one