System Design

개요 API 스펙이 달라지면 버전을 변경해야 할 일이 생깁니다. 이때 여러가지 전략을 사용해 클라이언트와 서버간의 API 버저닝 관리를 실현할 수 있습니다. API 버전 관리란 단순한 API 디자인을 넘어서는 주제이며, API를 통해 일하는 사람과 마찬가지로 API 디자이너는 모든 의미를 알고 있어야 합니다. 오늘은 API 버저닝을 하기 위한 전략 6가지를 살펴보겠습니다. API 버전 관리와 구현 버전 API의 버전은 인터페이스 컨트랙트에 영향을 주느냐에 따라서 변경되는 것이 좋습니다. 예를 들어서 마이크로서비스 아키텍처를 따르고 있는 서버에서 특정 도메인 영역에 대한 서버 개발언어를 Python 에서 Go 로 변경했다 하더라도 이전 API 와 같은 역할을 한다면 API 의 버전이 올라갈 필요가 없는 것..
최근에 사내 스터디로 "일상 속 사물이 알려주는 웹 API" 책을 동료들과 함께 읽었었는데 API 설계에 대해서 한번 더 생각 해 볼수 있는 기회가 되어서 좋았었다. 이 책에서는 API 설계는 "프로바이더" 관점이아닌 "컨슈머"의 관점이 되어야 한다고 강조하고 있다. "컨슈머" 관점인 좋은 API 설계를 구성하기 위해서는 아래 6가지 제약사항을 잘 이해하고 있어야 한다. * 클라이언트 / 서버 분리 * 스테이트 리스 * 캐시 가능성 * 레이어드 시스템 * 코드 온 디맨드 * 유니폼 인터페이스 1. 클라이언트 / 서버 분리 (서로 의존하면 안됨) 모바일 애플리케이션의 동작 방식과 서버의 동작 방식에 대해서 분리하여 생각해야한다. 클라이언트는 서버의 구체적인 동작을 알 수 없어야하고 (API URL만 알고있..
Background 소프트웨어 아키텍처 연구의 일환으로 연구자들은 아키텍처에 들어가야 할 용어들을 정의 해야 했음 해당 챕터에서는 소프트웨어 아키텍처에서 사용되는 일관성있는 용어들을 정리함 1-1. Run-time Abstraction A software architecture is an abstraction of the run-time elements of a software system during some phase of its operation 소프트웨어 아키텍처의 핵심은 추상화임. 시스템의 각 프로퍼티들을 좀 더 잘 인식하고 유지하기 위해 디테일한 부분을 숨기는 것이 중요함 아키텍처의 수준 외에도 소프트웨어 시스템은 주로 다양한 실행 단계를 가지고 있음, 예를 들어서 설정 파일들은 start-u..
파커초
'System Design' 카테고리의 글 목록