백엔드 개발 공부, Django로 ‘4개월’이면 가능해요
#소프트웨어 

예비 백엔드 개발자를 위한 개발 용어 정리

이 글에서는 백엔드 개발에 자주 등장하는 용어들을 알기 쉽게 정리해 보았습니다. API, 서버, 데이터베이스 에 대하여 기초적인 개념을 설명하고자 합니다.

2024-04-18 | 김성혁

백엔드 개발 용어

개발 과정에서 마주치게 되는 다양한 용어들을 이해하는 것은 프로젝트를 원활하게 진행하는 데 큰 도움이 됩니다. 이 글을 통해 API, 서버, 데이터베이스 에 대하여 기초적인 개념을 설명하고자 합니다.

1. API

Application Programming Interface, 즉 애플리케이션 프로그래밍 인터페이스는 소프트웨어나 프로그램이 서로 상호작용할 수 있도록 도와주는 도구입니다. 예를 들어, 여러분이 스마트폰으로 날씨 앱을 사용할 때, 그 앱은 날씨 정보를 제공하는 서버와 통신해야 하는데, 이때 API가 중간에서 정보의 교환을 가능하게 해줍니다. 즉, API는 다른 시스템이나 애플리케이션의 기능을 사용할 수 있게 해주는 ‘메신저’ 역할을 합니다. 이를 통해 개발자들은 새로운 애플리케이션을 더 쉽고 빠르게 만들 수 있습니다.

Endpoint

API가 호스팅되는 서버의 특정 URL 주소입니다. 이 주소를 통해 API와 통신할 수 있으며, 각각의 endpoint는 서버의 특정 기능이나 자원에 접근할 수 있게 해줍니다. 예를 들어, 소셜 미디어 앱의 API에서 사용자의 프로필 정보를 가져오는 endpoint는 하나의 주소(URL)를 가지며, 이 주소로 요청을 보내면 해당 사용자의 프로필 데이터를 응답으로 받을 수 있습니다. 간단히 말해, endpoint는 API를 통해 데이터를 주고받기 위한 접근 지점입니다.

Request

클라이언트(예: 웹 브라우저, 애플리케이션)가 서버에 특정 정보를 요청하거나 서버에 어떤 작업을 수행하도록 요청하는 과정을 말합니다. 이때 클라이언트는 서버의 특정 endpoint에 접근하여 데이터를 요청하거나 서버에 명령을 내릴 수 있습니다. 예를 들어, 웹 페이지에서 사용자가 뉴스 기사를 읽기 위해 클릭하면, 브라우저는 해당 뉴스 기사의 내용을 서버에 요청하고, 서버는 요청 받은 정보를 클라이언트에게 보내줍니다. 이러한 요청과 응답 과정을 통해 사용자는 원하는 정보를 얻게 됩니다.

Response

서버가 클라이언트의 요청(Request)에 대해 보내는 답변입니다. 이 응답에는 요청된 데이터, 상태 코드, 오류 메시지 등이 포함될 수 있습니다. 예를 들어, 웹사이트에서 어떤 페이지를 열려고 할 때, 서버는 해당 페이지의 HTML 파일과 필요한 정보를 포함한 응답을 브라우저에 보냅니다. 이러한 응답을 통해 클라이언트는 자신의 요청이 성공적이었는지, 문제가 있었는지 알 수 있으며, 요청한 데이터를 사용자에게 보여줄 수 있습니다. 간단히 말하면, response는 서버가 클라이언트의 요청에 어떻게 대응했는지를 알려주는 메시지입니다.

HTTP Methods

HTTP 메소드는 웹에서 데이터를 주고받을 때 사용하는 방법을 정의합니다. 주로 사용되는 HTTP 메소드는 다음과 같습니다:

  1. GET: 서버에서 정보를 조회할 때 사용합니다. 예를 들어, 뉴스 사이트에서 기사를 읽을 때 GET 요청이 이루어집니다.
  2. POST: 서버에 정보를 생성하거나 제출할 때 사용합니다. 예를 들어, 회원 가입 양식을 제출하거나 새로운 게시물을 작성할 때 POST 요청이 사용됩니다.
  3. PUT: 서버에 저장된 정보를 업데이트하거나 교체할 때 사용합니다. 예를 들어, 사용자 프로필 정보를 수정할 때 PUT 요청이 이루어질 수 있습니다.
  4. DELETE: 서버에서 정보를 삭제할 때 사용합니다. 예를 들어, 사용자가 자신의 계정을 삭제하거나 게시물을 제거할 때 DELETE 요청을 보냅니다.

이 메소드들은 웹 상에서 정보의 생성, 읽기, 수정, 삭제와 같은 다양한 작업을 수행하는 데 필수적입니다. 이를 통해 웹 애플리케이션은 사용자의 요구에 맞춰 적절한 반응을 할 수 있습니다.

JSON

JavaScript Object Notation, 데이터를 저장하고 전송하기 위해 사용되는 경량의 데이터 포맷입니다. JSON은 사람이 읽고 쓰기 쉬울 뿐만 아니라 기계가 파싱하고 생성하기에도 효율적입니다. 이 포맷은 데이터를 이름과 값의 쌍으로 구성된 객체, 또는 값의 순차적인 배열로 표현합니다. 예를 들어, 웹 서비스가 서버에서 클라이언트로 데이터를 보낼 때, JSON 포맷을 사용해 텍스트 형식으로 정보를 전송하고, 클라이언트는 이를 쉽게 해석하고 사용할 수 있습니다. JSON은 웹 개발에서 데이터를 다루는 표준 방식으로 널리 사용됩니다.

REST

Representational State Transfer는 웹 API를 디자인하는 데 사용되는 아키텍처 스타일입니다. 이 접근 방식은 네트워크 기반의 애플리케이션에서 리소스(데이터나 서비스)의 상태를 표현하는 데 초점을 맞춥니다. RESTful API는 인터넷의 기본 프로토콜인 HTTP를 이용하여 데이터를 전송하며, 주로 GET, POST, PUT, DELETE와 같은 표준 HTTP 메소드를 사용합니다. 이러한 API는 사용하기 쉽고 이해하기 쉬운 구조로, 개발자들이 웹에서 다양한 리소스에 접근하고 조작할 수 있게 도와줍니다. 예를 들어, 웹 사이트에서 사용자 정보를 조회, 추가, 수정, 삭제하는 동작 모두 RESTful API를 통해 처리될 수 있습니다. 이는 웹의 단순성과 확장성을 유지하며 효율적인 인터랙션을 가능하게 합니다.

2. 서버(Server)

네트워크 상에서 데이터나 서비스를 제공하는 컴퓨터나 소프트웨어 시스템입니다. 사용자가 웹 브라우저나 애플리케이션을 통해 정보를 요청할 때, 서버는 그 요청을 받아 처리하고 필요한 데이터를 사용자에게 돌려줍니다. 예를 들어, 웹사이트를 방문할 때마다, 웹서버는 요청받은 웹 페이지의 내용을 사용자의 컴퓨터나 스마트폰으로 전송합니다. 서버는 이처럼 데이터를 저장하고 관리할 뿐만 아니라, 사용자의 요청에 따라 다양한 작업을 수행하며, 이 모든 과정은 네트워크를 통해 이루어집니다.

클라이언트 (Client)

네트워크에서 서버에 데이터나 서비스를 요청하는 사용자의 컴퓨터나 장치를 말합니다. 이를테면 웹 브라우저, 스마트폰 앱, 또는 기타 소프트웨어가 클라이언트 역할을 할 수 있습니다. 예를 들어, 인터넷을 통해 영화를 스트리밍하거나 이메일을 확인할 때, 사용자의 장치는 클라이언트가 되어 영화나 이메일 데이터를 제공하는 서버에 접속하여 필요한 정보를 요청하고 받아옵니다. 클라이언트는 이런 식으로 서버와의 통신을 통해 사용자가 필요로 하는 데이터나 서비스를 받아 사용합니다.

데이터베이스 (Database)

다양한 데이터를 체계적으로 저장하고 관리하는 시스템입니다. 데이터베이스를 사용하면 사용자가 정보를 쉽게 검색, 추가, 수정, 삭제할 수 있습니다. 예를 들어, 도서관의 도서 목록, 온라인 상점의 제품 정보, 회사의 고객 정보 등이 데이터베이스에 저장됩니다. 이를 통해 필요한 정보를 빠르게 찾아내고, 새로운 데이터를 추가하거나 기존 데이터를 업데이트할 수 있으며, 불필요한 정보를 제거하는 등의 작업이 가능해집니다. 데이터베이스는 정보를 효율적으로 관리하고 사용하는 데 중요한 역할을 합니다.

호스팅 (Hosting)

인터넷 상에서 웹사이트나 웹 애플리케이션을 사용할 수 있도록 서버 공간을 제공하는 서비스입니다. 이 서비스를 통해 개인이나 기업은 서버를 직접 구매하고 관리하지 않고도, 자신의 웹사이트를 인터넷에 게시하고 운영할 수 있습니다. 호스팅 제공업체는 웹사이트의 데이터를 저장하고, 필요한 기술 지원을 제공하며, 웹사이트가 인터넷에 계속 연결되어 있도록 도와줍니다. 사용자는 웹 호스팅 서비스를 이용함으로써 비용을 절감하고, 복잡한 서버 유지 관리에서 벗어날 수 있습니다.

IP 주소 (IP Address)

IP 주소, 즉 인터넷 프로토콜 주소는 인터넷상에서 컴퓨터나 다른 장치를 식별하는 데 사용되는 고유한 번호입니다. 마치 집 주소가 특정 집을 찾는 데 사용되듯이, IP 주소는 인터넷에서 각 장치의 위치를 찾는 데 사용됩니다. 이 주소를 통해 데이터는 올바른 목적지로 전송될 수 있으며, 인터넷에 연결된 모든 장치는 고유한 IP 주소를 가집니다. 예를 들어, 이메일을 보낼 때나 웹사이트에 접속할 때, 해당 장치의 IP 주소를 통해 데이터가 올바르게 전달됩니다.

포트 (Port)

포트는 컴퓨터나 서버에서 특정 서비스에 대한 접근 지점을 나타내는 숫자입니다. 인터넷이나 네트워크에서 데이터가 올바른 프로그램이나 서비스에 도달하도록 도와주는 역할을 합니다. 예를 들어, 웹 서버는 주로 80번 포트(HTTP) 또는 443번 포트(HTTPS)를 사용하여 웹 페이지 요청을 처리합니다. 이와 같이 각 포트 번호는 특정한 유형의 통신이나 서비스를 위해 예약되어 있으며, 여러 서비스가 한 컴퓨터에서 동시에 실행될 때 각각 다른 포트를 사용하여 서로 간섭하지 않고 독립적으로 작동할 수 있습니다.

프로토콜 (Protocol)

컴퓨터나 장치들이 서로 통신할 때 지켜야 할 규칙이나 표준을 말합니다. 이러한 규칙은 데이터가 어떻게 전송되어야 하는지, 데이터 포맷은 어떻게 되어야 하는지, 그리고 에러가 발생했을 때 어떻게 처리해야 하는지 등을 정의합니다. 예를 들어, 인터넷에서는 HTTP(HyperText Transfer Protocol)라는 프로토콜을 사용하여 웹 페이지 정보를 주고받습니다. 이처럼 프로토콜은 네트워크 상에서 데이터 교환을 원활하게 하고, 다양한 기술과 장치가 서로 효과적으로 소통할 수 있도록 돕습니다.

로드 밸런싱 (Load Balancing)

네트워크 트래픽이나 요청을 여러 서버에 고르게 분산시켜 각 서버에 가해지는 부하를 줄이는 기술입니다. 이를 통해 서버 하나에 과부하가 걸리는 것을 방지하고, 서버가 다운되는 상황을 피할 수 있습니다. 예를 들어, 대규모 온라인 쇼핑몰에서는 특정 이벤트나 세일 기간 동안 방문자 수가 급증하는데, 로드 밸런싱을 사용함으로써 이러한 많은 요청을 여러 서버에 분산시켜 각각의 서버가 안정적으로 작동할 수 있도록 합니다. 결과적으로, 로드 밸런싱은 웹사이트의 응답 시간을 개선하고 사용자에게 더 나은 서비스를 제공하는 데 중요한 역할을 합니다.

가상화 (Virtualization)

물리적인 하드웨어 리소스를 다수의 가상 단위로 분리하는 기술입니다. 이를 통해 하나의 물리적 서버를 여러 개의 독립적인 가상 서버로 나눌 수 있으며, 각 가상 서버는 별도의 운영 체제와 애플리케이션을 실행할 수 있습니다. 가상화를 사용하면 하드웨어 사용 효율을 극대화하고, 여러 다른 작업을 동시에 처리할 수 있으며, 시스템 관리와 데이터 백업을 보다 간편하게 할 수 있습니다. 예를 들어, 하나의 서버에서 여러 운영 체제를 동시에 운영하거나, 개발 환경과 테스트 환경을 분리하여 운영하는 것이 가능해집니다. 가상화는 자원을 효율적으로 관리하고 비용을 절감하는 데 크게 기여합니다.

3. 데이터베이스 (Database)

데이터베이스는 다양한 데이터를 체계적으로 저장하고 관리하는 시스템입니다. 데이터베이스를 사용하면 사용자가 정보를 쉽게 검색, 추가, 수정, 삭제할 수 있습니다. 예를 들어, 도서관의 도서 목록, 온라인 상점의 제품 정보, 회사의 고객 정보 등이 데이터베이스에 저장됩니다. 이를 통해 필요한 정보를 빠르게 찾아내고, 새로운 데이터를 추가하거나 기존 데이터를 업데이트할 수 있으며, 불필요한 정보를 제거하는 등의 작업이 가능해집니다. 데이터베이스는 정보를 효율적으로 관리하고 사용하는 데 중요한 역할을 합니다.

테이블 (Table)

데이터베이스 내에서 데이터를 구조화하여 저장하는 주요 단위입니다. 테이블은 행과 열로 구성되어 있으며, 각 행은 데이터의 한 항목 또는 레코드를 나타내고, 각 열은 해당 데이터 항목의 특정 속성을 나타냅니다. 예를 들어, 학교의 학생 정보를 저장하는 테이블이 있다면, 각 행은 한 명의 학생 정보를 나타내고, 열은 이름, 학번, 전공 등의 학생 속성을 표시할 수 있습니다. 이렇게 구조화된 형태로 데이터를 저장함으로써, 필요한 정보를 쉽고 빠르게 검색하고 관리할 수 있습니다.

행 (Row)

행(또는 레코드)은 데이터베이스 테이블에서 하나의 데이터 항목을 나타냅니다. 각 행은 테이블의 열에 정의된 속성에 따라 여러 데이터 필드를 포함할 수 있습니다. 예를 들어, 직원 정보를 저장하는 테이블에서 한 행은 한 명의 직원에 대한 정보, 즉 이름, 주소, 전화번호 등의 개별 데이터를 모두 포함할 수 있습니다. 이렇게 각 행은 테이블 내에서 유일하게 식별할 수 있는 개별적인 정보 세트를 제공하며, 다양한 조작이나 검색의 대상이 됩니다.

열 (Column)

열(또는 필드)은 데이터베이스 테이블에서 특정 종류의 데이터 값을 나타내는 속성입니다. 모든 행에 공통적으로 나타나는 이 열은 테이블에서 데이터를 구분하고 정리하는 데 중요한 역할을 합니다. 예를 들어, 직원 목록을 저장하는 테이블에서 ‘이름’, ‘주소’, ‘전화번호’와 같은 각 열은 해당 정보를 저장하는 공간을 제공합니다. 따라서 테이블의 모든 행은 이러한 열의 구조를 따라 동일한 종류의 정보를 각각 포함하게 됩니다. 이렇게 열을 통해 데이터베이스는 정보를 체계적으로 관리하고 필요한 데이터를 쉽게 찾을 수 있도록 도와줍니다.

기본 키 (Primary Key)

데이터베이스의 테이블에서 각 행을 고유하게 식별할 수 있는 필드입니다. 기본 키로 지정된 필드의 값은 테이블 내에서 중복될 수 없으며, 각 행이 서로 다르게 식별될 수 있도록 해줍니다. 예를 들어, 학생 정보를 저장하는 테이블에서는 학생의 학번을 기본 키로 사용할 수 있습니다. 이 학번은 각 학생마다 고유하므로, 테이블에서 특정 학생의 데이터를 정확하게 찾아내거나 참조할 때 기본 키로 활용됩니다. 기본 키는 데이터의 무결성을 유지하고 데이터를 효과적으로 관리하는 데 중요한 역할을 합니다.

외래 키 (Foreign Key)

한 테이블의 필드(또는 필드의 조합)가 다른 테이블의 기본 키를 참조하여 두 테이블 사이의 관계를 맺는 데 사용됩니다. 이를 통해 데이터베이스 내의 다른 테이블 간에 데이터의 연결성과 일관성을 유지할 수 있습니다. 예를 들어, 학생 테이블과 성적 테이블이 있을 때, 성적 테이블에서 학생 테이블의 학번을 외래 키로 사용하면, 각 성적 데이터가 어떤 학생에게 속하는지 명확하게 할 수 있습니다. 외래 키를 사용함으로써 데이터 간의 관계를 정확히 정의하고, 데이터의 무결성을 보호하는 데 중요한 역할을 합니다.

인덱스 (Index)

데이터베이스에서 데이터 검색 속도를 빠르게 하기 위해 사용되는 데이터 구조입니다. 인덱스는 테이블의 특정 열에 대한 포인터들을 포함하고 있으며, 이를 통해 데이터베이스가 테이블 전체를 스캔하지 않고도 효율적으로 데이터를 찾을 수 있게 도와줍니다. 예를 들어, 책의 색인과 같이, 인덱스를 사용하면 데이터베이스는 필요한 정보가 어디에 있는지 빠르게 찾아갈 수 있습니다. 이는 특히 큰 데이터베이스에서 데이터 검색과 관리의 효율성을 크게 향상시키는 중요한 기능입니다.

SQL (Structured Query Language)

SQL (Structured Query Language)은 데이터베이스에서 데이터를 관리하고 조작하기 위해 사용되는 표준 프로그래밍 언어입니다. SQL을 통해 사용자는 데이터를 검색, 추가, 수정, 삭제할 수 있고, 데이터베이스 구조를 생성하거나 변경할 수도 있습니다. 예를 들어, 특정 조건을 만족하는 데이터를 찾거나 새로운 데이터를 입력하고, 테이블 구조를 수정하는 작업 등을 SQL 명령어를 통해 수행할 수 있습니다. 데이터베이스의 효율적인 사용과 관리에 있어 SQL은 필수적인 도구로 광범위하게 사용됩니다.

정규화 (Normalization)

데이터베이스를 설계하는 과정에서 데이터 중복을 최소화하고 데이터 무결성을 보장하기 위해 데이터를 구조화하는 방법입니다. 정규화를 통해 각 데이터 항목이 적절한 테이블에 위치하도록 하고, 각 테이블에서 데이터가 중복되지 않도록 구성함으로써, 데이터베이스의 효율성을 높이고 유지 관리를 용이하게 합니다. 예를 들어, 사용자 정보와 주문 정보를 저장하는 테이블을 분리하여 각 테이블이 서로 다른 목적의 데이터만을 담당하도록 할 수 있습니다. 이는 데이터 갱신 시 발생할 수 있는 오류를 줄이고, 데이터 관리를 보다 체계적으로 할 수 있게 도와줍니다.

트랜잭션 (Transaction)

트랜잭션(Transaction)은 데이터베이스에서 하나의 논리적 작업 단위를 말합니다. 여러 작업이 포함될 수 있는데, 이들 작업은 모두 함께 성공적으로 완료되거나, 하나라도 실패할 경우 전체가 취소되어야 합니다. 이를 통해 데이터의 일관성과 무결성을 유지할 수 있습니다. 예를 들어, 은행에서 한 계좌에서 다른 계좌로 돈을 이체하는 과정을 생각해보세요. 이 과정에서 돈을 빼는 작업과 입금하는 작업이 모두 성공해야만 최종적으로 이체가 완료됩니다. 만약 한 작업에서 오류가 발생하면, 이전에 진행된 모든 작업은 취소되어 원래 상태로 복구됩니다. 이처럼 트랜잭션은 데이터베이스에서 안전하게 데이터를 처리하는 데 필수적인 기능입니다.