我被 Atlassian 裁员了
摘要
一位前 Atlassian 工程师详细回顾了他八年的工作历程,在被裁员前,他参与构建了多个技术系统,包括一个 Open Service Broker、一个基于 Envoy 的控制平面 Sovereign,以及 AWS 上的大规模代理基础设施。
<p><a href="https://lobste.rs/s/jyuccr/i_was_laid_off_by_atlassian">评论</a></p>
查看缓存全文
缓存时间: 2026/06/05 02:18
**TL;DR:** 一位前 Atlassian 工程师在被裁员前回顾了八年的工作历程,详细介绍了他所构建的技术系统——包括 Open Service Broker、一个名为 Sovereign 的 Envoy 控制平面,以及跨多个 AWS 区域的大规模代理基础设施。
## Atlassian 的面试流程
八年前的面试流程与今天有很大不同。当时包括一个 HackerRank 编程测试(满分通过),随后是两轮技术面试:
- **第一轮:** 两位面试官递来一份 Cloudflare 关于自定义域名的白皮书,离开房间约 10 分钟后返回,就白皮书内容进行提问。此外还涉及微服务、架构和容器方面的问题。
- **第二轮:** 基于一次真实的 Atlassian 故障进行排障演练,该故障曾导致拒绝服务,另外还有一道关于基于延迟的 DNS 路由的问题。当时给出的答案——Route 53 根据实际客户端延迟进行三角定位——并不完全准确;实际上它使用地理位置数据库,根据估算延迟来路由 DNS 响应。
- **价值观面试:** 候选人请面试官描述 12 个月后成功的样子。他们描述了一个用于自助式负载均衡器配置的内部应用——类似于 AWS ALB,但面向 Atlassian 内部开发者。一句自信的"我可以用 Python 构建它"就足以拿到 offer。
---
## 入职头几周:构建 Open Service Broker
加入 Atlassian 常被描述为"从消防水管喝水"——头几周需要吸收海量信息。第一个自我指派的任务,就是构建面试中承诺过的那个东西。
### 什么是 Open Service Broker?
**Open Service Broker(OSB)** 是一个具有标准化 API 的 Web 应用,作为平台上资源配置的中间件层。OSB 规范发布在 GitHub 上,定义了以下端点:
- `/catalog` — 列出所有可用服务和计划及其元数据
- 配置端点 — `PUT`、`PATCH`、`DELETE`,用于创建、更新和删除资源
在 Atlassian 的场景下,开发者将配置文件提交到版本控制系统,由构建服务器获取后部署服务。OSB 将底层基础设施(例如兼容 MySQL 的数据库)从内部开发者那里抽象出来。
### 实现方式
该 Broker 最初使用 **Connexion** 构建——这是一个 Python 库,可以读取 OpenAPI 文档并自动生成路由处理器。后来迁移到纯 **Flask**,再到 **FastAPI**(目前仍在使用)。
**最终架构:**
1. 客户端向 FastAPI 发送配置请求
2. Web 服务器将任务写入 **SQS 队列**(异步处理)
3. **Worker** 获取任务并执行——创建 DNS 记录、CloudFront 分发、调用外部 API 等
4. Worker 将结果写入 **DynamoDB**
5. 客户端轮询 Web 服务器:"完成了吗?"服务器查询数据库后做出响应
---
## 第二个重大项目:Envoy 控制平面("Sovereign")
一位架构师提议用开源云原生替代方案——**Envoy Proxy**——替换 Atlassian 的商业企业级负载均衡器。Envoy 类似于 Nginx,但更现代,并通过 API 支持动态配置——这意味着无需重启代理即可在运行时重新加载配置。
目标:部署大量持续运行的代理,随着服务变化自动动态重新配置,无需开发者手动申请负载均衡器配置。
### Sovereign 的作用
Sovereign 是 **Envoy 管理服务器**(控制平面)。它已开源并发布在 Bitbucket 上。
Sovereign 运行一个 **FastAPI 应用**,接受两类输入:
- **模板** — 对应 Envoy 资源类型:cluster、route、listener 等
- **上下文** — 注入模板的动态数据
启动时,管理服务器读取模板和上下文,然后通过 API 对外暴露。Envoy 代理轮询该 API。当上下文发生变化时,Sovereign 重新渲染模板,并将更新后的配置推送给代理。
**上下文来源包括:**
- 配置数据库(由 OSB Worker 写入)
- 包含随时间变化数据的 S3 存储桶
### 端到端配置流程
1. 客户端向 Broker 提交配置请求
2. Worker 执行任务,将新数据写入数据库
3. Sovereign 轮询更新后的数据并重新渲染 Envoy 配置
4. 新配置推送至代理
5. 代理开始按新配置路由流量
---
## 基础设施:大规模配置代理
有了 Broker 和控制平面之后,下一个问题是:代理本身如何配置?它们是什么,运行在哪里?
### 基于 CloudFormation 的配置
代理使用 **AWS CloudFormation** 模板进行配置——这是一种基础设施即代码方式,无需手动操作控制台即可创建 AWS 资源。
每次部署创建的资源包括:
- VPC 和子网
- 互联网网关
- 安全组
- 密钥对
- IAM 角色
- **Auto Scaling Group(ASG)**
- EC2 实例
其他组件还包括:
- **NLB**(网络负载均衡器——四层代理)
- **ACM**(证书管理)
- **Route 53** DNS 记录
### 规模
该基础设施跨越约 **13 个 AWS 区域**,共部署了约 **2,000 个代理**。
### AMI 生成
CloudFormation 模板引用 AMI 而非创建 AMI。一个独立流程会生成标准化机器镜像,其中包含代理集群所需的所有关键组件——为这些镜像搭建构建流水线,是后续讨论的下一个重大基础设施挑战。
---
## 反思
这段视频以技术回顾的形式呈现,面向正在经历裁员或类似职业转型的工程师。其目标既是记录真实的工程工作,也为思考类似架构挑战——或希望避免重蹈覆辙——的工程师提供参考。内容以技术为主,同时也涉及在 Atlassian 工作的一些非技术层面的经历。
---
来源:https://youtu.be/55pTFVoclvE
相似文章
@polydao: pov: 你是Vasilios Syrakis,你花了8年时间构建支撑Jira、Confluence、Bitbucket的基础设施……
工程师Vasilios Syrakis,曾为Atlassian(Jira、Confluence、Bitbucket)构建核心基础设施,后被裁员,如今发布了一段38分钟的技术解析视频,详细讲解了他设计的系统,包括Envoy代理、Rust编写的认证容器以及集中式边缘架构。
@polydao:Atlassian上季度营收17.9亿美元 Atlassian的操作:解雇了构建其基础设施的工程师 他的……
一位被解雇的Atlassian工程师发布了一段38分钟的分解视频,详细阐述了他构建的基础设施,揭示了Envoy代理、Sidecar架构、DynamoDB、SQS、Packer和SaltStack等细节,相当于免费提供了一份企业级技术手册。
@qkl2058: Atlassian上季度收入17.9亿美元。然后他们把搭这套基础设施的工程师给裁了。 这哥们被裁之后干了件事:直接放出一段38分钟的视频,把他搭过的每一个系统拆解得明明白白,免费公开,谁都能拿去用。 他抖出来的东西包括: · 用Envoy…
Atlassian前工程师被裁后公开了一段38分钟视频,详细拆解了公司内部基础设施架构,包括Envoy代理、边车架构、DynamoDB和SQS等,免费分享企业级系统设计。
Amazon Web Services – 四年后离开
一位AWS员工回顾了他在公司的四年经历,指出组织变革和对生成式人工智能(Generative AI)的日益关注是他离职的原因,并为被解雇感到如释重负。
@system_monarch:一个月前,我告诉大家:“我做了12年多的后端工程师。如今,我是Atlassian的首席工程师……”
一位Atlassian首席工程师分享了已完结的25天Twitter系列帖,内容涵盖系统设计扩容基础,现整理成单一资源。