독서/일상 속 사물이 알려주는 웹 API 디자인

일상 속 사물이 알려주는 웹 API 디자인 - 사용자를 위한 API 디자인하기

Debin 2022. 5. 7.
반응형

TIL (Today I LeTIL (Today I Learned)

2022.05.07

 

오늘 읽은 범위

2부 사용자를 위한 API 디자인하기

 

책에서 기억하고 싶은 내용

  • API는 무조건 사용자들의 목표를 달성하기 위해서 존재합니다.
  • 올바른 입장, 올바른 관점을 선택하는 것이 인터페이스와 API를 디자인하는데 있어서 가장 중요합니다.
  • 작업 방식(내부 동작 원리)에 집중하면 인터페이스가 복잡해진다. 사용자가 할 수 있는 일에 집중해 인터페이스를 단순하게 해라.
  • API는 반드시 컨슈머의 관점에서 디자인되어야 합니다. 프로바이더의 관점이 아니라.
  • API 디자인 시 체크 사항
    1. 누가 API를 사용하는가?
    2. 무엇을 할 수 있는가?
    3. 어떻게 하는가?
    4. 하기 위해서 무엇이 필요한가? (입력에 대한 질문)
    5. 끝나면 무엇을 반환하는가? (출력에 대한 질문)
    6. 누락된 목표가 있는가 (이를 체크하기 위해 7번 목표가 등장)
    7. 모든 사용자를 찾아냈는가
  • API 캔버스는 다음과 같은 항목을 가진다.
    1. 누가
    2. 무엇을
    3. 어떻게
    4. 입력(원천)
    5. 출력(사용처)
    6. 목표
  • API 목표 캔버스를 이용해 사용자들이 무엇을 할 수 있는지에 집중하면 쉽게 디자인 문제를 회피할 수 있다.
  • 시스템은 개발한 조직의 의사소통 구조를 닮아간다.
  • 소프트웨어 아키텍처는 항상 숨겨져야 한다.
  • API를 디자인하는 도중 프로바이더 관점이 내부 동작(데이터, 코드와 비즈니스 로직, 소프트웨어 아키텍처, 인적 자원)을 노출할 수 있으며, 이 경우 필연적으로 이해하기 어렵고 사용하기 어려운 API를 만들게 됩니다.

떠오르는 생각

  • 작업 방식(내부 동작 원리)에 집중하면 인터페이스가 복잡해지고, 사용자가 할 수 있는 일에 집중하면 인터페이스는 단순해진다고 한다. 계속 읽으면서 머릿속에 객체지향의 캡슐화가 떠올랐다. 객체지향 캡슐화는 객체가 내부 동작을 감춰버리는 것이다. 그러므로 해당 객체를 사용하는 사용자는 객체가 어떻게 동작하는지 알 필요가 없지만 객체를 사용할 수 있다. 이런 방식을 통해 객체의 응집도는 높이고, 객체간의 의존도는 낮출 수 있다. 결국 어떤 아키텍쳐를 디자인할 때 다양한 분야에서 캡슐화가 중요하다는 것을 다시 느꼈다.
  •  모든 사용자를 찾아냈는가, 누락된 목표가 있는가 이 부분에서 소프트웨어 공학 시간에 배운 유스케이스 다이어그램에서 액터를 찾는 과정을 떠올렸다. API 디자인은 결국 유스케이스를 도출해내는 것과 동일하다고 본인은 생각한다. 결국 굉장히 중요한 작업이라는 것이다. 역시 코딩도 중요하지만 아키텍처 디자인 및 유스케이스 설계는 정말 중요한 것 같다.
  • 시스템은 결국 개발한 조직의 의사소통 구조를 닮아간다. 이 부분이 굉장히 와닿았다. 소프트웨어는 소모가 발생하지 않고 품질 저하가 발생한다. 이를 막기 위해서는 코드를 리팩토링하고 훌륭한 이키텍처를 디자인해 이를 따라 서비스를 확장해 나가야 한다. 개발은 결국 팀 단위로 이루어진다. 의사소통이 원할하지 않으면 다 같이 훌륭한 아키텍처를 따라 코드를 생산할 수 없고, 서로의 피드백, 요구사항도 이해하지 못하며, 결국 코드의 품질은 점차 낮아지게 될 것이다. 코딩 실력만큼 커뮤니케이션 능력도 중요하다는데 이를 다시금 상기할 수 있었다.
  • 이제 본격적인 프로그래밍 인터페이스 디자인 파트로 넘어간다. 점차 재밌어진다!!!1
반응형

댓글