• [커널아카데미] 백엔드 개발 부트캠프 12기 24주차 - RESTful API란?

    2025. 9. 6.

    by. 고구마달랭이

    RESTful API란 무엇인가

    개발 공부를 하다 보면 'RESTful API'라는 말을 정말 많이 듣게 된다. "우리 서버는 RESTful API를 제공한다" "RESTful하게 API를 설계해야 한다" 같은 말들이다.

    대체 RESTful API가 무엇이길래 이렇게 중요하게 이야기하는 것일까? AWS 공식 문서를 바탕으로 핵심 개념을 설명해보겠다.

    1. API란 무엇인가

    먼저 API부터 간단히 짚고 넘어가야 한다.

    API(Application Programming Interface)는 두 애플리케이션이 서로 통신하기 위한 규칙이자 접점이다. 식당의 메뉴판에 비유할 수 있다.

    • 손님 (클라이언트): 메뉴판을 보고 주문한다.
    • 주방 (서버): 메뉴판에 있는 약속된 방식으로만 주문을 받고 요리를 만든다.

    손님은 주방의 복잡한 요리 과정을 알 필요 없이 메뉴판만 보고 주문하면 되고 주방은 어떤 주문이 들어올지 미리 알고 대비할 수 있다. API는 이렇게 서로 다른 소프트웨어 간의 소통을 표준화하여 개발을 훨씬 쉽게 만들어준다.

    2. 그렇다면 REST란 무엇인가

    REST(Representational State Transfer)는 API가 잘 작동하기 위한 최고의 메뉴판 제작 가이드라인이다. 2000년에 로이 필딩(Roy Fielding)이라는 컴퓨터 과학자가 "어떻게 하면 웹을 더 효율적이고 확장성 있게 만들 수 있을까?"를 고민하며 만든 아키텍처 스타일이다.

    REST는 아래와 같은 몇 가지 중요한 제약 조건(규칙)을 제시한다.

    1. 클라이언트-서버 구조

    클라이언트와 서버의 역할은 명확히 분리되어야 한다. 클라이언트는 요청만 하고 서버는 그 요청을 처리만 한다. 서로의 내부 사정에는 신경 쓰지 않는다.

    2. 무상태 (Stateless)

    서버는 클라이언트의 이전 요청 상태를 기억하지 않는다. 모든 요청은 그 자체로 완전한 정보를 담고 있어야 한다. A 손님이 "아까 시킨 거요"라고 말하면 서버는 알아듣지 못한다. "A 테이블에서 스테이크 하나 더 주세요"라고 매번 명확히 말해야 한다.

    이 덕분에 서버는 각 요청을 독립적으로 처리할 수 있어 시스템 확장이 매우 쉬워진다.

    3. 캐시 가능 (Cacheable)

    자주 요청되는 데이터는 캐시하여 재사용할 수 있어야 한다. 서버는 응답 데이터에 "이 데이터는 10분 동안 재사용해도 괜찮다"와 같은 캐시 정보를 포함할 수 있다.

    4. 계층형 시스템 (Layered System)

    클라이언트와 서버 사이에 보안이나 로드밸런싱을 위한 중간 서버 계층이 있어도 클라이언트나 서버는 그 사실을 알 필요가 없다. 시스템의 각 계층은 자신과 직접 연결된 계층만 알면 된다.

    5. 균일한 인터페이스 (Uniform Interface)

    이것이 REST의 핵심이다. 누가 보더라도 이해하기 쉽고 일관된 인터페이스로 만들어져야 한다는 규칙이다.

    • 자원(Resource) 기반: 모든 것은 자원으로 표현된다. URI는 /getUsers(사용자들을 가져온다) 같은 동사가 아니라 /users(사용자들) 같은 명사여야 한다.
    • HTTP 메소드 활용: 자원에 대한 행위는 GET(조회) POST(생성) PUT(전체 수정) DELETE(삭제) 같은 HTTP 동사로 표현한다.
    • 자기 서술적 메시지: 모든 요청과 응답은 그 자체만으로도 의미를 완벽하게 이해할 수 있어야 한다.

    3. RESTful API란 무엇인가

    결론적으로 RESTful API란 위에서 설명한 REST 아키텍처의 규칙을 충실하게 지켜서 설계된 API를 의미한다.

    "REST라는 메뉴판 제작 가이드라인을 잘 따라서 만든 좋은 메뉴판"이라고 할 수 있다.

    RESTful API의 장점

    • 단순함과 가독성: /users/1 이라는 주소만 봐도 "1번 사용자의 정보를 다루는구나"라고 쉽게 이해할 수 있다.
    • 확장성: 무상태(Stateless) 특징 덕분에 서버를 쉽게 늘릴 수 있어 대규모 트래픽에 대응하기 좋다.
    • 재사용성: 클라이언트와 서버가 완전히 분리되어 있어 다양한 종류의 클라이언트(웹 앱 모바일 앱 등)가 하나의 API를 함께 사용할 수 있다.

    마무리하며

    REST는 어떤 기술이나 표준이 아니라 아키텍처를 설계하는 '스타일' 또는 '철학'에 가깝다. 이 철학을 잘 이해하고 API를 설계하면 더 유연하고 확장 가능하며 이해하기 쉬운 시스템을 만들 수 있다.

    이제 "RESTful하게 API를 설계해야 한다"는 말의 의미가 명확해졌을 것이다.

    댓글