의견.png

백엔드

위키원
7095sj (토론 | 기여)님의 2020년 7월 29일 (수) 17:03 판
이동: 둘러보기, 검색

백엔드(back end)란 컴퓨터응용 프로그램 또는 컴퓨터와 데이터베이스 사이의 인터페이스(I/F) 부분을 말한다. '뒷단' 또는 '백단'(back端, 빽단)이라고 부른다. 응용 프로그램, DBMS, 운영체제, 웹서버, WAS 등이 있다. 반대말은 프런트엔드(front end) 또는 앞단이다.

개요

백엔드는 일반 사용자 눈에 보이지 않는 서버에서 작용하는 기술을 다루는 직군으로, UI나 GUI로 구성된 화면의 통신 및 요청에 대하여 인터페이스나 데이터베이스 등을 통해 시스템 구성 실체에 접근한다. 후위 처리라고도 부른다. 프론트엔드와 함께 연동되어, 사용자와 접촉하지 않고 기술적인 부분을 처리한다. 프런트엔드가 가능하도록 데이터를 저장하고 서버를 구축하는 일을 맡는다.[1] 백엔드는 서버와 응용 프로그램, 데이터베이스로 구성되어 있으므로, 백엔드 개발자는 이 구성요소들이 잘 작동할 수 있도록 기술의 개발과 유지보수를 진행한다.

차이점

프런트엔드와 백엔드는 프로그램 인터페이스와 서비스의 최초 사용자와 관련된 특성을 나타내는데 사용되는 용어로, 사람 또는 프로그램을 사용자라고 칭한다. 백엔드와 프런트엔드의 차이를 비교해보자면, 용어부터 일반적으로 프런트엔드와 백엔드는 각각 프로세스의 처음과 마지막 단계를 가리킨다. 클라이언트 서버 컴퓨팅 모델과 비교하자면 프런트엔드는 클라이언트에, 백엔드는 서버에 비유할 수 있다.[2]

프런트엔드
  • 사용자로부터 다양한 형태의 입력을 받아 백엔드가 사용할 수 있는 규격을 따라 처리할 책임을 진다.
  • 하나 또는 하나 이상의 사용자와 직접 상호작용을 하는 프로그램이다.
  • 사용자와 직접 인터페이스할 수 있고, 필요한 데이터를 얻거나 요구한 서비스를 수행하기 위해 다른 컴퓨터로 위치한 백엔드 프로그램으로 사용자의 요구를 전달한다.
백엔드
  • 클라이언트와 직접 접촉하지 않고 프런트엔드 프로그램과 연동하여 기술적인 기능을 수행하는 프로그램
  • 백엔드 없이는 UI는 프로세스 형태로만 존재하며, 프런트엔드는 UI를 가지고 동작한다.
  • 대체적으로 요구 자원들과 가깝게 위치하거나 요구 자원들과 충분히 교신할 수 있는 능력을 가지는 등 프런트 엔드 서비스를 뒤에서 전반적으로 지원하는 역할
  • 프런트엔드와 직접 상호작용할 수 있지만, 보통은 그 사이에 또 다른 프로그램이 함께 위치하여 프런트엔드와 백엔드 간의 업무를 조정한다.
  • 프런트엔드가 가능하도록 데이터를 저장하고 서버를 구축하는 역할을 맡는다. 서버, 응용 프로그램, 데이터베이스로 구성되며, 백엔드 개발자는 이 구성요소들이 작동할 수 있도록 기술의 개발과 유지보수를 맡는다.

개발

백엔드 개발은 사용자 인터페이스를 만들어내는 코드 작성과 관련 없는 전반적인 모든 개발을 일컫는다. 사용자의 육안에 들어오는 프런트엔드가 제대로 잘 작동할 수 있도록 최종 사용자의 눈에 보이지 않는 뒷단에서 백엔드 코드가 작성하는데, 세상에 존재하는 프로그래밍 코드이 대부분은 백엔드에서 작성되는 코드라고 할 수 있다. 백엔드 개발자가 하는 일은 다음과 같다.

  • 비즈니스 이해 관계자와 소통하며 구체적인 요구 사항을 파악하고, 요구사항을 기술적인 내용으로 변환한다.
  • 기술설계를 위한 가장 효율적인 해결책을 고안 및 제시한 후, 개발자의 기술을 사용하여 모듈화가 가능한 코드로 웹 응용 프로그램을 개발한다.
  • 프런트엔드 개발자에 비해 알고리즘을 적용하고 문제를 해결하는 데 더 많은 시간을 사용한다.

전반적으로 프런트엔드, 백엔드의 완전한 분리 구조를 지향하는 업무 스타일의 개발을 지향하며, 주로 백엔드의 데이터베이스와 API서버 개발을 맡는다. 이와 다른 방식의 업무 스타일 직군으로는 웹퍼블리셔와 서버 개발자의 업무 분리 방식이 있다. 이 경우는 주로 서버사이드가 클라이언트를 감싸는 방식이고, 전반적인 비지니스 로직은 개발자가 맡는다. 뷰단은 화면단보다 API 개발이 더 주가 되며, 프런트엔트에서 전달한 데이터를 가지고 데이터베이스 입출력, 포맷, 다양한 비즈니스 프로세스를 프로그래밍 코드로 구현하는 역할을 해야한다. 여기서 백엔드와 프런트엔드의 기술을 모두 다룰 줄 아는 개발자가 풀 스택 개발자이다.[3] 서버 개발에는 기술면에서 프로그래밍, 데이터베이스, 웹 서버, 네트워크, 인프라 등에 대한 지식과 기술이 필요하다. 자신이 쓰는 기술 스택에 맞는 서버 측의 언어를 능숙하게 사용해야만 하며, 응용 프로그램을 제작하기 위해 PHP, Ruby, Python, Java 등의 언어가 사용된다. 프런트엔드 개발자가 HTML, CSS, 자바스크립트에 집중할 때 백엔드 개발자는 PHP 웹 프레임워크, 루비 온 레일스, ASP.NET MVC를 비롯한 서버 측 웹 개발 프레임워크에 집중한다. 또한, 데이터 검색, 저장, 변경 후에도 프론트엔드 코드로 사용자에게 다시 제공하기 위해 MySQL, Oracle, SQL Server 등이 기술이 사용된다.[4]

플랫폼

컴퓨팅 단위는 점차 감소함에 따라 개발자가 인프라 영역까지 개발하는 부담도 증가하여, 이를 대체하거나 도움을 주는 플랫폼들이 생겨나고 있다.

서버리스

IaaS와 PaaS의 다음 단계를 지칭하는 개념이다. 인프라와 플랫폼을 활용하는 실제 애플리케이션 개발자의 관점에서, 서버가 없어도 개발이 가능하다고 해서 서버리스(Serverless)라고 부른다. 정확히는 서버가 정말 없는 것이 아니라, 개발자가 과거에는 일일이 구축해야 했던 백엔드 기능들을 보이지 않는 서버인 클라우드로 불러와 사용하기 때문에 서버가 없다는 의미를 담아 붙여졌다. 서버리스는 2012년에 켄 프롬(Ken Fromm)이 처음 사용한 용어로, 2014년에 아마존 웹서비스의 람다(Lambda) 서비스가 시작되면서 널리 알려졌다. 람다는 서버리스를 공식적으로 사용한 최초의 상용 클라우드 서비스이며, 아마존 웹서비스의 모든 클라우드 서비스의 연결통로 역할을 수행한다. 람다를 사용하는 기업들은 애플리케이션이 작동되는 동안 인프라 비용만 지불하며, 람다를 통해 애플리케이션을 작은 단위의 함수로 나눠서 실행 요청이나 특정 이벤트 트리거가 일어났는지 유무를 기준으로 계산이 이뤄진다. 기업은 이를 통해 디바이스, 플랫폼, 웹 등에 상관없이 백엔드를 구축할 수 있고, API를 통해 클라우드에서 호출하기 때문에 개발자가 별도로 백엔드 서비스를 개발할 필요가 없기때문에, 백엔드와 관련된 개발 시간을 절약할 수 있다. 켄 프롬은 서버리스의 배경에 대해 다음과 같은 말을 남겼다.

"클라우드 이전 시대에는 애플리케이션 개발자가 서버를 위해 예산을 책정하고, 연결하며, 전원 공급 장치, 냉각 장치를 구입·임대해야 했고, 데이터 센터까지 신경써야 했다. 클라우드는 이같은 문제를 해결했고 결국 서버가 사라졌다" - 켄 프롬

'서버가 없기'때문에, 애플리케이션 개발자와 서버 운영자는 사용자에게 제공해야 할 서비스의 본질적인 로직에만 집중해서 개발할 수 있다. 이는 대부분의 웹이나 모바일 앱 기반 서비스가 소비자가 접하는 UI나 인프라인 비즈니스 로직으로 구성되기 때문이다. 현재 서버리스 분야의 대표적인 주요 서비스로는 아마존의 람다, 마이크로소프트의 애저 함수, 구글의 클라우드 함수를 예로 들 수 있으며, 국내에서는 SK C&C가 클라우드제트 액션 같은 FaaS 플랫폼으로 서버리스 서비스를 제공하고 있고, 삼성SDS는 이스라엘의 이과지오(Iguazio)에 투자하여 직간접적으로 참여하고 있다. 이 중에서 가장 서버리스 서비스에 집중하고 있는 곳은 람다를 제공하는 아마존 웹서비스로, '아마존 웹서비스 리인벤트 2018' 행사에서 "서버리스는 현대 시스템에 가장 이상적인 환경'이라고 언급했다.[5]

스카이허브

코딩없이 클릭만으로 백엔드 서버를 구축할 수 있는 백엔드 자동화 기능을 제공한다.[6]

아마존 웹서비스

[7]

관련용어

백엔드 프로세서

후위 처리 장치라고도 부른다.

서비스형 백엔드(Backend as a Service)

바스(BaaS)라고도 부른다.

백엔드 시스템

보통 요구되는 자원들에 가깝게 있거나, 또는 요구되는 자원들과 교신할 수 있는 능력을 가지는 등 프론트엔드 서비스를 간접적으로 지원한다. 백엔드 응용프로그램은 프론트엔드와 직접 상호 작용할 수 있지만, 아마도 보다 일반적인 것은 클라이언트/서버 컴퓨팅 모델과 비교한다면, 프론트엔드는 클라이언트로, 백엔드는 서버로 이해할 수도 있을 것이다. 중간에 또 다른 프로그램이 개입되어 프론트엔드와 백엔드의 활동을 조정한다.[8]

각주

  1. E.B_Mind, 〈Front-End ( 프론트 엔드 ) vs Back-End ( 백엔드 )〉, 《티스토리》, 2019-9-25
  2. 백엔드 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=3473496&cid=58439&categoryId=58439
  3. 백엔드 나무위키 - https://namu.wiki/w/%EB%B0%B1%EC%97%94%EB%93%9C
  4. ReadIT, 〈백엔드 개발이란 무엇인가〉, 《교보문고북뉴스》, 2019-05-30
  5. 석대건 기자, 〈'개발자는 개발만 하고 싶다'...서버리스, 백엔드 구축도 클라우드 시대〉, 《디지털투데이》, 2019-06-11
  6. 스카이허브 공식 홈페이지 - https://www.nectit.com/
  7. 이두현 기자, 〈Amazon Web Service로 모바일 게임 백엔드 개발 끝낸다〉, 《인벤》, 2017-09-03
  8. 한국정보통신기술협회 정보통신용어사전 - 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

참고자료

같이 보기


  의견.png 이 백엔드 문서는 인터넷에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.