HashiCorp: Past, Present, Future
Today’s post is a guest contribution from Shawn Xu (no relations). Shawn is one of the early engineers at Ascend.io, got his Masters in Human Computer Interaction at Carnegie Mellon, and writes an informative WeChat public account on SaaS called 硅谷成长攻略. He has written numerous fantastic posts on Interconnected, like Low Code No Code Landscape Part I and II, and "What Does Databricks Do?"
For anyone trying to make sense of the name of open source unicorn, HashiCorp, look no further than one of its co-founders name, Mitchell Hashimoto. Mitchell registered Hashicorp, the name, years ago as a placeholder before starting HashiCorp, the company. It is now worth more than $5 billion.
Similar to my previous article, “What does Databricks do", this article will explore and explain the technology and business model that has been powering HashiCorp to become one of the most prominent open source startups to date. We'll start by drawing an example to help anyone -- developer or not -- better understand what this company does and how it’s riding a larger industry wave that is just getting started.
Power of Automation
A pianola, more famously known as a player piano, is a self-playing piano, typically instructed by notes printed on a music roll. The futuristic HBO TV series "Westworld" featured a pianola in its Season 1 opening scene, as a metaphor and foreshadow that certain roles in the show operate by pre-defined, automated scripts.
Whether you like this metaphor in the show or not, I find the invention of the pianola remarkable in two ways:
- It brought the beauty of live piano performance to the masses. Sure it will never reach the grandmaster level of Lang Lang or Evgeny Kissin, but its music is ear-pleasing enough for most people. What's groundbreaking is that the pianola commoditized live piano music.
- Given a script that’s recorded on a piano roll, the music quality is consistent. No hectic page turns. No distraction from the audience.
This consistency via automation is a future that HashiCorp is building today, just in the cloud infrastructure space. The work that used to take highly-skilled infrastructure engineers (the Lang Lang of IT, if you will) can now be recorded, and played back any time in any environment.
For example, the most common task performed on AWS -- provisioning a new EC2 server instance -- takes a whopping 16 steps. Some of these tasks may branch off into sub-tasks, and any task could introduce hard-to-debug errors for beginners.
Imagine having to do that ten times for ten slightly different servers. Even worse, having to provision additional servers on Microsoft Azure or GCP, with a set of vastly different UI and CLI commands to learn and memorize.
Terraform, one of HashiCorp's flagship open source products, automates away many of these mundane and repetitive tasks, by introducing an easy-to-modify template for infrastructure provisioning. The template reduces those steps to a single descriptive document (the "piano roll"), allowing even the most novice engineer to “playback” and provision servers with consistency.
Unlike the pianola, Terraform does not replace infrastructure engineers, but instead makes their work easier and more predictable. Terraform is a great example of a low-code solution that we described in detail in “Low Code No Code Part 1” because it:
- Offloads engineers from code and processes that yield little impact;
- Abstracts away the complexity of directly interacting with different cloud environments, transitioning from “imperative” to “declarative”. (Terraform is cloud-agnostic, you can even use it on-premises.)
The Origin of HashiCorp
Mitchell Hashimoto, who co-founded HashiCorp with Armon Dadgar while they were students at the University of Washington, played a lot of video games growing up. Many of these games involve a range of repetitive tasks. Take Neopets as an example. Players have to frequently feed and play with these digital pets, or otherwise, they would grow ill. Mitchell quickly grew tired of the chores and only wanted to focus on the "fun part": battling and trading. To do so, he started writing bots that can auto-perform the repetitive steps on his behalf, by triggering mouse clicks at the right place and the right time.
Mitchell’s obsession with "bots" and automation continued. He wrote scripts to set up web forums automatically and composed software to sign up classes, as soon as enrollment begins.
A few years later in 2009, while working for a tech consultancy, he had to interact with many clients and a variety of tech stacks. Different clients run services on different operating systems, and oftentimes it’s the same software in slightly different versions. Mitchell, on the other hand, only had a single laptop to develop on locally. It often took him many hours to switch computing contexts, in order to simulate different customer environments. Born out of this repetitive frustration was HashiCorp’s first open source product, Vagrant.
Vagrant takes a configuration file, ".Vagrantfile", and returns a fully setup virtual environment by executing the instructions in the file. These instructions are "Vagrant-flavored" abstractions that are decoupled from the underlying operating system, so you can use it on any operating system.
This design pattern isn't new. In fact, another open source company, Puppet, introduced a similar solution back in 2006. This paradigm is now known as "Infrastructure as Code" (IaC). Vagrant took it further and provided even more integration and abstraction on top.
IaC, in a nutshell, is "f(.Configfile) => infrastructure" , or the process of translating a configuration file into desired infrastructure outcome. It's a simple concept, but HashiCorp took it to the next level with great developer experience and well-executed features.
HashiCorp Stack
HashiCorp makes money mostly from four open source products: Terraform, Vault, Consul, and Nomad. Vagrant, the company's first offering, saw decline in traction as container technology gradually took over virtualized machines (VMs).
These four products each reside in a discrete domain and together form a convincing IaC story. The best way to navigate them is with a simplified real-world example without jargons.
Let's assume we are a team of infrastructure or DevOps engineers working for a new ecommerce startup. Our mission is to set up the right foundation and process for cloud infrastructure, so that other developers can self-serve and write applications on top of it.
Resource Provisioning (Terraform)
Our customer-facing ecommerce website has to run on some cloud servers. It needs to talk to the database to fetch and update orders. Between the server and the database, there has to be some sort of internal network that connects the two.
These components (computing servers, storage, network bandwidths, etc.) are the crucial "resources" in the HashiCorp context, which all other services depend on. Terraform, allows developers to say “what I want to set up” (the declarative way) in a descriptive file, instead of the old approach of “what should I do to set these up” (the imperative way).
In the illustration below, we use one Terraform file to set up three different resources. They are empty for now, but don’t worry, we'll fill them in soon.
Service Orchestration (Nomad)
Now that we have the infrastructure backbone set up with our Terraform, it's time to run the awesome applications our developers have been building, so our e-commerce store can open for business.
Traditionally, this process would involve various manual commands: copy application executable files to servers, set up environment variables, and run these files. Similar to Terraform, Nomad automates these laborious, tedious tasks away by allowing programmers to describe the desired “end state” on a static “.nomad” file.
People commonly find overlap between Terraform and Nomad. In fact, some of Nomad's duties, especially spinning up applications, can be done by Terraform as well. However, there are two key differences:
- Terraform works best with lower-level components, e.g. the resources that applications run on like storage and servers. Nomad mainly deals with applications and services.
- Nomad itself is a service that runs in the environment (same for Consul and Vault as we will discuss later). It’s always present throughout an application’s lifecycle (aka, online). Terraform's mission is finished as soon as the infrastructure resources are set up (aka, offline).
Thus, when our website traffic and orders spike on Black Friday, Nomad is there to intervene and increase resources for different applications to handle that traffic. It can also kill and restart unhealthy applications if they go rogue. (See illustration below)
Consider Nomad as a mediator that’s always there to take care of services -- an orchestration provider. Another commonly used orchestration tool is Kubernetes, which was originally created by Google and very popular in the industry. Compared to Kubernetes, Nomad is easier to set up with a lower learning curve. And it plays well with other HashiCorp products out of the box to form a “stack”.
Service Discovery (Consul)
The concept of "service mesh" has been around for a while now, yet it is still vague, confusing, and ill-defined. Consul provides an easy-to-implement example.
As our ecommerce business grows, we can now afford to hire our own data analytics team and fraud detection team. Each team brings the services they need to do their job, which live on Nomad. Now we have a new problem: the core ecommerce web application needs to talk to the fraud detection service, then later write to a data ingestion service for analytics. The IP addresses and ports of these two services may change. Every time they do, we have to change the hard-coded fields in the web service and redeploy it, which is a pain in the butt and error-prone.
Consider Consul as an always-on post office situated in the middle that documents where each service lives (IP address) to facilitate package delivery to the right address and keeps track of changes. In addition, it helps determine who can send what packages to which service (known as service authorization, because you can’t just send whatever you want to whoever you want), check-in on the receiving service’s liveliness (health check), prevent overloading a recipient by distributing mail to similar services (load balancing), etc. All these are user-defined policies stored in a descriptive file that the Consul service executes. With Consul or a similar “service mesh” solution like Istio, Envoy or Linkerd, you no longer need to keep track of hard-coded information on every single service and redeploy every time there is a change!
Credential Management (Vault)
Information Security (InfoSec) is a topic of major importance today. Without good security practice enforced, a careless developer may hard-code a password to database access in the application and risk a major leak. Vault is a service that centrally manages all credentials in the HashiCorp Stack.
When an application needs a set of credentials to access some resources, it would talk to Vault to acquire it, instead of looking at some local files or variables in the code. Similarly, all credentials should be written to Vault, regardless of during provision or at runtime. It helps guarantee that few developers can easily grab credentials (or secrets) and abuse it (intentionally or not).
In addition, Vault makes it easy to rotate credentials, something a mature development team does every now and then.
Behind HashiCorp's Success
IaC (Infrastructure as Code) is an irreversible industry trend, which has propelled HashiCorp to prominence in recent years.
But just like any success story, HashiCorp’s traction took many years of building, iterating, and its fair share of false starts. Being an open source company did not help either in its early days, when investors frequently questioned its profitability. To make things harder, the DevOps concept was hardly the promising investment category it is now, when HashiCorp started in 2012.
From this excellent interview with Mitchell, we can learn that there were two turning points that pulled HashiCorp out from the stale growth pit:
- Getting the right balance between bundling and unbundling
Before 2015, HashiCorp actually built most of the pieces -- Terraform, Consul, Vagrant, Packer, etc. -- already, but decided to bundle them in a massive offering called "Atlas". One cannot buy or use say Terraform alone. It was a take all or nothing offering. The product messaging was also vague: Atlas was trying to please both individual developers and Fortune 2000 companies, when both audiences have distinct needs and purchasing power.
After a horrible Friday board meeting, Mitchell and Armon decided to pivot: split "Atlas" up into atomic components and focus the company on winning the large enterprises. This move became what HashiCorp is today. While it seemed natural and obvious in hindsight, especially given the company's current success, the move was a bold and risky one back then.
- Docker taking off
Historically, HashiCorp has had a contentious relationship with Docker, with Docker's container technology taking over Vagrant's market share. However, as Docker got much wider adoption and became a unicorn in 2015, it also sparked more hype for DevOps tools and the notion of Infrastructure as Code. In a way, Docker’s popularity created the wave that HashiCorp is riding on right now! There is no permanent friend or foe in the complex and fast-evolving space of infrastructure technology.
There are two other factors that I believe catalyzed HashiCorp to its $5 Billion valuation:
- Growing infrastructure with no infrastructure talent:
Back in the days, when businesses just needed a dozen machines in a server room, things were much easier to control. In 2021, it is routine for companies to have thousands of machines, either on its own premises or in the cloud.
The infrastructure technology domain has evolved too quickly for engineering talents and training to meet the demand organically. Low-code tools like the ones HashiCorp provides along with extensive tutorials and documentation can essentially turn any developer into an infrastructure engineer. Over the years, its products have maturity in depth and complexity to lend a helping hand to the most hardcore infrastructure engineers.
- “Shoganai” and pragmatism
Mitchell’s favorite slang is "Shoganai" (しょうがない, a Japanese saying that means “it cannot be helped”, or “it has to be done”). This mindset bears similarity to Zhang Yiming’s last speech on “ordinary mind” that we published a few weeks ago. At the core, both founders practice the “the power of now”, not the past nor the future.
HashiCorp’s DNA is encoded with pragmatism: container is taking over virtualization? Sure, let's work with containers. Different cloud vendors have drastically different APIs and backends? Bite the bullet and build better abstractions, so customers won't have to. Many large enterprises are still on-prem? Then our software must work with on-prem, so they are not left behind.
As we mentioned in the beginning, HashiCorp is a very low-profile company. Many engineers could be using its open source products without knowing who’s supporting their open source development. We can find similar traits in some of the other open source success stories, like Mongo and Elastic. As a developer myself, I have to admit -- polishing a product that pleases developers is extremely hard. Developers are an opinionated crowd, and building for them requires immense patience and humility.
What’s Next for HashiCorp
In the short-term, HashiCorp’s growth will likely continue, as the wave of cloud computing and Infrastructure-as-Code lifts all boats. With another DevOps darling, GitLab, releasing its S1 filing last week, this public listing, if successful, may accelerate HashiCorp’s own IPO soon!
But becoming a public company is just one of many milestones in a company’s journey to become an enduring brand and institution. Just in the small realm of public open source companies alone, we’ve seen both successes and failures. Red Hat, the OG of open source companies, adapted to the fast-evolving landscape of cloud infrastructure with OpenShift, which resulted in its $34 Billion acquisition by IBM -- still the largest deal to date for an infrastructure technology company. Cloudera (and Hortonworks), on the other hand, could not survive and was taken private by KKR and other private equity firms.
Will HashiCorp be more Red Hat or Cloudera or something entirely different? We don't know, but we do know that its pragmatism, persistence, and "Shoganai" spirit will serve its future well.
The pianola was popular during the late 19th century and early 20th century, but it was replaced by phonographs, then recorders, and then MIDIs. While the original insight of automation-to-commoditization of music continues to evolve, we only see pianola in museums and TV shows now. Similarly, Infrastructure-as-Code may be popular now, but the way cloud infrastructure gets used and provisioned by engineers will no doubt change 10 or 15 years from today. In fact, that change is already happening with new low-code and declarative products, pushing the boundary of simplicity and powering new paradigms, like the so-called “serverless” and Lambda architecture.
Can HashiCorp adapt? With the success of Nomad, which is working its way up the stack to automate workflows closer to the application player, it looks like it can. With Mitchell recently deciding to step down from his Board and other managerial duty to become an individual contributor again, it looks like the DNA of his (half) namesake company will persist for a long time.
Pragmatism may be boring, but it’s enduring.
If you like what you've read, please SUBSCRIBE to the Interconnected email list. To read all previous posts, please check out the Archive section. New content will be delivered to your inbox once a week. Follow and interact with me on: Twitter, LinkedIn, Clubhouse (@kevinsxu).
HashiCorp的过去、现在与未来
今天的文章是徐晟洋(和我没有亲戚关系,纯属凑巧哈)写的《互联》的“嘉宾专栏”。他是创业公司Ascend.io的早期工程师之一,在卡内基梅隆大学获得了人机交互的硕士学位,并写一个与SaaS行业有关的干货很足的微信公众号《硅谷成长攻略》。他在《互联》上出版的启发文章包括:《低代码、无代码》系列 Part I,II,以及《Databricks是做什么的?》
HashiCorp的过去、现在与未来
很少有人知道“HashiCorp”这个名字的涵义,即使这家公司已经达到了50亿美元的估值。事实上,这只是创始人Mitchell Hashimoto(留意到这个姓了吗?)在创立公司几年前随手注册的。在这之后的十几年,他再也没费工夫给公司换个名字。
这篇文章的目的与上一篇(Databricks是做什么的)很像,试图解密这家极其低调的开源独角兽。我们将从十分日常的例子出发,讲述公司的产品与愿景,然后一探其成功背后的秘诀。
自动化的魅力
自动钢琴,是出现在19世纪末的“黑科技”。“自动”的意思是,通过一卷纸带状的打孔乐谱,钢琴可以自己完成乐曲的演奏。在风靡全球的《西部世界》第一季片头,一架自动钢琴给观众留下了很深的印象——也象征着剧中某一些角色的“日常生活”,是依照剧本、事先编好的“演出”。
我觉得自动钢琴是一个很有意义的发明,有两个原因:
- 它让更为广泛的大众得以欣赏“现场”的钢琴音乐。当然,这与郎朗或者基辛的现场差得远,但仍然是十分悦耳的演奏。自动钢琴是可以花钱购买的工业商品,而培养一名技艺高超的钢琴家,则需要少见的天赋和刻苦的训练。
- 给定一卷打孔乐谱,自动钢琴能够稳定、优秀地演奏。不会有令人尴尬的翻页失误,不会受观众的噪音干扰。
我们可以把HashiCorp想象成一个类似的自动化工具,只不过是在软件开发的基础架构领域。一些曾经需要资深的运维、架构工程师才能完成的工作,现在可以被记录在一张“谱子”上,按需回放,就可以稳定地得到想要的架构成果。
最简单的例子,莫过于在亚马逊云服务很常见的任务:部署一台新的EC2云服务器。按照官方的文档,这个任务需要16个步骤之多,其中,某些步骤可能会需要完成更多的子步骤。更糟糕的是,其中每一步都有可能产生令新手十分头疼的异常(亚马逊的错误提示并不容易看懂)。
一台已经如此费力,如果需要再部署十台配置各不相同的服务器呢?又或者,如果想同时在亚马逊云、微软云、谷歌云分别部署一些服务器呢?每一个云供应商的流程各不相同,需要从头细细研习各自的文档和教程才行。
HashiCorp的旗舰产品之一,Terraform,将这些冗长、复杂的人工步骤简化到一个静态、易懂的文档(“谱子”)。将需要部署的云部件放在文档里,剩下的交给Terraform就行,无论是哪个云提供商,甚至是自建的数据中心,都能够将“架构部署”这件事给自动化了。
与自动钢琴不同的是,Terraform并不会取代基础架构工程师(很多地方也称为运维工程师),而是让他们的工作变得更轻松、更少失误。依照之前一篇文章(低代码、无代码上:场景与版图)的定义,Terraform是一个极佳的低代码产品:
- 解放了工程师的生产力,让他们专注于更有价值的工程环节。
- 将复杂的底层系统交互给抽象化,从“命令式”交互变成“声明式”编程。
HashiCorp的创始故事
HashiCorp的两位创始人,Mitchell Hashimoto与Armon Dadgar是华盛顿大学的同学。Mitchell从小就是个电子游戏迷。小的时候他就发现,游戏里总是有大量的重复环节——例如他最常玩的Neopets。这款游戏就像我们小时候经典的“电子宠物”,玩家们需要“喂养”他们、陪他们玩耍,否则他们就会生病、战斗力下降。对Mitchell来说,喂养和玩耍并不是有趣的环节,他只想体验刺激的部分:宠物对战、交换。于是,这个小男孩写了一些脚本,可以通过控制他的鼠标,来自动完成那些重复的操作。
这种对于自动化的痴迷,一直伴随着Mitchell长大:他曾经写脚本自动搭建论坛,上大学时写程序来抢课,这样就不用早起了。
几年之后,到了2009年,Mitchell开始就职于一家技术咨询公司。他需要对接许多的客户,而每个客户的编程环境各不相同:不同的操作系统,不同的软件,乃至不同版本的相同的软件。而Mitchell只有一台笔记本作为自己的开发环境,这带来了很大烦恼:为了编写软件或“捉虫”,他得频繁地切换、甚至重装系统,来模拟客户软件的运行环境。于是,HashiCorp的第一个产品,Vagrant,就诞生了。
与Terraform有些类似,只要提供一个描述性的文件".Vagrantfile",Vagrant就会按照里面的指示运行,并搭好一个立即可用的虚拟环境。这些抽象度高、简单方便的指示是Vagrant独创的,使得无论什么操作系统,都能用相似的一套语言描述。
在基础架构领域,这种“声明式”的设计模式并不是Terraform首创——事实上,另一家开源企业Puppet早在2006年就提出了“代码定义的基础架构”(Infrastructure as Code, IaC)理念。IaC用最简单的方式表达,就是"f(配置文件) ⇒ 架构"。换句话说,将一个静态的配置文件翻译、转化为底层的命令,最后得到预期中的架构。这个概念并不难懂,但HashiCorp通过更多系统的整合、好用的附加功能,将其发扬光大。
HashiCorp的产品线
为HashiCorp带来盈利的有四个主要产品:Terraform,Vault,Consul和Nomad。前文提到的Vagrant,由于容器技术逐渐替代虚拟化,已不复以往的流行。
这四个产品的每一个,都服务一个单独的领域,结合在一起组成了HashiCorp的“IaC”体系。让我们通过一个简单易懂的案例,来一探其究竟。
假设我们现在就职于一家电子商务初创公司,职位是运维工程师。我们的第一个任务是制定可靠的基础架构方案、部署流程,使得其他软件工程师(前端、后端)可以自助式地搭建服务。
用Terraform完成资源部署
我们的电商网站程序会跑在云端的某个服务器上。它需要连接数据库,来获取订单、更新订单。服务器和数据库之间,需要内部的网络设施来牵线。
这些组件(计算、储存、网络设备)就是HashiCorp语境中的“资源”,也是任何上层服务需要使用的。如前文所述,Terraform的魔力就在于,程序员只要在一个描述性的文件里写上“我想要哪些资源”就行(即声明式),而非传统的方式——“我要系统做这些事情,来配置这些资源”(命令式)。
在下面的示意图里,我们用同一个Terraform文件部署了三种不同资源。目前他们还未承载任何服务,不急,接下来我们就会让他们不再闲置。
用Nomad调度应用程序
既然有了应用们所需的“土壤”,下一步便是部署他们,我们就可以开业大吉了。
这个部署的过程,如果用传统的方式,需要手动执行许多命令:将应用程序的可执行部分拷贝到服务器,设置环境变量,最终开张接受请求。如同Terraform,Nomad用一个静态文件将这些命令取而代之,程序员们只需要在里面描述“应用程序理想的运行状态”即可。
Terraform和Nomad之间存在相似的地方,有时会让人混淆。其实,Nomad的某些职责,比如部署应用程序,也可以直接用Terraform完成。然而,两个产品之间有着很大区别:
- Terraform与底层资源打交道(计算、储存、网络等等),这些资源是上层应用赖以生存的;而Nomad则主要负责维护上层应用。
- Nomad是一个长时间寄宿在环境中的服务(后文的Consul和Vault也类似)。在一个应用的生存周期的各个阶段,Nomad都会发出指令,与之交互(即“在线服务”)。而Terraform则不同,只要资源部署完成,其职责就结束了,不再参与后续的维护(即“离线服务”)。
因此,当我们的网站访问量在春节前爆棚,服务器资源吃紧,Nomad会及时介入,为其提供额外的计算、储存或带宽。而当Nomad发现某些应用或服务不再响应了,就会干掉他们并重启。(如下图所示)
可以把Nomad想象成一个总是在线、关照各个应用的“调度者”——也即业界所称的“集群管理”。你很可能听说过另一个类似的工具,Kubernetes。与这位老前辈相比,Nomad轻量很多,学习曲线平滑,也自带与其他HashiCorp的服务集成。
用Consul实现服务发现
”服务网格“这个概念已存在了挺久,但很多人都觉得它的定义十分模糊。Consul则很好地体现了”服务网格“的理念,并且使得实现变得很容易。
回到前文的例子,当我们的电商业务逐渐兴隆,公司决定招收一个新的数据分析团队,以及一个反欺诈团队(防止信用卡欺诈)。这两个团队搭建的服务也会通过Nomad调度,然而问题产生了:我们的网页服务器需要与这两个新服务交互(例如判断一个交易是否存在诈骗可能、将网络日志导入数据分析平台等),但是它们在内网中的IP地址、端口会经常变化。一旦改变,我们就得更改网页服务器里注册的变量,并重新部署。
Consul很好地解决了这个问题。我们可以把它想象成一个“邮局”,记录了每个服务所在的地址,并且配合送达信件。除此之外,Consul也可以监督发信者是否有相应的发送权限(身份验证)、检测收信方是否状态良好(健康检查)、在收信人处理不过来的时候转发到相似的人手中(负载均衡)。所有这些”政策“,都写在一个描述性的文件里,通过Consul服务(与Nomad一样也是”在线“的)实施。
用Vault管理密钥
近来层出不穷的大型数据泄露,使得不少公司对信息安全极为重视。可以想象,如果没有一个好的密钥管理流程,粗心的程序员也许会把数据库密码写入代码,引发安全事故。HashiCorp的Vault,是一个中心化管理所有密钥的服务。在Vault的模式下,如果一个应用需要获取某个密钥,它会首先向Vault索取,而不是从某个文件、代码中读取。同样,任何的密钥,无论在部署前,还是程序运行时,都应被写入到Vault中。这也使得公司绝大部分的程序员没有权限获得密钥、加以滥用。
除此之外,成熟的工程团队每隔一段时间就会进行密钥的轮换,而Vault的中心化设计无疑让这变得容易了许多。
HashiCorp成功的背后
时至今日,“代码定义的基础架构”(IaC)的热潮已经势不可挡,而HashiCorp的产品,尤其是Terraform和Consul,几乎成为了业界标准。
对HashiCorp来说,获得如此成绩经历了一场漫长的旅程。公司早期的发展十分艰难:当时,投资人普遍对开源软件的盈利能力存疑;雪上加霜的是,“开发者工具”这个赛道从未开花结果,完全不被看好。
从这份对创始人Mitchell精彩的采访中,我们可以一探这家独角兽的两个转折点:
- 及时的产品转型
2015年之前,HashiCorp其实已经建立了现在的多个产品(Terraform,Consul,Vagrant,Packer等),但是却将所有的产品打包成全家桶,以“Atlas套件”的名义出售。客户无法选择其中的某个组件(比如Terraform),而是必须整个购买。营销的策略也很模糊:Atlas既想卖给个人开发者,也想卖给世界五百强企业。可以想见,这两者之间无论是需求还是支付意愿上,都存在天壤之别。
在15年某次充满沉默的董事会议后,Mitchell和另一位创始人Adam Dadgar决定来一次重启:将臃肿的Atlas分拆成一个个独立产品,并专攻企业客户。
这也成就了HashiCorp的今天。也许转变看起来理所当然,然而在六年前,这个决定充满着勇气和冒险。
- Docker的成功
HashiCorp与Docker的关系不能算太好,尤其在后者的容器技术迅速侵蚀Vagrant产品市场的情况下。然而,同样在15年,Docker飞速地成为独角兽,手握大量企业订单和云服务战略合作,这一下子捧火了两片领域:开发者工具和IaC——这正是HashiCorp耕耘多年的地盘。
除了以上两个转折,HashiCorp的成功还离不开两方面因素:
- 基础架构与日俱增的复杂度,和运维工程师的稀缺
当公司只需维护机房里的十几台服务器时,工作是十分可控的。到了如今,一个公司可能有上百、上千台服务器,同时跑在数据中心里,或者在“云上“的某个地方。
基础架构和运维的发展速度,大大超过了人才更新迭代的速度。像HashiCorp和Docker这样上手简单、文档齐全的低代码工具,几乎可以让任何软件工程师切换到”运维模式“,它们也在几年的发展后有了足够的深度,得以成为哪怕是硬核运维工程师的得力助手。
- “しょうがない” (Shoganai)
当采访中被问及HashiCorp的文化是怎样的,这是Mitchell给出的回答。从日语翻译过来的意思大约是”没办法,只能自己做了“。这让我想起了张一鸣在今年3月最后一次作为CEO、题为”平常心“的演讲。刨根究底,两位创始人在意的都是”当下“。不念过去,不畏将来。
HashiCorp的基因里充满着实用主义的色彩:容器化将要取代虚拟化?没问题,我们来为容器化开发产品;云平台的底层服务、API很不一样?しょうがない,我们来做总好过用户自己折腾;很多企业跑在本地的数据中心上?没办法,我们的软件必须兼容本地运行,不能放弃这些更为传统的公司。
如同开头所述,HashiCorp是一家十分低调的公司。很多工程师在用着Terraform、Consul等产品的同时,并不知道背后的主要维护者是谁。我们可以在一些其他的成功开源公司(例如Mongo、Elastic)上找到类似的特质。自己作为一名开发者,我不得不承认,为开发者打造产品不是件容易事,需要十足的耐心和谦虚——这几乎是意见和想法最多的一群人了。
HashiCorp的未来
短期来看,伴随着云计算、IaC的风口,HashiCorp会继续保持增长。近日,另一个开发者工具赛道的明星GitLab提交了上市申请。如果GitLab的上市一帆风顺,HashiCorp的挂牌之日或许也离得不远了。
然而,上市只是一个公司漫长旅程中的一个里程碑。打造一个优质、长久的品牌,需要持之以恒的积累和自我突破。在开源软件这个相对新的企业类别里,我们也见证过公司上市之后的成功与挫败。Red Hat可以算是开源社区的一线扛把子,随着云基础架构的不断变化,也不停地更新迭代(比如OpenShift),最终以340亿美元被卖给了IBM——时至今日仍然是基础架构领域最大的一笔并购交易。Cloudera(以及Hortonworks),却没能够在大数据框架的转型中自我升级,最终被KKR等资本私有化。
自动钢琴在19世纪末期盛极一时,然而很快就被留声机、磁带、乃至电子音乐格式(MIDI)取代。尽管音乐的大众化、商品化一直向前走着,自动钢琴已经被束之高阁,只能在博物馆、连续剧里窥见其昔日荣光。同样,IaC也许是当前的风口,但是10年、15年后,谁又能保证不会有新的思想、技术取代IaC呢?事实上,新一批的低代码、声明式产品已经到来,甚至触碰到了基础架构这整个领域的边界,例如”无服务器“ (serverless)、”Lambda“架构。
HashiCorp能够继续拥抱变化、自我进化吗?Nomad,这个抽象层级更高、无限接近应用层的应用,已经开始获得开发者的认可——看起来HashiCorp是有这个潜力的。随着创始人Mitchell决定放下公司管理的事务、离开董事会,重新成为HashiCorp的一名工程师,我们可以感受到这家以他名字(的一半)命名的公司,依然保持着初心。
道远知骥,世伪知贤。实用主义也许不那么光鲜亮丽,却是”建百年业“最好的土壤。
如果您喜欢所读的内容,请用email订阅加入“互联”。要想读以前的文章,请查阅《互联档案》。每周一篇新文章送达您的邮箱。请在Twitter、LinkedIn、Clubhouse(@kevinsxu)上给个follow,和我交流互动!