백엔드
백엔드(back end)란 컴퓨터와 응용 프로그램 또는 컴퓨터와 데이터베이스 사이의 인터페이스(I/F) 부분을 말한다. '뒷단' 또는 '백단'(back端, 빽단)이라고 부른다. 응용 프로그램, DBMS, 운영체제, 웹서버, WAS 등이 있다. 반대말은 프런트엔드(front end) 또는 앞단이다.
목차
개요
백엔드는 일반 사용자 눈에 보이지 않는 서버에서 작용하는 기술을 다루는 직군으로, UI나 GUI로 구성된 화면의 통신 및 요청에 대하여 인터페이스나 데이터베이스 등을 통해 시스템 구성 실체에 접근한다. 후위 처리라고도 부른다. 프런트엔드와 함께 연동되어, 사용자와 접촉하지 않고 기술적인 부분을 처리한다. 프런트엔드가 가능하도록 데이터를 저장하고 서버를 구축하는 일을 맡는다.[1] 백엔드는 서버와 응용 프로그램, 데이터베이스로 구성되어 있으므로, 백엔드 개발자는 이 구성요소들이 잘 작동할 수 있도록 기술의 개발과 유지보수를 진행한다.
차이점
프런트엔드와 백엔드는 프로그램 인터페이스와 서비스의 최초 사용자와 관련된 특성을 나타내는 데 사용되는 용어로, 사람 또는 프로그램을 사용자라고 칭한다. 백엔드와 프런트엔드의 차이를 비교해보자면, 용어부터 일반적으로 프런트엔드와 백엔드는 각각 프로세스의 처음과 마지막 단계를 가리킨다. 클라이언트 서버 컴퓨팅 모델과 비교하자면 프런트엔드는 클라이언트에, 백엔드는 서버에 비유할 수 있다.[2]
- 프런트엔드
- 사용자로부터 다양한 형태의 입력을 받아 백엔드가 사용할 수 있는 규격을 따라 처리할 책임을 진다.
- 하나 또는 하나 이상의 사용자와 직접 상호작용을 하는 프로그램이다.
- 사용자와 직접 인터페이스 할 수 있고, 필요한 데이터를 얻거나 요구한 서비스를 수행하기 위해 다른 컴퓨터로 위치한 백엔드 프로그램으로 사용자의 요구를 전달한다.
- 백엔드
- 클라이언트와 직접 접촉하지 않고 프런트엔드 프로그램과 연동하여 기술적인 기능을 수행하는 프로그램
- 백엔드 없이는 UI는 프로세스 형태로만 존재하며, 프런트엔드는 UI를 가지고 동작한다.
- 대체로 요구 자원들과 가깝게 위치하거나 요구 자원들과 충분히 교신할 수 있는 능력을 갖추는 등 프런트 엔드 서비스를 뒤에서 전반적으로 지원하는 역할
- 프런트엔드와 직접 상호작용할 수 있지만, 보통은 그사이에 또 다른 프로그램이 함께 위치하여 프런트엔드와 백엔드 간의 업무를 조정한다.
- 프런트엔드가 가능하도록 데이터를 저장하고 서버를 구축하는 역할을 맡는다. 서버, 응용 프로그램, 데이터베이스로 구성되며, 백엔드 개발자는 이 구성요소들이 작동할 수 있도록 기술의 개발과 유지보수를 맡는다.
역사
2000년대 닷컴 붐이 일어나 많은 회사가 생기면서 웹 시스템과 관련된 기술들이 등장하고 발전했다. 이때의 웹 서버는 단순히 웹 브라우저가 요청하는 해당 페이지를 보내주는 일을 했다. 그러나 시간이 흘러 자연스럽게 사용자와 웹페이지에서의 동적인 상호작용이 중요해지자, 단순했던 웹 서비스들이 조금씩 복잡해지고 자바스크립트의 역할이 증가하는 등 사용자 인터랙션이 중요해졌다. 웹서버가 HTML뿐만 아니라 자바스크립트 코드도 웹 브라우저에 전송하면 웹브라우저는 서버에서 전송받은 자바스크립트 코드를 실행하여 사용자에게 동적인 기능을 제공한다. 이를 통해 전체 페이지를 불러오지 않아도 사용자의 요구를 동적으로 처리하고 새로운 데이터를 제공할 수 있게 되었다. 자바스크립트가 HTML 파일의 일부분이라 웹사이트가 부분적으로 동적이었던 과거와 달리, 자바스크립트가 HTML의 생성부터 사이트에 관한 전반적인 부분을 구현하게 되었다. 현대에는 웹 시스템의 규모가 커지고 처리해야 하는 요청의 양이 기하학적으로 증가하여, API 시스템들이 너무 방대해지고 있다. 따라서 이러한 복잡한 문제들을 해결하기 위해 MSA 같은 새로운 아키텍처 개념이 발전하고 덕분에 API 서버가 더욱 세분되고 규모가 커졌다. 또, 서버에서 분석해야 할 데이터가 증가하여 많은 백엔드 시스템에 빅데이터 분석 시스템이 도입되었다. 현대의 백엔드 개발 영역은 일반적인 백엔드 API 시스템, 데이터 파이프라인 시스템, 머신러닝 시스템, 빅데이터 분석 시스템 등을 예로 들 수 있고, 비실시간 대규모 데이터 수집 및 분석 시스템과 머신러닝 시스템까지 개발 범위가 넓어지고 있다.[3]
개발
백엔드 개발은 사용자 인터페이스를 만들어내는 코드 작성과 관련 없는 전반적인 모든 개발을 일컫는다. 사용자의 육안에 들어오는 프런트엔드가 제대로 잘 작동할 수 있도록 최종 사용자의 눈에 보이지 않는 뒷단에서 백엔드 코드가 작성하는데, 세상에 존재하는 프로그래밍 코드의 대부분은 백엔드에서 작성되는 코드라고 할 수 있다. 백엔드 개발자가 하는 일은 다음과 같다.
- 비즈니스 이해 관계자와 소통하며 구체적인 요구 사항을 파악하고, 요구사항을 기술적인 내용으로 변환한다.
- 기술설계를 위한 가장 효율적인 해결책을 고안 및 제시한 후, 개발자의 기술을 사용하여 모듈화가 가능한 코드로 웹 응용 프로그램을 개발한다.
- 프런트엔드 개발자보다 알고리즘을 적용하고 문제를 해결하는 데 더 많은 시간을 사용한다.
전반적으로 프런트엔드, 백엔드의 완전한 분리 구조를 지향하는 업무 스타일의 개발을 지향하며, 주로 백엔드의 데이터베이스와 API 서버 개발을 맡는다. 이와 다른 방식의 업무 스타일 직군으로는 웹 퍼블리셔와 서버 개발자의 업무 분리 방식이 있다. 이 경우는 주로 서버 사이드가 클라이언트를 감싸는 방식이고, 전반적인 비즈니스 로직은 개발자가 맡는다. 뷰단은 화면단보다 API 개발이 더 주가 되며, 프런트엔트에서 전달한 데이터를 가지고 데이터베이스 입출력, 포맷, 다양한 비즈니스 프로세스를 프로그래밍 코드로 구현하는 역할을 해야 한다. 여기서 백엔드와 프런트엔드의 기술을 모두 다룰 줄 아는 개발자가 풀 스택 개발자이다.[4] 서버 개발에는 기술 면에서 프로그래밍, 데이터베이스, 웹 서버, 네트워크, 인프라 등에 대한 지식과 기술이 필요하다. 자신이 쓰는 기술 스택에 맞는 서버 측의 언어를 능숙하게 사용해야만 하며, 응용 프로그램을 제작하기 위해 PHP, Ruby, Python, Java 등의 언어가 사용된다. 프런트엔드 개발자가 HTML, CSS, 자바스크립트에 집중할 때 백엔드 개발자는 PHP 웹 구조, 루비 온 레일스, ASP.NET MVC를 비롯한 서버 측 웹 개발 구조에 집중한다. 또한, 데이터 검색, 저장, 변경 후에도 프론트엔드 코드로 사용자에게 다시 제공하기 위해 MySQL, Oracle, SQL Server 등이 기술이 사용된다.[5]
플랫폼
컴퓨팅 단위는 점차 감소함에 따라 개발자가 인프라 영역까지 개발하는 부담도 증가하여, 이를 대체하거나 도움을 주는 플랫폼들이 생겨나고 있다.
서버리스
IaaS와 PaaS의 다음 단계를 지칭하는 개념이다. 인프라와 플랫폼을 활용하는 실제 애플리케이션 개발자의 관점에서, 서버가 없어도 개발할 수 있다고 해서 서버리스(Serverless)라고 부른다. 정확히는 서버가 정말 없는 것이 아니라, 개발자가 과거에는 일일이 구축해야 했던 백엔드 기능들을 보이지 않는 서버인 클라우드로 불러와 사용하기 때문에 서버가 없다는 의미를 담아 붙여졌다. 서버리스는 2012년에 켄 프롬(Ken Fromm)이 처음 사용한 용어로, 2014년에 아마존 웹서비스의 람다(Lambda) 서비스가 시작되면서 널리 알려졌다. 람다는 서버리스를 공식적으로 사용한 최초의 상용 클라우드 서비스이며, 아마존 웹서비스의 모든 클라우드 서비스의 연결통로 역할을 한다. 람다를 사용하는 기업들은 애플리케이션이 작동되는 동안 인프라 비용만 지급하며, 람다를 통해 애플리케이션을 작은 단위의 함수로 나눠서 실행 요청이나 특정 이벤트 트리거가 일어났는지 유무를 기준으로 계산이 이뤄진다. 기업은 이를 통해 장치, 플랫폼, 웹 등에 상관없이 백엔드를 구축할 수 있고, API를 통해 클라우드에서 호출하기 때문에 개발자가 별도로 백엔드 서비스를 개발할 필요가 없기 때문에, 백엔드와 관련된 개발 시간을 절약할 수 있다. 켄 프롬은 서버리스의 배경에 대해 다음과 같은 말을 남겼다.
"클라우드 이전 시대에는 애플리케이션 개발자가 서버를 위해 예산을 책정하고, 연결하며, 전원 공급 장치, 냉각 장치를 구매·임대해야 했고, 데이터 센터까지 신경 써야 했다. 클라우드는 이런 문제를 해결했고 결국 서버가 사라졌다." - 켄 프롬
'서버가 없기'때문에, 애플리케이션 개발자와 서버 운영자는 사용자에게 제공해야 할 서비스의 본질적인 로직에만 집중해서 개발할 수 있다. 이는 대부분의 웹이나 모바일 앱 기반 서비스가 소비자가 접하는 UI나 인프라인 비즈니스 로직으로 구성되기 때문이다. 현재 서버리스 분야의 대표적인 주요 서비스로는 아마존의 람다, 마이크로소프트의 애저 함수, 구글의 클라우드 함수를 예로 들 수 있으며, 국내에서는 SK C&C가 클라우드제트 액션 같은 FaaS 플랫폼으로 서버리스 서비스를 제공하고 있고, 삼성SDS는 이스라엘의 이과지오(Iguazio)에 투자하여 직간접적으로 참여하고 있다. 이 중에서 가장 서버리스 서비스에 집중하고 있는 곳은 람다를 제공하는 아마존 웹서비스로, '아마존 웹서비스 리인벤트 2018' 행사에서 "서버리스는 현대 시스템에 가장 이상적인 환경'이라고 언급했다.[6]
아마존 웹서비스
아마존에서 개발한 상품으로, 서버는 고려하지 않고
https://aws.amazon.com/ko/serverless/
클라우드 제트
https://www.cloudz.co.kr/cloudz/cloudz_info
스카이허브
국내기업 ㈜디에스랩글로벌에서 개발한 상품으로, 코딩없이 클릭만으로 백엔드 서버를 구축할 수 있는 백엔드 자동화 기능을 제공한다. 코딩없이 각 데이터의 아키텍처를 추가하고 수정할 수 있으며, 통합된 대시보드에서 각 데이터의 현황을 실시간으로 확인할 수 있다. 사용자의 상황과 요청에 따라 커스터마이징 대시보드도 제공된다. 스카이허브를 통해 사용자의 백데이터에 맞는 데이터 관리 시스템도 구축한다. 스카이인사이트를 통해 백데이터를 이용하여 다양한 인사이트를 확보하며, 백데이터를 바탕으로 인사이트를 추출할 수 있는 차트 라이브러리를 제공한다. ㈜디에스랩글로벌에서는 스카이허브를 사용했을 때 백엔드 개발시 코딩 사용 횟수 0회, 절감되는 시간과 비용 85%, 시스템 교체 시 연동 가능성 100%, 추가 기능 개발 시 개발 속도는 4배라고 마케팅하고 있다. 동종업계의 다른 상품들과 다른 차별점은 맞춤형 백엔드 서비스를 제공하고 있다는 것이다. 사물인터넷, 학원 관리, 병원 관리 와같은 각종 관리 시스템이나, 발전소, 의료기기, 야생동물, 교통상황 등의 실시간 모니터링 시스템, 그리고 공장자동화, 앱 백데이터, 제조기기 관리 등 데이터 시스템까지 적용 가능한 폭이 넓다.[7][8]
노드제이에스
크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다. 비동기 이벤트를 주도하는 자바스크립트 런타임으로써, 노드제이에스는 확장성 있는 네트워크 애플리케이션을 만들 수 있도록 설계되었다. 다음 'hello world'예제는 다수의 연결을 동시에 처리하는 코드로, 각 연결에서 콜백을 실행하는데 실행할 작업이 없다면 노드제이에스는 대기한다.
01 const http = require('http'); 02 03 const hostname = '127.0.0.1'; 04 const port = 3000; 05 06 const server = http.createServer((req, res) => { 07 res.statusCode = 200; 08 res.setHeader('Content-Type', 'text/plain'); 09 res.end('Hello World'); 10 }); 11 server.listen(port, hostname, () => { 12 console.log(`Server running at http://${hostname}:${port}/`); 13 });
관련 용어
- 백엔드 프로세서 : 후위 처리 장치를 뜻한다.
- 백엔드 서비스(Backend as a Service) : 서비스형 백엔드 또는 바스(BaaS)라고도 부른다.
각주
- ↑ E.B_Mind, 〈Front-End ( 프론트 엔드 ) vs Back-End ( 백엔드 )〉, 《티스토리》, 2019-9-25
- ↑ 백엔드 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=3473496&cid=58439&categoryId=58439
- ↑ 송은우, 〈[2장 현대 웹 시스템 구조 및 아키텍처]〉, 《깔끔한 파이썬 탄탄한 백엔드》, 2019-01-25
- ↑ 백엔드 나무위키 - https://namu.wiki/w/%EB%B0%B1%EC%97%94%EB%93%9C
- ↑ ReadIT, 〈백엔드 개발이란 무엇인가〉, 《교보문고북뉴스》, 2019-05-30
- ↑ 석대건 기자, 〈'개발자는 개발만 하고 싶다'...서버리스, 백엔드 구축도 클라우드 시대〉, 《디지털투데이》, 2019-06-11
- ↑ 스카이허브 공식 홈페이지 - https://www.nectit.com/
- ↑ 이영우 기자, 〈‘스카이허브’, 코딩 필요 없는 백엔드 자동 구축 솔루션〉, 《대한민국청소년의회뉴스》, 2019-06-24
참고자료
- 프런트엔드와 백엔드 위키백과 - https://ko.wikipedia.org/wiki/%ED%94%84%EB%9F%B0%ED%8A%B8%EC%97%94%EB%93%9C%EC%99%80_%EB%B0%B1%EC%97%94%EB%93%9C
- 백엔드 나무위키 - https://namu.wiki/w/%EB%B0%B1%EC%97%94%EB%93%9C
- 백엔드 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=3473496&cid=58439&categoryId=58439
- 한국정보통신기술협회 정보통신용어사전 http://word.tta.or.kr/dictionary/dictionaryView.do?subject=%EB%B0%B1%EC%97%94%EB%93%9C%EC%8B%9C%EC%8A%A4%ED%85%9C
- 스카이허브 공식 홈페이지 - https://www.nectit.com/
- 이두현 기자, 〈Amazon Web Service로 모바일 게임 백엔드 개발 끝낸다〉, 《인벤》, 2017-09-03
- 송은우, 〈[2장 현대 웹 시스템 구조 및 아키텍처]〉, 《깔끔한 파이썬 탄탄한 백엔드》, 2019-01-25
- ReadIT, 〈백엔드 개발이란 무엇인가〉, 《교보문고북뉴스》, 2019-05-30
- 석대건 기자, 〈'개발자는 개발만 하고 싶다'...서버리스, 백엔드 구축도 클라우드 시대〉, 《디지털투데이》, 2019-06-11
- 이영우 기자, 〈‘스카이허브’, 코딩 필요 없는 백엔드 자동 구축 솔루션〉, 《대한민국청소년의회뉴스》, 2019-06-24
- E.B_Mind, 〈Front-End ( 프론트 엔드 ) vs Back-End ( 백엔드 )〉, 《티스토리》, 2019-9-25
- devJang, 〈개발자 로드맵〉, 《깃허브》, 2020-02-23
같이 보기