
웹 백엔드
최근 수정 시각:
백엔드(프로그래밍)에서 넘어옴
Web Back-end
웹 프로그래밍의 한 분야. 웹에서 사용자의 행동을 처리하고, 정보를 저장, 관리, 전달하며, 서버와 데이터베이스를 관리한다. 반대말은 웹 프론트엔드.
일반적인 소프트웨어 구조 용어로서는 사용자 눈앞(Front)에 보이는 웹사이트나 앱 등의 사용자 인터페이스(UI) 개발을 프론트엔드라고 부르고 눈앞에 보이지 않으며 웹사이트의 뒤 단(Back)을 개발한다고 백엔드라고 부른다. 여기에 파생되어 웹 분야에서 서버를 통해 작동되는 영역을 '웹 백엔드'라고 부른다.
웹 프로그래밍의 한 분야. 웹에서 사용자의 행동을 처리하고, 정보를 저장, 관리, 전달하며, 서버와 데이터베이스를 관리한다. 반대말은 웹 프론트엔드.
일반적인 소프트웨어 구조 용어로서는 사용자 눈앞(Front)에 보이는 웹사이트나 앱 등의 사용자 인터페이스(UI) 개발을 프론트엔드라고 부르고 눈앞에 보이지 않으며 웹사이트의 뒤 단(Back)을 개발한다고 백엔드라고 부른다. 여기에 파생되어 웹 분야에서 서버를 통해 작동되는 영역을 '웹 백엔드'라고 부른다.
백엔드란, 요청을 받는 서버 프로그램을 지칭하며, 이 프로그램을 작성하는 개발자를 백엔드 개발자라고 한다. 백엔드 개발자는 프론트엔드, 백엔드의 완전한 분리 구조를 지향하는 업무 스타일의 개발 방식으로 백엔드의 DB와 API 서버 개발을 맡는다.
백엔드와 다른 방식의 업무 스타일 직군으로는 웹 퍼블리셔(UI 개발)와 개발자(서버 개발자)의 업무 분리 방식이 있다. 이 경우는 주로 서버사이드가 클라이언트를 감싸는 방식이고, 전반적인 비지니스 로직은 개발자가 맡는다. MVC에서 Model, Controller가 백엔드의 소관이다.
백엔드 개발자도 기존 개발자와 스펙이 조금 다르고, 백 단에서 모든 작업을 완료해야 하며, 데이터베이스 분석과 API서버를 개발한다. 프론트 엔드에서 전달된 데이터의 포맷이나 데이터베이스 입출력 및 다양한 비즈니스 프로세스를 프로그래밍 코드로 구현하는 역할을 한다. 데이터베이스, 웹 서버, 네트워킹 등 웹 서버의 인프라에 대한 이해가 필요하다.
일반적으로 클라이언트에서 들어온 요청을 효율적으로 DB에 쿼리하여, 응답할 수 있는 코드를 작성하는 것이 주 업무이며 널리 쓰이는 언어로는 Java[1], PHP[2], C#[3]등이 있는데 요즘은 JavaScript도 Node.js를 통해 사용이 가능하게 되었다.[4] 다만 백엔드 단의 설계 개념은 jdbc를 비롯 자바에서 나온 경우가 많기에 자바를 사용하지 않더라도 배워두고 알아두면 유용하다. 이외에도 Python[5]이나 Ruby[6], Go, Rust를 사용하는 경우도 있지만 국내에서는 찾기가 힘들기에 해외 취업을 노린다면 이러한 언어들도 고려할만한 대상이다.
보통 이런 언어를 다루고 SQL을 통해 하나 이상의 RDBMS를 다룰 수 있어야 업무가 가능하다.[7] 고급 개발자로 갈수록 DB관리 및 성능튜닝, 서버에 대한 직접적인 관리 능력이 요구되며 ERP나 금융계열 회사로 취업할 경우 비즈니스 로직을 이해하는 것이 상당히 중요해진다.
풀스택 개발자를 제외하면 주로 백엔드 개발자들의 평균 연봉이 프런트 대비 상대적으로 조금씩 높아지는 경향이 있다. 하지만 개발자는 같은 직종이라도 능력치나 회사에 따라 케바케가 극심하게 갈리기 때문에 단순히 이것만 보고 백엔드를 선택하지는 말자. 자칫하면 멋 모르고 SI로 끌려갈 수도 있다.
백엔드와 다른 방식의 업무 스타일 직군으로는 웹 퍼블리셔(UI 개발)와 개발자(서버 개발자)의 업무 분리 방식이 있다. 이 경우는 주로 서버사이드가 클라이언트를 감싸는 방식이고, 전반적인 비지니스 로직은 개발자가 맡는다. MVC에서 Model, Controller가 백엔드의 소관이다.
백엔드 개발자도 기존 개발자와 스펙이 조금 다르고, 백 단에서 모든 작업을 완료해야 하며, 데이터베이스 분석과 API서버를 개발한다. 프론트 엔드에서 전달된 데이터의 포맷이나 데이터베이스 입출력 및 다양한 비즈니스 프로세스를 프로그래밍 코드로 구현하는 역할을 한다. 데이터베이스, 웹 서버, 네트워킹 등 웹 서버의 인프라에 대한 이해가 필요하다.
일반적으로 클라이언트에서 들어온 요청을 효율적으로 DB에 쿼리하여, 응답할 수 있는 코드를 작성하는 것이 주 업무이며 널리 쓰이는 언어로는 Java[1], PHP[2], C#[3]등이 있는데 요즘은 JavaScript도 Node.js를 통해 사용이 가능하게 되었다.[4] 다만 백엔드 단의 설계 개념은 jdbc를 비롯 자바에서 나온 경우가 많기에 자바를 사용하지 않더라도 배워두고 알아두면 유용하다. 이외에도 Python[5]이나 Ruby[6], Go, Rust를 사용하는 경우도 있지만 국내에서는 찾기가 힘들기에 해외 취업을 노린다면 이러한 언어들도 고려할만한 대상이다.
보통 이런 언어를 다루고 SQL을 통해 하나 이상의 RDBMS를 다룰 수 있어야 업무가 가능하다.[7] 고급 개발자로 갈수록 DB관리 및 성능튜닝, 서버에 대한 직접적인 관리 능력이 요구되며 ERP나 금융계열 회사로 취업할 경우 비즈니스 로직을 이해하는 것이 상당히 중요해진다.
풀스택 개발자를 제외하면 주로 백엔드 개발자들의 평균 연봉이 프런트 대비 상대적으로 조금씩 높아지는 경향이 있다. 하지만 개발자는 같은 직종이라도 능력치나 회사에 따라 케바케가 극심하게 갈리기 때문에 단순히 이것만 보고 백엔드를 선택하지는 말자.
백엔드 개발자는 기존 개발자라 불리는 스펙과 방식이 약간 다르다. 프로그래밍, 데이터베이스, 웹 서버, 네트워크, 인프라 등에 대한 기술이 필요하다.
백엔드 개발은 API 개발이 주가 된다. 프론트에서 요구하는 데이터의 포맷이나 데이터베이스 입출력 및 다양한 비즈니스 프로세스를 코드로 구현하고 이를 위한 DB를 설계하고 백엔드 프레임워크를 이용하여 앱을 구현하는 것이 주요 업무다. 여기에 백엔드 프레임워크와 프론트엔드 서버를 이어주는 서블릿, WSGI 등의 미들웨어 기술도 필요하다. API 명세를 설계하고 실제 배포 단계에서 최대한 문제가 발생하지 않도록 체계적으로 구성하는 능력도 필요하다.
핵심은 DB에 담겨진 정보를 프론트엔드에서 활용할 수 있도록 여러 API들을 개발하는 것이 핵심이라고 볼 수 있다. 백엔드와 프론트엔드를 모두 다룰 줄 아는 개발자를 일컬어 풀 스택 개발자라고 한다.
사실 '인터페이스'라는 것은 서로 다른 애플리케이션을 이어주는 가교 역할을 하는 것이므로 웹 개발 뿐만 아니라 시스템 프로그래밍과 같은 타 분야의 백엔드에서도 하는 것은 본질적으론 동일하다. 차이가 있다면 웹 개발에서는 최종적으로 구현된 API들을 Vue.js나 React 같은 프론트엔드 프레임워크가 사용하는 것이고 시스템 프로그래밍에서는 다른 프로그램이 사용할 뿐이다. 백엔드는 거기에 필요한 데이터를 DB에서 꺼내고 JSON 또는 XML 형태의 표준 데이터 포맷으로 잘 보내주기만 하면 된다.
백엔드 개발은 API 개발이 주가 된다. 프론트에서 요구하는 데이터의 포맷이나 데이터베이스 입출력 및 다양한 비즈니스 프로세스를 코드로 구현하고 이를 위한 DB를 설계하고 백엔드 프레임워크를 이용하여 앱을 구현하는 것이 주요 업무다. 여기에 백엔드 프레임워크와 프론트엔드 서버를 이어주는 서블릿, WSGI 등의 미들웨어 기술도 필요하다. API 명세를 설계하고 실제 배포 단계에서 최대한 문제가 발생하지 않도록 체계적으로 구성하는 능력도 필요하다.
핵심은 DB에 담겨진 정보를 프론트엔드에서 활용할 수 있도록 여러 API들을 개발하는 것이 핵심이라고 볼 수 있다. 백엔드와 프론트엔드를 모두 다룰 줄 아는 개발자를 일컬어 풀 스택 개발자라고 한다.
사실 '인터페이스'라는 것은 서로 다른 애플리케이션을 이어주는 가교 역할을 하는 것이므로 웹 개발 뿐만 아니라 시스템 프로그래밍과 같은 타 분야의 백엔드에서도 하는 것은 본질적으론 동일하다. 차이가 있다면 웹 개발에서는 최종적으로 구현된 API들을 Vue.js나 React 같은 프론트엔드 프레임워크가 사용하는 것이고 시스템 프로그래밍에서는 다른 프로그램이 사용할 뿐이다. 백엔드는 거기에 필요한 데이터를 DB에서 꺼내고 JSON 또는 XML 형태의 표준 데이터 포맷으로 잘 보내주기만 하면 된다.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
프로그래밍에서 이야기하는 백엔드의 정의와 달리, 제안 또는 기획 단계에서 백엔드는 관리자 페이지를 이야기하는 경우도 있다. 하지만 관리자 페이지마저도 백엔드, 프론트엔드가 분리될 수 있는 소프트웨어이기 때문에 매우 잘못된 용례이며 백오피스 라는 적합한 단어가 존재한다.
[1] Spring[2] Laravel[3] ASP.NET에서 최근에는 Blazor로 전환 중. Microsoft와 관계된다면 이쪽을 쓰는 것이 Azure 등과 연계하는 데에 있어 좋다.[4] 노드 기반은 JS로 프론트엔드와 백엔드를 모두 관리할 수 있다는 장점이 있지만, 태생이 JS이기에 단점도 만만치 않다. 최근에는 민간 기업들, 그중에서도 개발 비용을 줄이는 것이 중요한 스타트업에서 주로 사용하는 경향이다.[5] Flask, Django, FastAPI[6] Ruby on Rails[7] 말이 하나 이상이지 실전에선 가능한 많은 DB를 다뤄야 한다. 솔루션을 하나만 가진 사람과 여러 개를 가진 사람의 차이는 비교가 불가능하다. 따라서 SQL을 안다고 데이터베이스를 잘 안다고 생각하면 크나큰 오산이다. 데이터베이스는 기본 이론부터가 두께가 엄청나며, 실전에서 구현하는 쿼리 및 아키텍처 그리고 PostgreSQL과 같은 비슷한 언어들과 다양한 NoSQL까지 할 줄 알아야 그나마 데이터베이스를 다뤄보았구나 평가를 받는다. 다시 말하지만 이것이 신입 풀스택 개발자의 기본 전제 조건이다. 일부 분야에서는 이더켓과 같은 네트워크 통신 분야에 대한 이해도 필요하다. 어차피 풀스택이 되는 과정에서 누구나 겪는 길이긴 하지만.
![]()
이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외)
기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다.
나무위키는 백과사전이 아니며 검증되지 않았거나, 편향적이거나, 잘못된 서술이 있을 수 있습니다.
나무위키는 위키위키입니다. 여러분이 직접 문서를 고칠 수 있으며, 다른 사람의 의견을 원할 경우 직접 토론을 발제할 수 있습니다.