본문 바로가기
푸닥거리

외부화를 위한 Amazon의 선언

by ┌(  ̄∇ ̄)┘™ 2022. 6. 13.
728x90

2002년, Amazon 창립자 제프 베조스(Jeff Bezos)가 전 직원에게 내린 짧은 지시 하나가 오늘날 API와 마이크로서비스에 대한 현대적 사고의 상당 부분을 형성했습니다. "베조스 API 선언(Bezos API Mandate)"이라 불리는 이 메모를 살펴보고, 왜 이것이 API 세계의 전설이 됐는지 정리합니다.

선언 전문 (전설에 따르면)

  1. 모든 팀은 이제부터 서비스 인터페이스를 통해 데이터와 기능을 공개한다.
  2. 팀은 이 인터페이스를 통해서만 서로 통신해야 한다.
  3. 다른 형태의 프로세스 간 통신은 금지한다 — 직접 연결, 다른 팀의 데이터 저장소 직접 읽기, 공유 메모리 모델, 백도어 모두 안 된다. 허용되는 유일한 통신은 네트워크를 통한 서비스 인터페이스 호출뿐이다.
  4. 사용하는 기술은 상관없다 — HTTP, CORBA, Pub/Sub, 커스텀 프로토콜 무엇이든.
  5. 모든 서비스 인터페이스는 예외 없이 처음부터 외부화 가능하도록 설계되어야 한다. 즉 외부 개발자에게 노출할 수 있도록 계획·설계하라. 예외 없음.
  6. 이것을 하지 않는 사람은 해고될 것이다.
  7. 감사합니다. 좋은 하루 되세요!

핵심 원칙 네 가지

짧지만 강력한 이 메모에는 현대 아키텍처의 핵심 원칙들이 압축되어 있습니다.

  • ① 인터페이스를 통한 캡슐화 (1) — 모든 팀의 데이터·기능은 명확한 인터페이스 뒤에 숨는다. 내부 구현은 자유롭게 바꿀 수 있다.
  • ② 통신의 표준화와 격리 (2, 3) — 백도어를 전면 금지함으로써 팀 간 강한 결합을 원천 차단한다. 이것이 서비스가 독립적으로 배포·확장될 수 있는 전제다.
  • ③ 기술 불가지론 (4) — 인터페이스 계약만 지키면 각 팀이 원하는 기술을 쓸 수 있다. 마이크로서비스의 "폴리글랏(polyglot)" 자유가 여기서 나온다.
  • ④ 외부화를 기본값으로 (5) — "언젠가 외부에 공개할 수도"가 아니라 처음부터 공개 가능하게 설계하라. 이 강제가 인터페이스 품질을 끌어올린다.

왜 전설이 되었나

이 선언의 진짜 힘은 조직 구조를 아키텍처로 만든 것에 있습니다. "팀 간에는 오직 API로만 대화하라"는 규칙은 곧 시스템을 느슨하게 결합된 서비스들로 쪼개도록 강제했고, 이것이 나중에 마이크로서비스AWS(Amazon Web Services) 그 자체로 이어졌습니다. 내부용으로 잘 만든 서비스 인터페이스가 곧 외부 상품(클라우드 API)이 될 수 있었던 것이죠.

"모든 인터페이스를 외부화 가능하게 설계하라"는 규칙이 없었다면, 아마 AWS도 없었을 것이다.

이것은 콘웨이의 법칙(조직 구조가 시스템 구조를 닮는다)을 역으로 활용한 사례이기도 합니다 — 원하는 시스템 구조(독립적 서비스)를 얻기 위해 조직의 소통 방식(API only)을 먼저 바꾼 것입니다.

오늘의 교훈

20여 년이 지난 지금, 이 원칙들은 당연한 상식이 됐습니다 — API 우선(API-first) 설계, 서비스 간 느슨한 결합, 계약 기반 통신. 흥미롭게도 이 메모가 실제 원문 그대로였는지는 논쟁이 있지만(아래 참고 링크), 그 정신이 현대 소프트웨어를 형성했다는 사실만은 분명합니다.

 

The Bezos API Mandate: Amazon's Manifesto For Externalization | Nordic APIs |

The 2002 Bezos API Mandate helped Amazon scale their business, and formed much of the modern thought around APIs and microservices. But was this memo real, or just myth?

nordicapis.com

728x90

'푸닥거리' 카테고리의 다른 글

M121 The MongoDB Aggregation Framework  (0) 2022.06.18
InnoDBClusterSet  (0) 2022.06.16
ASP.NET Core Restfull API 및 postman 호출 with visual studio 2022  (0) 2022.06.12
M201 MongoDB Performance  (0) 2022.06.11
Two-Pizza Teams  (0) 2022.06.11

댓글