2016년 2월 25일 목요일



1. 소개

API란 최종 사용자의 애플리케이션에서 기능을 모듈화하는 재사용 가능한 블록이다.

API개발의 목적은 컴포넌트의 기능에 논리적인 인터페이스를 제공하고 컴포넌트에 구현된 구체적인 코드를 숨기는 것이다.

API는 소프트웨어 컴포넌트가 구현한 코드를 캡슐화하는 논리적인 인터페이스다.

구현 코드에서 발생하는 문제보다 인터페이스에서 발생하는 문제를 고치는 데 더 많은 비용이 든다.

잘 설계된 API는 큰 자산이 된다. 여러개의 애플리케이션이 같은 API를 공유할 수 있다.
API를 변경할 때는 반드시하위 호환성에 신경 써야 한다. 하위 호환성에 관한 요구사항을 충족시키기 위해서는 프로세스를 제어할 수 있는 기회를 잡는 것이 중요하다.

새 버전의 API를 릴리즈하기 전에는 충분한 API리뷰 시간을 갖는 것이 중요하다.

많은 오픈소스 API역시 변경사항을 반영하기 위해 승인 과정을 거칠 수 있도록 변경 요청프로세스를 시스템화하고 있다.

API는 보통 오래 지속되는 성향이 강하다. 때문에 좋은 API를 만들기 위해서는 계획, 설계, 버전 관리 및 리뷰를 위한 많은 비용을지불한다.

API를 작성할 때는 무엇보다도 잘 정리된 문서화가 필요하다. 테스트 자동화 역시 중요한 요소이다.


API 설계 시 장점

구현 은닉 : 모듈의 구체적인 구현 코드를 내부적으로 숨겨 사용자에게 불편이나 혼란을 주지 않고서도 구현 코드를 계속해서 변경할 수 있는 유연성을 확보한다.

지속성 향상 : 개발에 앞서 설계에 투자하고 향후의 유지보수를 고려해 일관성 있는 설계에 많은 노력을 기울인다면, 오랫동안 지속될 수 있으며 유지보수 또한 큰 비용 없이 쉽게 유지될 것이다.

모듈화 : API는 특정 작업이나 유즈 케이스에 따라 분류되고 다시 그 안에서 일관성 있는 기능들을 그룹으로 묶어 모듈화 한다.

중복 코드 제거 : API의 엄격한 인터페이스 뒤로 모든 로직을 집중시킨다. 이럴 경우 한곳에 있는 API만 업데이트하면 모든 사용자에게 변경사항을 적용할 수 있고 또 코드베이스 전체에 걸쳐 중복된 코드를 제거할 수 있다.

가정하에 작성된 하드코드 제거 : 문자열 대신 GetLogFilename() API를 사용하는 것이 더 깔끔하다.

쉬운 코드 변경 : 모듈의 구체적인 코드를 public 인터페이스 안으로 숨기면 API에 의존하는 어떤 코드에도 영향을 미치지 않고 내부의 구현 로직을 변경할 수 있다.

쉬운 최적화 : 쉬운 코드 변경과 비슷하게, 세부적인 구현 코드를 잘 숨겼다면 클라이언트의 코드를 변경하지 않고서도 API에 성능을 최적화 시킬 수 있다.


API를 사용하지 말아야 할 때 : 다른 클라이언트 코드와 상호작용할 필요가 없는 내부 모듈을 개발할 때라면 안정적인 공개 인터페이스를 만들고 지원하는 데 필요한 만큼의 노력을 굳이 쏟을 필요는 없다.

기능의 부적합성 : 환경 및 요구 기능을 제대로 지원하지 못하는 경우가 있다.

소스 코드의 부재 : 처한 상황에 적합한 API는 소스 코드를 제공하지 않을 수가 있다.

충실하지 못한 문서화 : 문서화가 제공되지 않거나 혹은 형편없는 문서화만이 제공된다면 다른 해결 방법을 찾는 것이 더 현명하다.


TIP. 여러 파일 포맷이나 클라이언트/서버 프로토콜을 만들 때마다 관련된 API도 만들어야 한다. 그렇게 하면 구체적인 명세를 만들 수 있을 뿐만 아니라 앞으로 한 곳에 집중되고 숨겨지는 변경사항들을 잘 관리할 수도 있다.

0 개의 댓글:

댓글 쓰기