좋은 API란 무엇일까?

상태
완료
담당자
생성 일시
2024/06/30 04:49
최종 편집 일시
2024/07/03 06:22

좋은 API란 무엇일까?

1.
서론
2.
API란 무엇인가?
3.
좋은 API의 특징
4.
API 사용의 예시
5.
결론

서론

안녕하세요 여러분! 오늘은 "좋은 API란 무엇인가?"에 대해 이야기해보려 해요. 요즘 프로그래밍 세계에서 API(Application Programming Interface)란 단어를 많이 들어보셨을 텐데요, 이게 도대체 뭐길래 이렇게 중요한 걸까요?

API란 무엇인가?

API는 말 그대로 '응용 프로그램 인터페이스'를 의미해요. 프로그램 간의 소통을 돕는 다리 역할을 한다고 볼 수 있죠. 마치 레스토랑에서 메뉴를 보고 요리를 주문하면, 주방장이 그 요리를 만들어서 제공해주는 것과 같아요. 우리는 메뉴판(API)을 통해 원하는 음식을(데이터나 기능) 주문(요청)하고, 주방(서버)에서 그걸 만들어서 우리에게 주는(응답) 구조랍니다.
만약 API가 없어진다면 어떻게 될까요? API는 백엔드와 프론트엔드 간의 데이터 교환을 용이하게 해줘요.백엔드 개발자가 데이터 베이스에서 가져온 데이터를 API를 통해 프론트 엔드로 전달하면,프론트엔드 개발자는 이를 받아 사용자에게 보여줘요.만약 API가 없다면 프론트엔드와 백엔드가 직접 데이터를 주고받는 방법을 찾아야 해요.이는 각 시스템마다 맞춤형 솔루션을 개발해야 한다는 말이고 데이터 전송 과정이 복잡해지고 일관성이 떨어져요. 이 밖에 개발 속도 저하,유지 보수의 어려움,확장성의 문제,외부 서비스 연동의 어려움 등 많은 문제가 발생해요.

좋은 API의 특징

그렇다면 좋은 API는 어떤 특징을 가지고 있을까요? 몇 가지 중요한 포인트를 짚어볼게요.
1.
명확한 문서화 : 좋은 API는 명확하고 자세한 문서가 필수예요. 개발자들이 쉽게 이해하고 사용할 수 있도록 설명이 잘 되어 있어야 하죠.
2.
일관성 : API의 설계가 일관적이어야 해요. 동일한 규칙과 패턴을 따르는 것이 중요해요.
3.
보안 : 데이터의 안전을 보장해야 해요. 즉 목적은 분명히 하되 그 세부 구현 사항들은 가급적 누출되지 않도록 해야해요.만약 API의 내부 구조에 대한 단서를 알게되면 보안 이슈를 만들 수도 있어요!
4.
성능 : 빠르고 효율적으로 작동해야 해요. 사용자가 기다리다가 지치지 않도록 말이에요.
5.
유연성 : 다양한 요구에 대응할 수 있도록 유연해야 해요. 확장 가능하고, 여러 환경에서 동작할 수 있어야 하죠.
6.
에러 처리 : 에러가 발생했을 때, 이를 명확히 알려주고, 해결 방법을 제시해야 해요. "뭔가 잘못됐어요"보다는 "여기서 이런 문제가 발생했어요. 이렇게 해결하세요."가 더 좋겠죠?
7.
첫 사용자 인터페이스 : API는 서비스의 첫 사용자 인터페이스예요. API를 사용하는 개발자도 서비스의 이용자이므로, 이들을 고려하여 디자인되어야 해요.
(Medium에 개재된 Adobe Tech Blog에 있는 Three Principles of API First Design를 번역한 내용을 다뤘어요! 클라우드 네이티브 어플리케이션을 개발할 때 가장 주요한 원칙 중 하나라고 해요)
8.
기능 노출 : API는 당신의 프로덕트 기능을 외부에 드러내는 역할을 해요. 프로덕트 내부에 API에 의해 다뤄지지 않는 기능이 있다면, 이는 GUI나 CLI, VI(Voice Interface)에서도 다뤄질 수 없고, 그 기능은 효과적으로 보이지 않게 돼요.
9.
중요한 접근 방법 : API는 사용자가 프로덕트에 접근하고 상호작용하는 가장 중요한 방법이에요. 따라서 API는 매우 신중하게 설계되고 관리되어야 해요. GUI를 디자인하는데 시간을 들이는 만큼, API를 설계하는 데에도 시간을 투자해야 해요. API가 무엇을 노출시키고, 무엇을 하고, 어떻게 확장되는지에 대한 철저한 고려가 필요해요.
GUI,CLI,VI란 뭘까?

API 사용의 예시

여기서 조금 더 구체적인 예시를 들어볼게요. 예를 들어, 여러분이 날씨 정보를 제공하는 앱을 만들고 싶다고 해요. 이때 날씨 정보를 제공하는 외부 API를 사용하면, 직접 날씨 데이터를 수집하고 분석하는 복잡한 과정을 생략할 수 있죠. API를 통해 손쉽게 필요한 데이터를 받아와서 사용하면 됩니다. 예를 들면, 다음과 같은 요청을 통해 현재 날씨 데이터를 받을 수 있어요.
GET /weather?location=Seoul
Plain Text
복사
이런 식으로 필요한 정보를 요청하고, 응답을 받아와서 앱에 표시하는 거예요. 얼마나 편리한가요?

결론

좋은 API는 마치 유능한 도우미 같아요. 우리의 프로그래밍 작업을 더 쉽고, 빠르고, 안전하게 만들어주죠. 명확한 문서화, 일관성, 보안, 성능, 유연성, 그리고 에러 처리의 요소를 갖춘 API를 사용하면, 저희의 프로그래밍 실력이 유연하게 늘어날 것 같아요!