반응형
TIL (Today I LeTIL (Today I Learned)
2022.05.07
오늘 읽은 범위
2부 사용자를 위한 API 디자인하기
책에서 기억하고 싶은 내용
- API는 무조건 사용자들의 목표를 달성하기 위해서 존재합니다.
- 올바른 입장, 올바른 관점을 선택하는 것이 인터페이스와 API를 디자인하는데 있어서 가장 중요합니다.
- 작업 방식(내부 동작 원리)에 집중하면 인터페이스가 복잡해진다. 사용자가 할 수 있는 일에 집중해 인터페이스를 단순하게 해라.
- API는 반드시 컨슈머의 관점에서 디자인되어야 합니다. 프로바이더의 관점이 아니라.
- API 디자인 시 체크 사항
- 누가 API를 사용하는가?
- 무엇을 할 수 있는가?
- 어떻게 하는가?
- 하기 위해서 무엇이 필요한가? (입력에 대한 질문)
- 끝나면 무엇을 반환하는가? (출력에 대한 질문)
- 누락된 목표가 있는가 (이를 체크하기 위해 7번 목표가 등장)
- 모든 사용자를 찾아냈는가
- API 캔버스는 다음과 같은 항목을 가진다.
- 누가
- 무엇을
- 어떻게
- 입력(원천)
- 출력(사용처)
- 목표
- API 목표 캔버스를 이용해 사용자들이 무엇을 할 수 있는지에 집중하면 쉽게 디자인 문제를 회피할 수 있다.
- 시스템은 개발한 조직의 의사소통 구조를 닮아간다.
- 소프트웨어 아키텍처는 항상 숨겨져야 한다.
- API를 디자인하는 도중 프로바이더 관점이 내부 동작(데이터, 코드와 비즈니스 로직, 소프트웨어 아키텍처, 인적 자원)을 노출할 수 있으며, 이 경우 필연적으로 이해하기 어렵고 사용하기 어려운 API를 만들게 됩니다.
떠오르는 생각
- 작업 방식(내부 동작 원리)에 집중하면 인터페이스가 복잡해지고, 사용자가 할 수 있는 일에 집중하면 인터페이스는 단순해진다고 한다. 계속 읽으면서 머릿속에 객체지향의 캡슐화가 떠올랐다. 객체지향 캡슐화는 객체가 내부 동작을 감춰버리는 것이다. 그러므로 해당 객체를 사용하는 사용자는 객체가 어떻게 동작하는지 알 필요가 없지만 객체를 사용할 수 있다. 이런 방식을 통해 객체의 응집도는 높이고, 객체간의 의존도는 낮출 수 있다. 결국 어떤 아키텍쳐를 디자인할 때 다양한 분야에서 캡슐화가 중요하다는 것을 다시 느꼈다.
- 모든 사용자를 찾아냈는가, 누락된 목표가 있는가 이 부분에서 소프트웨어 공학 시간에 배운 유스케이스 다이어그램에서 액터를 찾는 과정을 떠올렸다. API 디자인은 결국 유스케이스를 도출해내는 것과 동일하다고 본인은 생각한다. 결국 굉장히 중요한 작업이라는 것이다. 역시 코딩도 중요하지만 아키텍처 디자인 및 유스케이스 설계는 정말 중요한 것 같다.
- 시스템은 결국 개발한 조직의 의사소통 구조를 닮아간다. 이 부분이 굉장히 와닿았다. 소프트웨어는 소모가 발생하지 않고 품질 저하가 발생한다. 이를 막기 위해서는 코드를 리팩토링하고 훌륭한 이키텍처를 디자인해 이를 따라 서비스를 확장해 나가야 한다. 개발은 결국 팀 단위로 이루어진다. 의사소통이 원할하지 않으면 다 같이 훌륭한 아키텍처를 따라 코드를 생산할 수 없고, 서로의 피드백, 요구사항도 이해하지 못하며, 결국 코드의 품질은 점차 낮아지게 될 것이다. 코딩 실력만큼 커뮤니케이션 능력도 중요하다는데 이를 다시금 상기할 수 있었다.
- 이제 본격적인 프로그래밍 인터페이스 디자인 파트로 넘어간다. 점차 재밌어진다!!!1
반응형
댓글