高级 DevSecOps / 全栈工程师
年起薪 75,000 欧元,税前,全职
工作地点: 全球远程。
合同安排。 聘用形式、签约主体及适用法律将在发出聘用邀约时确定,因此未在此预先列明;这些事项取决于入选者的所在地,目前尚未决定。候选人需自行确保在居住地拥有工作权利,具体安排也会在届时讨论。
浮动薪酬。 另有一项取决于公司业绩的年度浮动薪酬,与起始基本薪酬分开计算,且不作保证。
职能类别。 工程
岗位使命
平台目前以托管方式运行。但在我们重点市场,机构和政府采购方越来越难以采用这种方式:他们希望把平台部署到自己的基础设施上,受自身控制,不依赖任何未经同意的外部服务。相关交付方案已有工程蓝图,也如实列明尚无法打包交付的部分。这个岗位需要把蓝图变成真正可运行的部署,同时持续交付产品代码。
前 90 天实际要做什么
- 将边缘函数启动时所需的远程模块导入项内置到经过校验和验证的构建产物中,使私有网络中的部署启动时无需访问公共软件包仓库。
- 在容器中搭建参考技术栈:Postgres 及其扩展和完整迁移历史、身份认证服务、REST 接口层、对象存储、网关和函数运行时。使用可在任何托管集群上表现一致的 Kubernetes 核心资源。
- 明确写下新安装的标准路径:先初始化基础数据库结构,再依次执行后续迁移,并在空白集群上实际验证,而非仅作断言。
- 如实列出仍无法打包交付的部分。目前已知最大的问题是,日常运维依赖托管平台的控制台,而客户自有部署不会有这一控制台;替代它的操作手册也尚未建立。
此后负责的工作
- 基础设施即代码和部署清单以通用资源为基础编写,而不是绑定单一云供应商,使同一套部署可运行在客户所选、由任何运营方管理的 Kubernetes 集群上。
- 发布流程:在客户网络边界之外构建产物,签名后连同摘要值和软件物料清单发布,并在进入边界时核验。客户安全团队须批准每次更新;只有技术机制确实强制执行这一要求,批准才有实际意义。
- 默认拒绝对外通信,并记录每条获准通信的数据字节形态,让客户网络团队能够检查通道,而不必只相信文字描述。
- 各处连接边界:邮件、身份系统、模型端点和时间戳服务分别由客户配置。每种选择都必须说明它会如何改变可以作出的宣称;若某项功能已开启却未正确绑定,系统必须拒绝继续运行。没有悄然启用的备用路径,正是这里的安全要求。
- 在客户网络边界内,使用客户自有硬件部署小型语言模型,为已启用的 AI 功能提供服务,让提示词完全没有向外传输的路径。
- 持续参与产品工程。大约一半工作涉及 React 应用及其后端函数。这不是一个只做平台的岗位。
任职要求
- 曾将有状态的 Postgres 服务容器化并投入生产,且真正从备份恢复过,而不只是在操作手册中写过恢复流程。
- 熟悉 Kubernetes 核心资源,并能解释为何使用卷声明模板的 StatefulSet 不等于由 Operator 管理的数据库。
- 能够用 TypeScript 编写前端和服务端函数,也愿意每周抽出约一半时间编写产品代码。
- 曾在交付压力下坚守必须失败即停止的控制措施,并能讲清当时是如何沟通的。
- 能阅读 Postgres 行级安全策略,并解释一条看似合理的策略如何导致数据泄露。
- 能够远程、自主地负责一块尚无其他负责人承担的工作。职位面向全球候选人;上述前 90 天的内容如实说明了第一季度需要付出的工作量。
这个岗位不是什么
- 不是只做 Kubernetes 的平台岗位。约一半工作是应用程序代码;希望远离产品开发的人可能不会适合。
- 不是从零开始的项目。平台已经存在,拥有较长的数据库迁移历史;每项打包部署决策都受这些既有条件及公司可作出的宣称限制。
- 不是审计或鉴证岗位。这里的防护来自实际运行的代码,而不是针对他人代码撰写的发现报告。
- 不是带团队的管理岗位。目前没有下属,也不会在招聘信息中假装有。