October 10, 2013

fastcolabs ; 위대한 API 디자인이란 개발자에게 게을러질 수 있는 여유를 선사하는 것

Originally posted : October 10, 2013.



 Designing Great APIs Means Valuing Laziness 
 위대한 API 디자인이란 개발자에게 게을러질 수 있는 여유를 선사하는 것 

우리 모두가 가진 게으름에 대해 어필하는 위대한 API가 갖춰야할 3가지 덕목에 대해 이야기한다.

By: Kevin Lacker, CTO and co-founder of Parse

-

어플리케이션 내부적으로 다른 사람들이 가져다 쓸 수 있는 소프트웨어를 만들 때, API 디자인은 중요하다. API란 개발자들이 보고 작업하는 인터페이스를 말한다. 좋은 API를 제작하려면 마치 레고 조각을 조립하듯 만들어야 하며, 모든 건 일관적인 시스템을 위해 완벽하게 서로 맞물려져야 한다. 

자, 그렇다면 무엇이 위대한 API를 만드는 것일까? API는 소프트웨어 개발자들에게 가장 강력한 한 가지 요소에 대해 어필해야 한다: 바로 게으름이다. 지금부터 게으름에 대해 어필할 수 있는, 위대한 모든 API들이 갖춰야할 3가지 요소에 대해 소개하겠다. 

첫째, API는 직관적이어야 한다. API는 같은 방식으로 동작하는 작은 파트들이 서로 맞물려지면서 더 큰 형태로 발전해야 직관적이 된다. API가 직관적이면, 당신은 좀 더 게을러질 수 있다. 당신은 그것이 어떻게 작동하는 건지에 대해 열심히 공부하지 않아도 된다. 당신이 직관적으로 해석한 내용이 실제와 다를지 모르는 걱정 때문에 복잡한 세부 사항을 모조리 기억하려 노력할 필요가 없다는 것이다. 또한 모든 부분이 같은 방식으로 작동하기 때문에 API에 새로운 부분이 추가되었을 때 이에 대해 공부하기 위해 추가적인 시간을 소모하지 않아도 된다는 것이다. 이에 대한 아주 좋은 예는 Python의 혼합 데이터 타입(compound data types)이다. 모두 같은 방식으로 작동하기 때문에 리스트가 어떤 규칙으로 이루어져있는지 한 번만 익히면, 문자열과 리스트를 직관적으로 이해할 수 있다. 

둘째, API는 위대한 기록문서(documentation)를 필요로 한다. 위대한 기록문서는 개발자들이 간단한 질문을 통해 간단한 답변을 얻을 수 있도록 만들어주기 때문에 개발자들이 좀 더 게을러져도 괜찮도록 만들어준다. 다른 종류의 문서는 다른 종류의 질문들에 적합하다. 목차 문서는 "API의 이 부분이 무슨 일을 하는거지?"라는 질문에 대해 쉽게 알 수 있도록 해주어야 한다. 가이드와 튜토리얼은 "이것과 비슷한 작업을 하려면 이 API를 어떻게 사용해야 하는거지?" 라는 질문에 대해 쉽게 알 수 있도록 해주어야 한다. 그리고 빠른 시작(quickstart)은 "가장 처음에 어떻게 시작해야하지?"라는 질문에 대해 쉽게 알 수 있도록 해주어야 한다. 이에 대한 좋은 예는 Stripe의 API이다, 기록문서가 굉장히 잘 디자인되어야 있으며 PayPal의 경우 그것을 그대로 복제해서 사용했다

마지막으로, API가 독선적인 면을 가져야 할 필요가 있다. 적합한 해결책이 아닌데도 그럭저럭 통용되고 있는 API 디자인 요소들이 많이 있다. method의 이름을 정할 때 이런_언더스코어를_이용해_나누어줘야_하는가 혹은 이렇게 대문자를 활용해서 나누어줘야 하는가(capitalizedLikeThis)? 규모가 큰 프로그래밍 커뮤니티에서는, 이에 대해 논쟁이 끊이지 않는다. API를 만드는 당신의 팀은 이러한 것들에 대해 강력한 하나의 의견을 가지고 있어야 한다. 만약 이런 강력한 자세를 가지지 않으면, 당신의 팀의 규모가 점차 성장함에 따라, 다른 추가 인원들이 합류되어서 섹션들을 다르게 디자인하기 시작할 것이며, 당신의 API는 점점 직관적인 면과는 멀어지게 될 것이다. 이것을 잘 보여주는 따라하지 말아야 할 좋은 예는 PHP string library이다. PHP string library를 익히는 건 마치 파이값의 소수점 숫자를 외우는 일처럼 느껴진다. 아무런 패턴이 없어서, 그저 method별로 하나하나 다 외워야만 하기 때문에 게을러 질 틈이 없다. 

이러한 원칙들보다 더 중요한 건 개발자들의 삶 자체를 쉽게 만드는 것이다. 좋은 API는 당신을 좀 더 게을러질 수 있게 만들어줄 것이다. 그리고 위대한 API는 당신에게 정말, 정말 게을러질 수 있는 권리를 선사할 것이다. 

Kevin Lacker는 Parse의 CTO이자 공동설립자로서, 개발자들이 여러 플랫폼과 기기들을 오가며 모바일과 웹앱을 개발할 수 있도록 돕고 있습니다. 

[Image: Flickr user Rising Damp]

---

http://www.fastcolabs.com/3019805/designing-great-apis-means-valuing-laziness

No comments:

Post a Comment