개발자의 고백 #1: 'API가 뭐야?' 라는 질문에 멍해졌다
Source: Dev.to
The Problem (It’s Worse Than You Think)
비기술적인 사람이 “API가 뭐야?”라고 물으면 웨이터나 우편배달부 비유를 써줄 수 있습니다. 그들은 만족할 겁니다.
하지만 기술적인 사람이 물어볼 때는 비유가 아니라 본질적인 정의를 원합니다. 이미 서버가 뭔지, HTTP가 뭔지, JSON이 뭔지 알고 있기 때문이죠. 그들은 정확하고 간결하며 거의 철학적인 답을 원합니다. 그리고 그게 훨씬 어렵습니다.
그 굴욕적인 순간 이후에 저는 집에 가서 제대로 답하려고 스스로를 강요했습니다. 제가 만든 답은 이렇습니다.
What I Should Have Said (Technical Edition)
The One‑Sentence Definition (Crisp & Precise)
“An API is a defined interface that specifies how one software component can interact with another – including valid requests, expected responses, and the underlying protocol (usually HTTP).”
“API는 하나의 소프트웨어 구성 요소가 다른 구성 요소와 어떻게 상호작용할 수 있는지를 명시하는 정의된 인터페이스이며, 유효한 요청, 기대되는 응답, 그리고 기본 프로토콜(보통 HTTP)을 포함합니다.”
The Slightly More Technical Answer
“An API is a contract between a client and a server. It says: ‘If you send me a request in this shape, to this URL, with these headers, I’ll send you back a response in this shape – and here are the status codes to tell you what happened.’”
“API는 클라이언트와 서버 사이의 계약입니다. ‘이 형태의 요청을 이 URL에, 이 헤더와 함께 보내면, 나는 이 형태의 응답을 돌려줄 것이고, 여기에는 무슨 일이 일어났는지를 알려주는 상태 코드가 포함됩니다.’ 라고 말합니다.”
The “Ah, Right” Analogy (Still Technical)
“Think of a database query language like SQL. You send a SELECT statement, you get a result set. An API is the same idea, but over HTTP – and instead of tables, you work with resources (users, orders, products).”
“SQL 같은 데이터베이스 쿼리 언어를 떠올려 보세요. SELECT 문을 보내면 결과 집합을 받습니다. API도 같은 개념이지만 HTTP 위에서 동작하고, 테이블 대신 리소스(사용자, 주문, 제품)와 작업합니다.”
The Shortest Possible Answer
“An API is a layer that abstracts an implementation behind a set of publicly accessible operations.”
“API는 공개적으로 접근 가능한 일련의 작업 뒤에 구현을 추상화하는 계층입니다.”
그 말이라면 제가 똑똑해 보였겠지만, 저는 그렇게 말하지 않았습니다. “음… 아시겠죠.”라고 했을 뿐이죠.
Why Technical People Go Blank on Basic Definitions
우리가 모르는 것이 아니라, 다음과 같은 이유 때문입니다:
- 우리는 정의가 아니라 사용 사례를 생각합니다 – “API는 사용자 데이터를 얻기 위해 호출하는 것”은 정의가 아니라 예시입니다. 뇌는 이렇게 저장합니다.
- “어떻게 동작하는가”와 “무엇인가”를 혼동합니다 – HTTP 요청 흐름, JSON 직렬화, 상태 코드, 속도 제한, 인증 등을 설명할 수 있지만, 그것이 API 자체는 아닙니다. 그것은 API를 사용하는 방법일 뿐입니다.
- 정의해 본 적이 없습니다 – 학교에서는 문법을 가르치고 정의는 가르치지 않습니다. 직장에서는 그냥 만들기만 합니다. 스프린트 계획 회의에서 “API를 정의해라”는 말은 한 번도 나오지 않죠.
The Real Lesson (For Devs, By a Dev)
무언가를 만드는 방법을 아는 것과 그것을 정의하는 방법을 아는 것은 다릅니다. 최고의 개발자는 두 가지를 모두 할 수 있습니다. 구현에 대해 이야기하면서도 10,000피트 높이에서 정의를 정확히 제시할 수 있죠.
Challenge
검색하지 말고, 지금 바로 큰소리로 한 문장씩 정의해 보세요:
- HTTP
- JSON
- JWT
- DOM
- TCP
못한다면, 이미 우리와 같은 사람입니다. 함께 연습해 봅시다.
Call to Action (Your Confession)
이제 여러분 차례입니다.
다른 개발자 앞에서 막혔던 기본 기술 질문은 무엇인가요? 댓글에 고백을 남겨 주세요. 판단은 없습니다. 그냥 솔직한 개발자들끼리의 이야기입니다.
This is Confessions of a Dev. We’ve all been there.