NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

揭秘亚马逊内部与众不同的软件开发系统

  • 2022-08-01
  • 本文字数:1562 字

    阅读完需:约 5 分钟

揭秘亚马逊内部与众不同的软件开发系统

本文最初发布于 Gergely Orosz 的个人博客。

 

亚马逊有大量的内部系统。作为软件工程师和工程经理,下面这些值得了解一下。

 

当作为 SDE(软件开发工程师)或 SDM(软件开发经理)加入时,你必须学会使用亚马逊自定义的技术栈,这和 AWS 客户所使用的技术栈有着惊人的差异。下面这些是你可能会遇到的系统。

与 SDE 密切相关的内部系统

Code:代码搜索和 VCS(Git)。

 

Crux:亚马逊的代码评审系统。

 

Brazil: 亚马逊的构建系统。可以看下这篇详细介绍Brazil的文章,虽然已经过时,但仍有意义。

 

Sage:亚马逊内部的“Stack Overflow”。

 

亚马逊内部维基系统:该系统有一些令人愉快的特性,比如很容易在页面上嵌入来自 AWS Cloudwatch 或先前系统(PMET —— 性能指标)的图片。

 

NAWS(Native AWS):使用现行 AWS 的“现代”技术栈。

 

MAWS(Move to AWS):遗留的旧 AWS 系统。

  • 许多系统在从这上面移走,尤其是在零售领域。

  • MAWS 要求服务通过一个名为的 Apollo 系统在 EC2 实例上启动,这在 NAWS 中基本已经废弃了(你应该使用 Lambda 或 ECS,或者在绝对必要的情况下使用原始 EC2)。

 

Isengard/Conduit:AWS 账号管理,所有系统都是隔离的,这可以保证每个区域、服务、阶段(stage)都有独一无二的 AWS 账号。

 

Last Week in AWS编辑 Corey Quinn 将这项服务说成是“他最讨厌的AWS服务”。他写道:

事实上,这是用于配置 AWS 账号的内部系统,这意味着,构建 AWS 的 AWS 工程师管理 AWS 账号的方式与世界上其他人管理 AWS 账号的方式绝缘。他们不需要采用和 AWS Organizations、Landing Zones、Control Tower 或 AWS SSO 一样的方式。这是我对这项服务不满的根本原因。

Pipelines:CI/CD 系统,支持多阶段部署(最多 4 个阶段:beta、gamma、prod、local)。有一位 AWS 工程师这样描述它:

在亚马逊,管道是“把简单的事情变困难,把困难的事情变可能”的最佳例子之一。部署到 3-4 阶段的服务(跨不同区域的 beta、gamma 和 prod)大概并不关心管道。而像大多数 AWS 服务那样,在流水线中有数百个部署单元的服务则对它非常满意。

 

LPT:动态管道模板。这是一个生成 CloudFormation 或 CodeDeploy 模板的 Ruby 库,它会同时定义管道、Isengard 账号及其他脚手架。通常,每个服务都有一个 LPT 包来创建所需的资源。

 

AWS CDK:亚马逊在推动使用它代替 LPT,但截至 2022 年初,与 LPT 相比,它还是一个不怎么成熟的系统。大部分团队都在采取行动,有些团队表示,他们特别喜欢它提供的 TypeScript 支持。

 

2PR:针对敏感操作的第二人审批系统,如 Isengard 和 SSH 登录系统。如果访问系统时没有按要求审批,就会自动创建一个团队违规通知单,这可以升级到管理层。

组织层面的系统

AWS Chime:以前是亚马逊的聊天和视频通话应用程序。现在,亚马逊使用 Slack 聊天,但 AWS Chime 仍用于视频通话,包括电话面试。

 

Kingpin:团队、组织及亚马逊公司范围的目标跟踪系统。

 

Accolades:一个通过评价赞美员工的工具,并且提供了方法,可以方便地抄送给经理和其他人。

 

Connections:在公司笔记本上预装。它会在一天开始的时候提一个简单的问题,像”你觉得你的经理怎么样“,或者”你的团队对卓越运营(OE)的重视程度如何?“,并让你给出满分为 5 的评级。公司里每个人每天看到的问题都一样。

 

Forte:亚马逊公司范围的绩效反馈流程,从 12 月下旬开始一直运行到 1 月底。员工使用 Forte 工具请同行及与他们共事的人反馈意见。简短的反馈,只有 60 个单词或更少。

 

汇总后的匿名结果会上传给管理层,他们的目标是随着时间的推移提高他们的 Connections 分数。这些结果会与团队分享,团队会给出反馈,而他们的经理则会据此采取措施。

编程语言

大多数服务都是用 Java 编写的。不过,团队是自治的,他们可以选择任何自己想用的语言和框架。虽然 Java 是主要的,但这些服务中也使用了多种其他语言。

 

查看英文原文:

https://blog.pragmaticengineer.com/amazon-notable-systems/

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2022-08-01 11:453886

评论

发布
暂无评论
发现更多内容

干货:ANR日志分析全面解析

vivo互联网技术

android 堆栈 日志分析 anr

阿里都会问些什么?4面阿里余额宝Java高级技术岗

Java架构师迁哥

【译】JavaScript 代码整洁之道-重构篇

KooFE

JavaScript 大前端 代码重构 6月日更 整洁代码

学历不够,技术来凑,8年开发经验,逆袭拿到阿里P7岗

Java架构师迁哥

入职美团定级P7,总结2021年最新180道高级岗面试题及答案

Java架构师迁哥

双非本科逆袭记,阿里技术四面+交叉面+HR面,成功拿到offer

Java架构师迁哥

即时通讯系列-WorkPlus简介

WorkPlus

开源 即时通讯 IM 办公自动化

揭秘Spring家族之——AOP和IOC

Java架构师迁哥

带你遨游银河系的十种分布式数据库

悟空聊架构

数据库 分布式 分布式数据库 6月日更

博客

vincentjia

Hanoi 塔问题(Java实现)

若尘

数据结构 java编程 6月日更

5.7w字?GitHub标星120K的Java面试知识点总结,真就物超所值了

Java 编程 程序员 面试 计算机

解读革命性容器集群CCE Turbo:计算、网络、调度全方位加速

华为云开发者联盟

容器 华为云 CCE Turbo 集群服务器

从零开始学习3D可视化之坐标系

ThingJS数字孪生引擎

物联网 可视化 数字时代 3D模型 3D可视化

代码写的烂才是原罪?字节三面+微信四面+PayPal四面,大厂面经分享

Java 程序员 架构 面试

网络攻防学习笔记 Day39

穿过生命散发芬芳

网络攻防 6月日更

一文读懂开源项目 OpenHarmony2.0

科技热闻

每日优鲜:AI 技术驱动下的社区新零售

蚂蚁集团移动开发平台 mPaaS

人工智能 算法 图像识别 codehub

花了三个小时把一份GitHub上标星115k的《Java超全进阶教程》整理成了PDF文档。

Java架构之路

Java 程序员 架构 面试 编程语言

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

华为云开发者联盟

大数据 开源 鲲鹏 鲲鹏计算 Kunpeng BoostKit

京东T8Java架构师呕心沥血总结整理的《15w字的Java面试手册》免费开放分享给大家复习。

Java架构之路

Java 程序员 架构 面试 编程语言

普通二本,吃透这份阿里高级专家的《Java面试手册21版》成功拿下腾讯offer

Java架构师迁哥

2021版最新!字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

Java架构之路

Java 程序员 架构 面试 编程语言

老同学突然升到了阿里P7,只因偷偷掌握了JVM的奥秘?

Java架构师迁哥

如何在 Electron 上实现 IM SDK 聊天消息全文检索

网易云信

全文检索 Electron IM

Linux Shell 自动交互人机交互的 3 种方法

学神来啦

Linux 运维 Shell 虚拟机 linux运维

Mybatis缓存机制详解

北游学Java

Java mybatis

java中的NIO和IO到底是什么区别?20个问题告诉你答案

华为云开发者联盟

Java io nio buffer channel

@成都的Coder

蚂蚁集团移动开发平台 mPaaS

flutter 移动开发 mPaaS

iOS开发-Objective-C 中的 MVVM 模式介绍

iOSer

ios objective-c MVVM ios开发

本科毕业六年,备战一个月,四面阿里巴巴定级P7

Java架构师迁哥

揭秘亚马逊内部与众不同的软件开发系统_语言 & 开发_Gergely Orosz_InfoQ精选文章