"백엔드"의 두 판 사이의 차이
(사용자 2명의 중간 판 11개는 보이지 않습니다) | |||
2번째 줄: | 2번째 줄: | ||
== 개요 == | == 개요 == | ||
− | 백엔드는 일반 사용자 눈에 보이지 않는 서버에서 작용하는 기술을 다루는 직군으로, UI나 GUI로 구성된 화면의 통신 및 요청에 대하여 인터페이스나 데이터베이스 등을 통해 시스템 구성 실체에 접근한다. 후위 처리라고도 부른다. | + | 백엔드는 일반 사용자 눈에 보이지 않는 서버에서 작용하는 기술을 다루는 직군으로, UI나 GUI로 구성된 화면의 통신 및 요청에 대하여 인터페이스나 데이터베이스 등을 통해 시스템 구성 실체에 접근한다. 후위 처리라고도 부른다. 프런트엔드와 함께 연동되어, 사용자와 접촉하지 않고 기술적인 부분을 처리한다. 프런트엔드가 가능하도록 데이터를 저장하고 서버를 구축하는 일을 맡는다.<ref name='프론트 엔드 백엔드 비교글'>E.B_Mind, 〈[https://bmind305.tistory.com/46 Front-End ( 프론트 엔드 ) vs Back-End ( 백엔드 )]〉, 《티스토리》, 2019-9-25</ref> 백엔드는 서버와 응용 프로그램, 데이터베이스로 구성되어 있으므로, 백엔드 개발자는 이 구성요소들이 잘 작동할 수 있도록 기술의 개발과 유지보수를 진행한다. |
== 차이점 == | == 차이점 == | ||
− | 프런트엔드와 백엔드는 프로그램 인터페이스와 서비스의 최초 사용자와 관련된 특성을 | + | 프런트엔드와 백엔드는 프로그램 인터페이스와 서비스의 최초 사용자와 관련된 특성을 나타내는 데 사용되는 용어로, 사람 또는 프로그램을 사용자라고 칭한다. 백엔드와 프런트엔드의 차이를 비교해보자면, 용어부터 일반적으로 프런트엔드와 백엔드는 각각 프로세스의 처음과 마지막 단계를 가리킨다. 클라이언트 서버 컴퓨팅 모델과 비교하자면 프런트엔드는 클라이언트에, 백엔드는 서버에 비유할 수 있다.<ref>백엔드 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=3473496&cid=58439&categoryId=58439</ref> |
;프런트엔드 | ;프런트엔드 | ||
* 사용자로부터 다양한 형태의 입력을 받아 백엔드가 사용할 수 있는 규격을 따라 처리할 책임을 진다. | * 사용자로부터 다양한 형태의 입력을 받아 백엔드가 사용할 수 있는 규격을 따라 처리할 책임을 진다. | ||
* 하나 또는 하나 이상의 사용자와 직접 상호작용을 하는 프로그램이다. | * 하나 또는 하나 이상의 사용자와 직접 상호작용을 하는 프로그램이다. | ||
− | * 사용자와 직접 | + | * 사용자와 직접 인터페이스 할 수 있고, 필요한 데이터를 얻거나 요구한 서비스를 수행하기 위해 다른 컴퓨터로 위치한 백엔드 프로그램으로 사용자의 요구를 전달한다. |
;백엔드 | ;백엔드 | ||
* 클라이언트와 직접 접촉하지 않고 프런트엔드 프로그램과 연동하여 기술적인 기능을 수행하는 프로그램 | * 클라이언트와 직접 접촉하지 않고 프런트엔드 프로그램과 연동하여 기술적인 기능을 수행하는 프로그램 | ||
* 백엔드 없이는 UI는 프로세스 형태로만 존재하며, 프런트엔드는 UI를 가지고 동작한다. | * 백엔드 없이는 UI는 프로세스 형태로만 존재하며, 프런트엔드는 UI를 가지고 동작한다. | ||
− | * | + | * 대체로 요구 자원들과 가깝게 위치하거나 요구 자원들과 충분히 교신할 수 있는 능력을 갖추는 등 프런트 엔드 서비스를 뒤에서 전반적으로 지원하는 역할 |
− | * 프런트엔드와 직접 상호작용할 수 있지만, 보통은 | + | * 프런트엔드와 직접 상호작용할 수 있지만, 보통은 그사이에 또 다른 프로그램이 함께 위치하여 프런트엔드와 백엔드 간의 업무를 조정한다. |
* 프런트엔드가 가능하도록 데이터를 저장하고 서버를 구축하는 역할을 맡는다. 서버, 응용 프로그램, 데이터베이스로 구성되며, 백엔드 개발자는 이 구성요소들이 작동할 수 있도록 기술의 개발과 유지보수를 맡는다. | * 프런트엔드가 가능하도록 데이터를 저장하고 서버를 구축하는 역할을 맡는다. 서버, 응용 프로그램, 데이터베이스로 구성되며, 백엔드 개발자는 이 구성요소들이 작동할 수 있도록 기술의 개발과 유지보수를 맡는다. | ||
− | == | + | == 역사 == |
− | + | 2000년대 닷컴 붐이 일어나 많은 회사가 생기면서 웹 시스템과 관련된 기술들이 등장하고 발전했다. 이때의 웹 서버는 단순히 웹 브라우저가 요청하는 해당 페이지를 보내주는 일을 했다. 그러나 시간이 흘러 자연스럽게 사용자와 웹페이지에서의 동적인 상호작용이 중요해지자, 단순했던 웹 서비스들이 조금씩 복잡해지고 자바스크립트의 역할이 증가하는 등 사용자 인터랙션이 중요해졌다. 웹서버가 HTML뿐만 아니라 자바스크립트 코드도 웹 브라우저에 전송하면 웹브라우저는 서버에서 전송받은 자바스크립트 코드를 실행하여 사용자에게 동적인 기능을 제공한다. 이를 통해 전체 페이지를 불러오지 않아도 사용자의 요구를 동적으로 처리하고 새로운 데이터를 제공할 수 있게 되었다. 자바스크립트가 HTML 파일의 일부분이라 웹사이트가 부분적으로 동적이었던 과거와 달리, 자바스크립트가 HTML의 생성부터 사이트에 관한 전반적인 부분을 구현하게 되었다. 현대에는 웹 시스템의 규모가 커지고 처리해야 하는 요청의 양이 기하학적으로 증가하여, API 시스템들이 너무 방대해지고 있다. 따라서 이러한 복잡한 문제들을 해결하기 위해 MSA 같은 새로운 아키텍처 개념이 발전하고 덕분에 API 서버가 더욱 세분되고 규모가 커졌다. 또, 서버에서 분석해야 할 데이터가 증가하여 많은 백엔드 시스템에 빅데이터 분석 시스템이 도입되었다. 현대의 백엔드 개발 영역은 일반적인 백엔드 API 시스템, 데이터 파이프라인 시스템, 머신러닝 시스템, 빅데이터 분석 시스템 등을 예로 들 수 있고, 비실시간 대규모 데이터 수집 및 분석 시스템과 머신러닝 시스템까지 개발 범위가 넓어지고 있다.<ref> 송은우, 〈[2장 현대 웹 시스템 구조 및 아키텍처]〉, 《깔끔한 파이썬 탄탄한 백엔드》, 2019-01-25</ref> | |
− | |||
− | + | == 개발 == | |
− | + | 백엔드 개발은 사용자 인터페이스를 만들어내는 코드 작성과 관련 없는 전반적인 모든 개발을 일컫는다. 사용자의 육안에 들어오는 프런트엔드가 제대로 잘 작동할 수 있도록 최종 사용자의 눈에 보이지 않는 뒷단에서 백엔드 코드가 작성하는데, 세상에 존재하는 프로그래밍 코드의 대부분은 백엔드에서 작성되는 코드라고 할 수 있다. 백엔드 개발자가 하는 일은 다음과 같다. | |
− | |||
− | |||
− | 백엔드 개발은 사용자 인터페이스를 만들어내는 코드 작성과 관련 없는 전반적인 모든 개발을 일컫는다. 사용자의 육안에 들어오는 프런트엔드가 제대로 잘 작동할 수 있도록 최종 사용자의 눈에 보이지 않는 뒷단에서 백엔드 코드가 작성하는데, 세상에 존재하는 프로그래밍 | ||
* 비즈니스 이해 관계자와 소통하며 구체적인 요구 사항을 파악하고, 요구사항을 기술적인 내용으로 변환한다. | * 비즈니스 이해 관계자와 소통하며 구체적인 요구 사항을 파악하고, 요구사항을 기술적인 내용으로 변환한다. | ||
* 기술설계를 위한 가장 효율적인 해결책을 고안 및 제시한 후, 개발자의 기술을 사용하여 모듈화가 가능한 코드로 웹 응용 프로그램을 개발한다. | * 기술설계를 위한 가장 효율적인 해결책을 고안 및 제시한 후, 개발자의 기술을 사용하여 모듈화가 가능한 코드로 웹 응용 프로그램을 개발한다. | ||
− | * 프런트엔드 | + | * 프런트엔드 개발자보다 알고리즘을 적용하고 문제를 해결하는 데 더 많은 시간을 사용한다. |
− | 전반적으로 프런트엔드, 백엔드의 완전한 분리 구조를 지향하는 업무 스타일의 개발을 지향하며, 주로 백엔드의 데이터베이스와 | + | 전반적으로 프런트엔드, 백엔드의 완전한 분리 구조를 지향하는 업무 스타일의 개발을 지향하며, 주로 백엔드의 데이터베이스와 API 서버 개발을 맡는다. 이와 다른 방식의 업무 스타일 직군으로는 웹 퍼블리셔와 서버 개발자의 업무 분리 방식이 있다. 이 경우는 주로 서버 사이드가 클라이언트를 감싸는 방식이고, 전반적인 비즈니스 로직은 개발자가 맡는다. 뷰단은 화면단보다 API 개발이 더 주가 되며, 프런트엔트에서 전달한 데이터를 가지고 데이터베이스 입출력, 포맷, 다양한 비즈니스 프로세스를 프로그래밍 코드로 구현하는 역할을 해야 한다. 여기서 백엔드와 프런트엔드의 기술을 모두 다룰 줄 아는 개발자가 풀 스택 개발자이다.<ref>백엔드 나무위키 - https://namu.wiki/w/%EB%B0%B1%EC%97%94%EB%93%9C</ref> 서버 개발에는 기술 면에서 프로그래밍, 데이터베이스, 웹 서버, 네트워크, 인프라 등에 대한 지식과 기술이 필요하다. |
− | 자신이 쓰는 기술 스택에 맞는 서버 측의 언어를 능숙하게 사용해야만 하며, 응용 프로그램을 제작하기 위해 PHP, | + | 자신이 쓰는 기술 스택에 맞는 서버 측의 언어를 능숙하게 사용해야만 하며, 응용 프로그램을 제작하기 위해 PHP, 루비, 파이썬, 자바 등의 언어가 사용된다. 프런트엔드 개발자가 HTML, CSS, 자바스크립트에 집중할 때 백엔드 개발자는 PHP 웹 구조, 루비 온 레일스, ASP.NET MVC를 비롯한 서버 측 웹 개발 구조에 집중한다. 또한, 데이터 검색, 저장, 변경 후에도 프론트엔드 코드로 사용자에게 다시 제공하기 위해 마이에스큐엘, 오라클, SQL Server 등의 기술이 사용된다.<ref> |
ReadIT, 〈[http://news.kyobobook.co.kr/comma/readITView.ink?sntn_id=14824 백엔드 개발이란 무엇인가]〉, 《교보문고북뉴스》, 2019-05-30</ref> | ReadIT, 〈[http://news.kyobobook.co.kr/comma/readITView.ink?sntn_id=14824 백엔드 개발이란 무엇인가]〉, 《교보문고북뉴스》, 2019-05-30</ref> | ||
39번째 줄: | 35번째 줄: | ||
=== 서버리스 === | === 서버리스 === | ||
− | IaaS와 PaaS의 다음 단계를 지칭하는 개념이다. 인프라와 플랫폼을 활용하는 실제 애플리케이션 개발자의 관점에서, 서버가 없어도 | + | IaaS와 PaaS의 다음 단계를 지칭하는 개념이다. 인프라와 플랫폼을 활용하는 실제 애플리케이션 개발자의 관점에서, 서버가 없어도 개발할 수 있다고 해서 서버리스(Serverless)라고 부른다. 정확히는 서버가 정말 없는 것이 아니라, 개발자가 과거에는 일일이 구축해야 했던 백엔드 기능들을 보이지 않는 서버인 클라우드로 불러와 사용하기 때문에 서버가 없다는 의미를 담아 붙여졌다. 장점으로는 1) 서버 관리가 불필요하다는 점, 2) 규모 조정이 유연하다는 점, 3) 서버 단위가 아닌 처리량과 실행 기간에 대해서만 요금을 지불하면 된다는 점, 4) 자동화된 고가용성을 대표적으로 들 수 있다.<ref name='아마존 웹서비스 공식 홈페이지 서버리스 소개'>아마존 웹서비스 공식 홈페이지 서버리스 소개 - https://aws.amazon.com/ko/serverless/</ref> 서버리스는 2012년에 [[켄 프롬]](Ken Fromm)이 처음 사용한 용어로, 2014년에 [[아마존 웹서비스]]의 람다(Lambda) 서비스가 시작되면서 널리 알려졌다. 람다는 서버리스를 공식적으로 사용한 최초의 상용 클라우드 서비스이며, 아마존 웹서비스의 모든 클라우드 서비스의 연결통로 역할을 한다. 람다를 사용하는 기업들은 애플리케이션이 작동되는 동안 인프라 비용만 지급하며, 람다를 통해 애플리케이션을 작은 단위의 함수로 나눠서 실행 요청이나 특정 이벤트 트리거가 일어났는지를 기준으로 계산이 이뤄진다. 기업은 이를 통해 장치, 플랫폼, 웹 등에 상관없이 백엔드를 구축할 수 있고, API를 통해 클라우드에서 호출하기 때문에 개발자가 별도로 백엔드 서비스를 개발할 필요가 없기 때문에, 백엔드와 관련된 개발 시간을 절약할 수 있다. 켄 프롬은 서버리스의 배경에 대해 다음과 같은 말을 남겼다. |
{{인용문| | {{인용문| | ||
− | "클라우드 이전 시대에는 애플리케이션 개발자가 서버를 위해 예산을 책정하고, 연결하며, 전원 공급 장치, 냉각 장치를 | + | "클라우드 이전 시대에는 애플리케이션 개발자가 서버를 위해 예산을 책정하고, 연결하며, 전원 공급 장치, 냉각 장치를 구매·임대해야 했고, 데이터 센터까지 신경 써야 했다. 클라우드는 이런 문제를 해결했고 결국 서버가 사라졌다." - 켄 프롬 |
}} | }} | ||
− | '서버가 없기'때문에, 애플리케이션 개발자와 서버 운영자는 사용자에게 제공해야 할 서비스의 본질적인 로직에만 집중해서 개발할 수 있다. 이는 대부분의 웹이나 모바일 앱 기반 서비스가 소비자가 접하는 UI나 인프라인 비즈니스 로직으로 구성되기 때문이다. 현재 서버리스 분야의 대표적인 주요 서비스로는 아마존의 람다, 마이크로소프트의 애저 함수, 구글의 클라우드 함수를 예로 들 수 있으며, 국내에서는 | + | '서버가 없기' 때문에, 애플리케이션 개발자와 서버 운영자는 사용자에게 제공해야 할 서비스의 본질적인 로직에만 집중해서 개발할 수 있다. 이는 대부분의 웹이나 모바일 앱 기반 서비스가 소비자가 접하는 UI나 인프라인 비즈니스 로직으로 구성되기 때문이다. 현재 서버리스 분야의 대표적인 주요 서비스로는 아마존의 람다, 마이크로소프트의 애저 함수, 구글의 클라우드 함수를 예로 들 수 있으며, 국내에서는 [[에스케이㈜ 씨앤씨]]가 클라우드제트(Cloud Z) 액션 같은 FaaS 플랫폼으로 서버리스 서비스를 제공하고 있고, [[삼성SDS㈜]]는 이스라엘의 이과지오(Iguazio)에 투자하여 직간접적으로 참여하고 있다. 이 중에서 가장 서버리스 서비스에 집중하고 있는 곳은 람다를 제공하는 아마존 웹서비스로, '아마존 웹서비스 리인벤트 2018' 행사에서 "서버리스는 현대 시스템에 가장 이상적인 환경'이라고 언급했다.<ref>석대건 기자, 〈[http://www.digitaltoday.co.kr/news/articleView.html?idxno=211271 '개발자는 개발만 하고 싶다'...서버리스, 백엔드 구축도 클라우드 시대]〉, 《디지털투데이》, 2019-06-11</ref> |
+ | |||
+ | ==== 아마존 웹서비스 ==== | ||
+ | 아마존에서 개발한 상품으로, 운영상의 책임을 아마존 웹서비스로 전환하여 신속하고 혁신적인 개발이 가능하도록 돕는 클라우드의 네이티브 아키텍처이다. 서버는 고려하지 않고 애플리케이션을 구축하고 실행할 수 있고, 서버 또는 클러스터 프로비저닝, 패치 적용, 운영 체제 유지 보수, 관리 및 용량 프로비저닝과 같은 인프라 관리 작업을 덜어낸다. 거의 모든 유형의 애플리케이션이나 백엔드 서비스를 구축할 수 있으며, 애플리케이션을 고가용성으로 확장 개발하는데 필요한 모든 사항이 자동으로 처리된다. 또, 고객은 비교적 저렴한 비용으로 신속하게 애플리케이션을 빌드하는 것이 가능하다. 여기서 애플리케이션을 빌드한다는 것은 개발자가 클라우드나 온프레미스의 서버나 런타임 관리 및 운영에 신경 쓰고 걱정하지 않고 애플리케이션의 주된 핵심 기술에 집중할 수 있다는 뜻이다. 즉, 오버헤드의 감소로 개발자는 시간과 체력의 여유가 생길 수 있고, 더욱 안정적인 제품을 개발할 수 있다. 아마존 웹서비스는 서버리스 플랫폼으로 다음과 같은 관리 서비스를 제공한다.<ref name='아마존 웹서비스 공식 홈페이지 서버리스 소개'></ref> | ||
+ | |||
+ | * '''컴퓨팅''' : 람다를 사용하면, 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있다. 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금을 부과하지 않는다. 람다 엣지를 사용하면, 아마존 클라우드 프런트 이벤트에 대한 응답으로 아마존 웹서비스 엣지 로케이션에서 람다 함수를 실행할 수 있다. 아마존 파게이트(Fargate)를 사용하면, 컨테이너 실행에 필요한 인프라를 조정 및 관리할 수 있다. | ||
+ | * '''스토리지''' : 아마존 심플 스토리지 서비스(S3)는 간단한 웹 서비스 인터페이스를 통해 웹 어디서나 원하는 양의 데이터를 저장 및 검색할 수 있어 사용이 용이하다. 아마존 EFS는 간단하고 확장할 수 있어 탄력적인 파일 스토리지를 제공한다. 수요에 따라 크기를 조정하여 파일을 추가 또는 제거할 때 확장과 축소가 자동으로 이루어진다. | ||
+ | * '''데이터 스토어''' : 아마존 RDS 프록시는 관계형 데이터베이스에 대한 동시 연결 수천 개를 관리하는 고가용성 데이터베이스 프록시이다. 확장성이 높고 안전하다. | ||
+ | * '''API 프록시''' : 아마존 API 게이트웨이는 어떤 규모에서든 개발자에게 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보호를 지원하는 안전관리형 서비스이다. API에 대한 포괄적인 플랫폼을 제공한다. | ||
+ | * '''애플리케이션 통합''' : 아마존 SNS와 아마존 SQS을 사용하면, 마이크로서비스, 분산 시스템 및 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있다. 아마존 이벤트 브릿지는 다양한 소스의 애플리케이션 데이터에 손쉽게 액세스하여 아마존 웹서비스 환경으로 전송할 수 있는 서버리스 이벤트 버스 서비스이다. | ||
+ | * '''개발자 도구''' : 개발자가 서버리스 애플리케이션 개발 프로세스에 사용할 수 있는 도구와 서비스를 제공한다. 파트너 에코시스템은 통합, 전달, 테스트, 배포, 모니터링, 진단, SDK, 프레임워크, 통합 개발 환경 플러그인을 위한 도구를 제공한다. | ||
+ | |||
+ | ==== 클라우드 제트 ==== | ||
+ | 에스케이㈜ 씨앤씨에서 제공하는 글로벌 멀티 클라우드 서비스로, IaaS, PaaS, SaaS 등의 클라우드 서비스와 이를 기반으로 ICT 신기술 요소를 결합한 종합 IT 서비스이다. 주로 컨설팅 서비스와 카이그레이션 서비스, 관리 서비스를 제공한다. 컨설팅 서비스는 대외 환경 분석을 통해 클라우드 도입을 위한 방향성을 정립한 후, 이에 따른 목표 클라우드 아키텍처, 이행 과제, 이행 로드맵 및 재무적 기대 효과를 도출한다. 마이그레이션 서비스는 다양한 환경에서 검증된 표준 프로세스를 기반으로 제공된다. 관리 서비스는 공인된 엔지니어와 클라우드 전문가로 구성된 전담팀을 통해서 인프라의 전반적인 성능의 모니터링부터 조정까지 전반적으로 제공된다. 에스케이㈜ 씨앤씨는 클라우드 제트의 60개의 글로벌 클라우드 센터를 바탕으로 국내 인디게임 사들이 국내뿐만 아니라 글로벌 시장에서도 활동할 수 있도록 지원하기도 했다. 그 예로, 2018년 7월에 에스케이㈜ 씨앤씨는 한국 인디게임협회와 함께 국내 인디게임 분야를 지원하는 '인디게임 개발팀과 클라우드 제트의 좌충우돌 게임 개발기'를 시작했다. 인디게임 개발팀 두 곳을 선정하여 게임 개발의 론칭부터 마케팅까지 지원하는 프로그램이다. 개발팀은 6개월간 클라우드 제트를 활용하여 인디 게임에 특화된 인프라와 네트워크 설계 및 운영, 주기적인 게임 품질 및 성능 테스트를 이용할 수 있고, 게임 론칭 후 1개월간의 론칭 안정화 단계까지 클라우드 제트 인프라를 무료로 제공받았다.<ref> 에스케이㈜ 씨앤씨, 〈[https://skccblog.tistory.com/3723 SK㈜ C&C Cloud Z(클라우드 제트), 인디게임사 직접 육성 나선다]〉, 《에스케이㈜씨앤씨공식블로그》, 2018-07-05</ref><ref> 에스케이㈜ 씨앤씨 공식 홈페이지 클라우드 제트 소개 - https://www.cloudz.co.kr/cloudz/cloudz_info</ref> | ||
=== 스카이허브 === | === 스카이허브 === | ||
− | + | 국내기업 ㈜디에스랩글로벌에서 개발한 상품으로, 코딩 없이 클릭만으로 백엔드 서버를 구축할 수 있는 백엔드 자동화 기능을 제공한다. 코딩없이 각 데이터의 아키텍처를 추가하고 수정할 수 있으며, 통합된 대시보드에서 각 데이터의 현황을 실시간으로 확인할 수 있다. 사용자의 상황과 요청에 따라 커스터마이징 대시보드도 제공된다. 스카이허브를 통해 사용자의 백데이터에 맞는 데이터 관리 시스템도 구축한다. 스카이 인사이트를 통해 백데이터를 이용하여 다양한 인사이트를 확보하며, 백데이터를 바탕으로 인사이트를 추출할 수 있는 차트 라이브러리를 제공한다. ㈜디에스랩글로벌에서는 스카이허브를 사용했을 때 백엔드 개발 시 코딩 사용 횟수 0회, 절감되는 시간과 비용 85%, 시스템 교체 시 연동 가능성 100%, 추가 기능 개발 시 개발 속도는 4배라고 마케팅하고 있다. 동종업계의 다른 상품들과 다른 차별점은 맞춤형 백엔드 서비스를 제공하고 있다는 것이다. 사물인터넷, 학원 관리, 병원 관리와 같은 각종 관리 시스템이나, 발전소, 의료기기, 야생동물, 교통상황 등의 실시간 모니터링 시스템, 그리고 공장자동화, 앱 백데이터, 제조기기 관리 등 데이터 시스템까지 적용 가능한 폭이 넓다.<ref>스카이허브 공식 홈페이지 - https://www.nectit.com/</ref><ref>이영우 기자, 〈[https://www.youthassembly.kr/news/25464 ‘스카이허브’, 코딩 필요 없는 백엔드 자동 구축 솔루션]〉, 《대한민국청소년의회뉴스》, 2019-06-24</ref> | |
− | === | + | === 노드제이에스 === |
+ | 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다. 비동기 이벤트를 주도하는 자바스크립트 런타임으로써, 노드제이에스는 확장성 있는 네트워크 애플리케이션을 만들 수 있도록 설계되었다. 서버의 자원을 극대화하기 위해서 나온 런타임으로, 한정적인 자원을 최대한 효율적으로 사용하기 원하는 기업이나 개발자를 위해 만들어졌다. 서버 사용 최적화 때문에 다운 현상을 크게 줄일 수 있어서, 지속적인 서비스가 가능한 메신저나 대규모 거래사이트 등에서도 사용된다. 노드제이에스를 적용한 대표적인 기업은 전투기도 판매하는 이베이, 마이크로소프트의 윈도우 애저 등이 있다.<ref> 텐던시 티랩, 〈[http://www.tendency.co.kr/tendency/tlab/tlab_view.asp?sbdtype=0000300008&sgubun=000030000800003&sissmall=&se_page=1&se_perpage=12&bno=49 노드제이에스(Node.JS)란 무엇인가?]〉, 《텐던시》 </ref> 다음 '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 }); | ||
+ | 이는 오늘날의 운영체제 스레드가 일반적으로 사용하는 동시성 모델과는 대조적으로, 스레드 기반의 네트워크는 비교적 사용하기 매우 어렵고 비효율적이다. 노드제이에스에는 잠금이 없어 사용자가 프로세스의 교착상태에 대해 걱정할 필요가 없다. I/O를 직접 수행하는 함수는 거의 없어서 프로세스 결과가 블로킹 되지 않는다. 아무것도 블로킹 되지 않으므로 노드제이에스에서는 확장성 있는 시스템을 개발하는데 아주 자연스럽고 유용하다. 여기서 블로킹이란 노드제이에스 프로세스에서 추가적인 자바스크립트의 실행을 위해 자바스크립트가 아닌 작업이 완료될 때까지 기다려야 하는 상황을 가리킨다. 이벤트 루프가 블로킹 작업을 하는 동안 자바스크립트 실행을 계속할 수 없기 때문에 발생한다. | ||
− | <ref> | + | 노드제이에스는 설계상에서 루비의 이벤트 머신이나 파이썬의 Twisted에 영향을 받았다. 좀 더 발전된 이벤트 모델을 선택하여 라이브러리가 아닌 런타임 생성자로 이벤트 루프를 제공한다. 이에 비해 다른 시스템에서는 이벤트 루프를 시작하는 블로킹 호출이 항상 존재한다. 보통은 스크립트의 첫 부분에서 콜백을 통해 동작을 정의하고, 마지막에서 블로킹 호출을 하여 서버를 시작한다. 그러나 노드제이에스에서는 이 같은 이벤트 루프를 실행하는 호출이 없으며, 더이상 실행할 콜백이 없다면 이벤트 루프를 종료한다. 또, 노드제이에스에서 HTTP를 일급객체로 두고 스트리밍과 저지연을 염두한 채, 웹 라이브러리나 프레임워크 기반으로 적합하게 설계되었다. 스레드를 사용하지 않도록 설계되었지만, 멀티 코어 환경의 장점이 없다는 뜻이 아니며, 자식 프로세스를 생성할 수 있는 API를 제공하고 있다. 다수의 코어에 로드 밸런싱이 가능하도록 프로세스 간의 소켓을 공유할 수도 있다.<ref>노드제이에스 공식 홈페이지 소개 - https://nodejs.org/ko/about/</ref> |
− | == | + | == 관련 용어 == |
− | + | * '''백 엔드 프로세서''' : 후위 처리 장치를 뜻한다. 주 프로세서에 물리적, 논리적으로 결합하여 특정한 처리를 분담하여 실행하는 프로세서이다. 정보처리 시스템의 성장으로 프로세서 하나로 구축하는 것이 힘들어졌다. 이를 해결하기 위해 호스트 컴퓨터의 앞뒤로 컴퓨터를 설치하여 호스트 컴퓨터의 부담을 줄였고, 이를 통해 대규모 시스템을 설치할 수 있게 되었다. 여기서 앞뒤로 설치된 컴퓨터의 앞부분은 프런트 엔드 프로세서(FEP)라고 하고, 뒷부분은 백 엔드 프로세서라고 부른다. 분산 처리 방법에는 물리적, 논리적으로 꼼꼼하게 결합하는 방식과 통신회선 등으로 성글게 결합하는 방식이 있다. 백엔드 프로세서는 꼼꼼하게 결합하는 방식에서 주 프로세서와 버스나 채널 등으로 결합된다. 주 프로세서의 일부를 프로세서의 의뢰로 실행하여 기능을 분담하고, 주 프로세서의 뒤에서 주 프로세서의 부하를 줄이기 때문에 백 엔드 프로세서라고 불린다. 특정한 처리만 진행하면 되기 때문에 특정 처리만 최적하게 설계해서 시스템 전체의 경제적인 부담을 줄일 수 있다.<ref> 백 엔드 프로세서 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=869815&cid=42388&categoryId=42388</ref> | |
− | 후위 처리 | ||
− | + | * '''[[백엔드 서비스]]'''(Backend as a Service) : 서비스형 백엔드 또는 바스(BaaS)라고도 부른다. 웹 및 모바일 애플리케이션 개발자를 위한 클라우드 서비스로, 모바일 애플리케이션에 특화되어 있다. 개발자는 애플리케이션을 개발할 때 일반적으로 모바일 애플리케이션의 백엔드로 자주 사용되는 사용자 관리 및 접속 제어, 푸시 알림, 데이터 저장, SNS, 위치 서비스 등의 백엔드 기능을 구현하기 위해 코드를 직접 개발해야 하지만, 백엔드 서비스를 사용하면 직접 코드를 개발하지 않고 앱을 클라우드와 연동 시켜 백엔드 서비스에서 제공하는 API를 호출하여 사용한다. 따라서 개발 시간을 단축하고 코드의 복잡성을 줄일 수 있다. 소프트웨어 개발 플랫폼을 제공하는 PaaS와 유사하나 백엔드 서비스는 모바일 앱 개발을 위한 특화된 클라우드 서비스이다. 관련 업체로 킨비(Kinvey)와 파스(Parse)를 손꼽을 수 있다. 파스는 10만 개가 넘는 애플리케이션이 이용한 기업으로, 페이스북의 개발자들이 빠르게 애플리케이션을 개발할 수 있도록 지원하기 위해 2013년에 SNS 페이스북에서 인수했다.<ref> 서비스형 백엔드 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=2751840&cid=42346&categoryId=42346</ref> | |
− | 바스(BaaS)라고도 부른다. | ||
− | |||
− | |||
− | |||
{{각주}} | {{각주}} | ||
69번째 줄: | 88번째 줄: | ||
* 백엔드 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=3473496&cid=58439&categoryId=58439 | * 백엔드 네이버 지식백과 - 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 | * 한국정보통신기술협회 정보통신용어사전 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://terms.naver.com/entry.nhn?docId=869815&cid=42388&categoryId=42388 | ||
+ | * 서비스형 백엔드 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=2751840&cid=42346&categoryId=42346 | ||
+ | |||
+ | * 에스케이㈜ 씨앤씨 공식 홈페이지 클라우드 제트 소개 - https://www.cloudz.co.kr/cloudz/cloudz_info | ||
+ | * 아마존 웹서비스 공식 홈페이지 소개 - https://aws.amazon.com/ko/serverless/ | ||
+ | * 클라우드 제트 공식 홈페이지 소개 - https://www.cloudz.co.kr/cloudz/cloudz_info | ||
+ | * 노드제이에스 공식 홈페이지 소개 - https://nodejs.org/ko/about/ | ||
* 스카이허브 공식 홈페이지 - https://www.nectit.com/ | * 스카이허브 공식 홈페이지 - https://www.nectit.com/ | ||
+ | * 텐던시 티랩, 〈[http://www.tendency.co.kr/tendency/tlab/tlab_view.asp?sbdtype=0000300008&sgubun=000030000800003&sissmall=&se_page=1&se_perpage=12&bno=49 노드제이에스(Node.JS)란 무엇인가?]〉, 《텐던시》 | ||
+ | * 이두현 기자, 〈[http://www.inven.co.kr/webzine/news/?news=184949#webzineNewsCommentList Amazon Web Service로 모바일 게임 백엔드 개발 끝낸다]〉, 《인벤》, 2017-09-03 | ||
+ | * 에스케이㈜ 씨앤씨, 〈[https://skccblog.tistory.com/3723 SK㈜ C&C Cloud Z(클라우드 제트), 인디게임사 직접 육성 나선다]〉, 《에스케이㈜씨앤씨공식블로그》, 2018-07-05 | ||
+ | * 송은우, 〈[2장 현대 웹 시스템 구조 및 아키텍처]〉, 《깔끔한 파이썬 탄탄한 백엔드》, 2019-01-25 | ||
* ReadIT, 〈[http://news.kyobobook.co.kr/comma/readITView.ink?sntn_id=14824 백엔드 개발이란 무엇인가]〉, 《교보문고북뉴스》, 2019-05-30 | * ReadIT, 〈[http://news.kyobobook.co.kr/comma/readITView.ink?sntn_id=14824 백엔드 개발이란 무엇인가]〉, 《교보문고북뉴스》, 2019-05-30 | ||
+ | * 석대건 기자, 〈[http://www.digitaltoday.co.kr/news/articleView.html?idxno=211271 '개발자는 개발만 하고 싶다'...서버리스, 백엔드 구축도 클라우드 시대]〉, 《디지털투데이》, 2019-06-11 | ||
+ | * 이영우 기자, 〈[https://www.youthassembly.kr/news/25464 ‘스카이허브’, 코딩 필요 없는 백엔드 자동 구축 솔루션]〉, 《대한민국청소년의회뉴스》, 2019-06-24 | ||
* E.B_Mind, 〈[https://bmind305.tistory.com/46 Front-End ( 프론트 엔드 ) vs Back-End ( 백엔드 )]〉, 《티스토리》, 2019-9-25 | * E.B_Mind, 〈[https://bmind305.tistory.com/46 Front-End ( 프론트 엔드 ) vs Back-End ( 백엔드 )]〉, 《티스토리》, 2019-9-25 | ||
* devJang, 〈[https://github.com/devJang/developer-roadmap/blob/master/pdf/backend.pdf 개발자 로드맵]〉, 《깃허브》, 2020-02-23 | * devJang, 〈[https://github.com/devJang/developer-roadmap/blob/master/pdf/backend.pdf 개발자 로드맵]〉, 《깃허브》, 2020-02-23 | ||
− | |||
− | |||
− | |||
== 같이 보기 == | == 같이 보기 == | ||
* [[백엔드 서비스]] | * [[백엔드 서비스]] | ||
* [[프런트엔드]] | * [[프런트엔드]] | ||
+ | * [[노드제이에스]] | ||
− | {{인터넷| | + | {{인터넷|검토 필요}} |
2020년 7월 30일 (목) 13:51 기준 최신판
백엔드(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, 루비, 파이썬, 자바 등의 언어가 사용된다. 프런트엔드 개발자가 HTML, CSS, 자바스크립트에 집중할 때 백엔드 개발자는 PHP 웹 구조, 루비 온 레일스, ASP.NET MVC를 비롯한 서버 측 웹 개발 구조에 집중한다. 또한, 데이터 검색, 저장, 변경 후에도 프론트엔드 코드로 사용자에게 다시 제공하기 위해 마이에스큐엘, 오라클, SQL Server 등의 기술이 사용된다.[5]
플랫폼[편집]
컴퓨팅 단위는 점차 감소함에 따라 개발자가 인프라 영역까지 개발하는 부담도 증가하여, 이를 대체하거나 도움을 주는 플랫폼들이 생겨나고 있다.
서버리스[편집]
IaaS와 PaaS의 다음 단계를 지칭하는 개념이다. 인프라와 플랫폼을 활용하는 실제 애플리케이션 개발자의 관점에서, 서버가 없어도 개발할 수 있다고 해서 서버리스(Serverless)라고 부른다. 정확히는 서버가 정말 없는 것이 아니라, 개발자가 과거에는 일일이 구축해야 했던 백엔드 기능들을 보이지 않는 서버인 클라우드로 불러와 사용하기 때문에 서버가 없다는 의미를 담아 붙여졌다. 장점으로는 1) 서버 관리가 불필요하다는 점, 2) 규모 조정이 유연하다는 점, 3) 서버 단위가 아닌 처리량과 실행 기간에 대해서만 요금을 지불하면 된다는 점, 4) 자동화된 고가용성을 대표적으로 들 수 있다.[6] 서버리스는 2012년에 켄 프롬(Ken Fromm)이 처음 사용한 용어로, 2014년에 아마존 웹서비스의 람다(Lambda) 서비스가 시작되면서 널리 알려졌다. 람다는 서버리스를 공식적으로 사용한 최초의 상용 클라우드 서비스이며, 아마존 웹서비스의 모든 클라우드 서비스의 연결통로 역할을 한다. 람다를 사용하는 기업들은 애플리케이션이 작동되는 동안 인프라 비용만 지급하며, 람다를 통해 애플리케이션을 작은 단위의 함수로 나눠서 실행 요청이나 특정 이벤트 트리거가 일어났는지를 기준으로 계산이 이뤄진다. 기업은 이를 통해 장치, 플랫폼, 웹 등에 상관없이 백엔드를 구축할 수 있고, API를 통해 클라우드에서 호출하기 때문에 개발자가 별도로 백엔드 서비스를 개발할 필요가 없기 때문에, 백엔드와 관련된 개발 시간을 절약할 수 있다. 켄 프롬은 서버리스의 배경에 대해 다음과 같은 말을 남겼다.
"클라우드 이전 시대에는 애플리케이션 개발자가 서버를 위해 예산을 책정하고, 연결하며, 전원 공급 장치, 냉각 장치를 구매·임대해야 했고, 데이터 센터까지 신경 써야 했다. 클라우드는 이런 문제를 해결했고 결국 서버가 사라졌다." - 켄 프롬
'서버가 없기' 때문에, 애플리케이션 개발자와 서버 운영자는 사용자에게 제공해야 할 서비스의 본질적인 로직에만 집중해서 개발할 수 있다. 이는 대부분의 웹이나 모바일 앱 기반 서비스가 소비자가 접하는 UI나 인프라인 비즈니스 로직으로 구성되기 때문이다. 현재 서버리스 분야의 대표적인 주요 서비스로는 아마존의 람다, 마이크로소프트의 애저 함수, 구글의 클라우드 함수를 예로 들 수 있으며, 국내에서는 에스케이㈜ 씨앤씨가 클라우드제트(Cloud Z) 액션 같은 FaaS 플랫폼으로 서버리스 서비스를 제공하고 있고, 삼성SDS㈜는 이스라엘의 이과지오(Iguazio)에 투자하여 직간접적으로 참여하고 있다. 이 중에서 가장 서버리스 서비스에 집중하고 있는 곳은 람다를 제공하는 아마존 웹서비스로, '아마존 웹서비스 리인벤트 2018' 행사에서 "서버리스는 현대 시스템에 가장 이상적인 환경'이라고 언급했다.[7]
아마존 웹서비스[편집]
아마존에서 개발한 상품으로, 운영상의 책임을 아마존 웹서비스로 전환하여 신속하고 혁신적인 개발이 가능하도록 돕는 클라우드의 네이티브 아키텍처이다. 서버는 고려하지 않고 애플리케이션을 구축하고 실행할 수 있고, 서버 또는 클러스터 프로비저닝, 패치 적용, 운영 체제 유지 보수, 관리 및 용량 프로비저닝과 같은 인프라 관리 작업을 덜어낸다. 거의 모든 유형의 애플리케이션이나 백엔드 서비스를 구축할 수 있으며, 애플리케이션을 고가용성으로 확장 개발하는데 필요한 모든 사항이 자동으로 처리된다. 또, 고객은 비교적 저렴한 비용으로 신속하게 애플리케이션을 빌드하는 것이 가능하다. 여기서 애플리케이션을 빌드한다는 것은 개발자가 클라우드나 온프레미스의 서버나 런타임 관리 및 운영에 신경 쓰고 걱정하지 않고 애플리케이션의 주된 핵심 기술에 집중할 수 있다는 뜻이다. 즉, 오버헤드의 감소로 개발자는 시간과 체력의 여유가 생길 수 있고, 더욱 안정적인 제품을 개발할 수 있다. 아마존 웹서비스는 서버리스 플랫폼으로 다음과 같은 관리 서비스를 제공한다.[6]
- 컴퓨팅 : 람다를 사용하면, 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있다. 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금을 부과하지 않는다. 람다 엣지를 사용하면, 아마존 클라우드 프런트 이벤트에 대한 응답으로 아마존 웹서비스 엣지 로케이션에서 람다 함수를 실행할 수 있다. 아마존 파게이트(Fargate)를 사용하면, 컨테이너 실행에 필요한 인프라를 조정 및 관리할 수 있다.
- 스토리지 : 아마존 심플 스토리지 서비스(S3)는 간단한 웹 서비스 인터페이스를 통해 웹 어디서나 원하는 양의 데이터를 저장 및 검색할 수 있어 사용이 용이하다. 아마존 EFS는 간단하고 확장할 수 있어 탄력적인 파일 스토리지를 제공한다. 수요에 따라 크기를 조정하여 파일을 추가 또는 제거할 때 확장과 축소가 자동으로 이루어진다.
- 데이터 스토어 : 아마존 RDS 프록시는 관계형 데이터베이스에 대한 동시 연결 수천 개를 관리하는 고가용성 데이터베이스 프록시이다. 확장성이 높고 안전하다.
- API 프록시 : 아마존 API 게이트웨이는 어떤 규모에서든 개발자에게 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보호를 지원하는 안전관리형 서비스이다. API에 대한 포괄적인 플랫폼을 제공한다.
- 애플리케이션 통합 : 아마존 SNS와 아마존 SQS을 사용하면, 마이크로서비스, 분산 시스템 및 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있다. 아마존 이벤트 브릿지는 다양한 소스의 애플리케이션 데이터에 손쉽게 액세스하여 아마존 웹서비스 환경으로 전송할 수 있는 서버리스 이벤트 버스 서비스이다.
- 개발자 도구 : 개발자가 서버리스 애플리케이션 개발 프로세스에 사용할 수 있는 도구와 서비스를 제공한다. 파트너 에코시스템은 통합, 전달, 테스트, 배포, 모니터링, 진단, SDK, 프레임워크, 통합 개발 환경 플러그인을 위한 도구를 제공한다.
클라우드 제트[편집]
에스케이㈜ 씨앤씨에서 제공하는 글로벌 멀티 클라우드 서비스로, IaaS, PaaS, SaaS 등의 클라우드 서비스와 이를 기반으로 ICT 신기술 요소를 결합한 종합 IT 서비스이다. 주로 컨설팅 서비스와 카이그레이션 서비스, 관리 서비스를 제공한다. 컨설팅 서비스는 대외 환경 분석을 통해 클라우드 도입을 위한 방향성을 정립한 후, 이에 따른 목표 클라우드 아키텍처, 이행 과제, 이행 로드맵 및 재무적 기대 효과를 도출한다. 마이그레이션 서비스는 다양한 환경에서 검증된 표준 프로세스를 기반으로 제공된다. 관리 서비스는 공인된 엔지니어와 클라우드 전문가로 구성된 전담팀을 통해서 인프라의 전반적인 성능의 모니터링부터 조정까지 전반적으로 제공된다. 에스케이㈜ 씨앤씨는 클라우드 제트의 60개의 글로벌 클라우드 센터를 바탕으로 국내 인디게임 사들이 국내뿐만 아니라 글로벌 시장에서도 활동할 수 있도록 지원하기도 했다. 그 예로, 2018년 7월에 에스케이㈜ 씨앤씨는 한국 인디게임협회와 함께 국내 인디게임 분야를 지원하는 '인디게임 개발팀과 클라우드 제트의 좌충우돌 게임 개발기'를 시작했다. 인디게임 개발팀 두 곳을 선정하여 게임 개발의 론칭부터 마케팅까지 지원하는 프로그램이다. 개발팀은 6개월간 클라우드 제트를 활용하여 인디 게임에 특화된 인프라와 네트워크 설계 및 운영, 주기적인 게임 품질 및 성능 테스트를 이용할 수 있고, 게임 론칭 후 1개월간의 론칭 안정화 단계까지 클라우드 제트 인프라를 무료로 제공받았다.[8][9]
스카이허브[편집]
국내기업 ㈜디에스랩글로벌에서 개발한 상품으로, 코딩 없이 클릭만으로 백엔드 서버를 구축할 수 있는 백엔드 자동화 기능을 제공한다. 코딩없이 각 데이터의 아키텍처를 추가하고 수정할 수 있으며, 통합된 대시보드에서 각 데이터의 현황을 실시간으로 확인할 수 있다. 사용자의 상황과 요청에 따라 커스터마이징 대시보드도 제공된다. 스카이허브를 통해 사용자의 백데이터에 맞는 데이터 관리 시스템도 구축한다. 스카이 인사이트를 통해 백데이터를 이용하여 다양한 인사이트를 확보하며, 백데이터를 바탕으로 인사이트를 추출할 수 있는 차트 라이브러리를 제공한다. ㈜디에스랩글로벌에서는 스카이허브를 사용했을 때 백엔드 개발 시 코딩 사용 횟수 0회, 절감되는 시간과 비용 85%, 시스템 교체 시 연동 가능성 100%, 추가 기능 개발 시 개발 속도는 4배라고 마케팅하고 있다. 동종업계의 다른 상품들과 다른 차별점은 맞춤형 백엔드 서비스를 제공하고 있다는 것이다. 사물인터넷, 학원 관리, 병원 관리와 같은 각종 관리 시스템이나, 발전소, 의료기기, 야생동물, 교통상황 등의 실시간 모니터링 시스템, 그리고 공장자동화, 앱 백데이터, 제조기기 관리 등 데이터 시스템까지 적용 가능한 폭이 넓다.[10][11]
노드제이에스[편집]
크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다. 비동기 이벤트를 주도하는 자바스크립트 런타임으로써, 노드제이에스는 확장성 있는 네트워크 애플리케이션을 만들 수 있도록 설계되었다. 서버의 자원을 극대화하기 위해서 나온 런타임으로, 한정적인 자원을 최대한 효율적으로 사용하기 원하는 기업이나 개발자를 위해 만들어졌다. 서버 사용 최적화 때문에 다운 현상을 크게 줄일 수 있어서, 지속적인 서비스가 가능한 메신저나 대규모 거래사이트 등에서도 사용된다. 노드제이에스를 적용한 대표적인 기업은 전투기도 판매하는 이베이, 마이크로소프트의 윈도우 애저 등이 있다.[12] 다음 '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 });
이는 오늘날의 운영체제 스레드가 일반적으로 사용하는 동시성 모델과는 대조적으로, 스레드 기반의 네트워크는 비교적 사용하기 매우 어렵고 비효율적이다. 노드제이에스에는 잠금이 없어 사용자가 프로세스의 교착상태에 대해 걱정할 필요가 없다. I/O를 직접 수행하는 함수는 거의 없어서 프로세스 결과가 블로킹 되지 않는다. 아무것도 블로킹 되지 않으므로 노드제이에스에서는 확장성 있는 시스템을 개발하는데 아주 자연스럽고 유용하다. 여기서 블로킹이란 노드제이에스 프로세스에서 추가적인 자바스크립트의 실행을 위해 자바스크립트가 아닌 작업이 완료될 때까지 기다려야 하는 상황을 가리킨다. 이벤트 루프가 블로킹 작업을 하는 동안 자바스크립트 실행을 계속할 수 없기 때문에 발생한다.
노드제이에스는 설계상에서 루비의 이벤트 머신이나 파이썬의 Twisted에 영향을 받았다. 좀 더 발전된 이벤트 모델을 선택하여 라이브러리가 아닌 런타임 생성자로 이벤트 루프를 제공한다. 이에 비해 다른 시스템에서는 이벤트 루프를 시작하는 블로킹 호출이 항상 존재한다. 보통은 스크립트의 첫 부분에서 콜백을 통해 동작을 정의하고, 마지막에서 블로킹 호출을 하여 서버를 시작한다. 그러나 노드제이에스에서는 이 같은 이벤트 루프를 실행하는 호출이 없으며, 더이상 실행할 콜백이 없다면 이벤트 루프를 종료한다. 또, 노드제이에스에서 HTTP를 일급객체로 두고 스트리밍과 저지연을 염두한 채, 웹 라이브러리나 프레임워크 기반으로 적합하게 설계되었다. 스레드를 사용하지 않도록 설계되었지만, 멀티 코어 환경의 장점이 없다는 뜻이 아니며, 자식 프로세스를 생성할 수 있는 API를 제공하고 있다. 다수의 코어에 로드 밸런싱이 가능하도록 프로세스 간의 소켓을 공유할 수도 있다.[13]
관련 용어[편집]
- 백 엔드 프로세서 : 후위 처리 장치를 뜻한다. 주 프로세서에 물리적, 논리적으로 결합하여 특정한 처리를 분담하여 실행하는 프로세서이다. 정보처리 시스템의 성장으로 프로세서 하나로 구축하는 것이 힘들어졌다. 이를 해결하기 위해 호스트 컴퓨터의 앞뒤로 컴퓨터를 설치하여 호스트 컴퓨터의 부담을 줄였고, 이를 통해 대규모 시스템을 설치할 수 있게 되었다. 여기서 앞뒤로 설치된 컴퓨터의 앞부분은 프런트 엔드 프로세서(FEP)라고 하고, 뒷부분은 백 엔드 프로세서라고 부른다. 분산 처리 방법에는 물리적, 논리적으로 꼼꼼하게 결합하는 방식과 통신회선 등으로 성글게 결합하는 방식이 있다. 백엔드 프로세서는 꼼꼼하게 결합하는 방식에서 주 프로세서와 버스나 채널 등으로 결합된다. 주 프로세서의 일부를 프로세서의 의뢰로 실행하여 기능을 분담하고, 주 프로세서의 뒤에서 주 프로세서의 부하를 줄이기 때문에 백 엔드 프로세서라고 불린다. 특정한 처리만 진행하면 되기 때문에 특정 처리만 최적하게 설계해서 시스템 전체의 경제적인 부담을 줄일 수 있다.[14]
- 백엔드 서비스(Backend as a Service) : 서비스형 백엔드 또는 바스(BaaS)라고도 부른다. 웹 및 모바일 애플리케이션 개발자를 위한 클라우드 서비스로, 모바일 애플리케이션에 특화되어 있다. 개발자는 애플리케이션을 개발할 때 일반적으로 모바일 애플리케이션의 백엔드로 자주 사용되는 사용자 관리 및 접속 제어, 푸시 알림, 데이터 저장, SNS, 위치 서비스 등의 백엔드 기능을 구현하기 위해 코드를 직접 개발해야 하지만, 백엔드 서비스를 사용하면 직접 코드를 개발하지 않고 앱을 클라우드와 연동 시켜 백엔드 서비스에서 제공하는 API를 호출하여 사용한다. 따라서 개발 시간을 단축하고 코드의 복잡성을 줄일 수 있다. 소프트웨어 개발 플랫폼을 제공하는 PaaS와 유사하나 백엔드 서비스는 모바일 앱 개발을 위한 특화된 클라우드 서비스이다. 관련 업체로 킨비(Kinvey)와 파스(Parse)를 손꼽을 수 있다. 파스는 10만 개가 넘는 애플리케이션이 이용한 기업으로, 페이스북의 개발자들이 빠르게 애플리케이션을 개발할 수 있도록 지원하기 위해 2013년에 SNS 페이스북에서 인수했다.[15]
각주[편집]
- ↑ 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
- ↑ 6.0 6.1 아마존 웹서비스 공식 홈페이지 서버리스 소개 - https://aws.amazon.com/ko/serverless/
- ↑ 석대건 기자, 〈'개발자는 개발만 하고 싶다'...서버리스, 백엔드 구축도 클라우드 시대〉, 《디지털투데이》, 2019-06-11
- ↑ 에스케이㈜ 씨앤씨, 〈SK㈜ C&C Cloud Z(클라우드 제트), 인디게임사 직접 육성 나선다〉, 《에스케이㈜씨앤씨공식블로그》, 2018-07-05
- ↑ 에스케이㈜ 씨앤씨 공식 홈페이지 클라우드 제트 소개 - https://www.cloudz.co.kr/cloudz/cloudz_info
- ↑ 스카이허브 공식 홈페이지 - https://www.nectit.com/
- ↑ 이영우 기자, 〈‘스카이허브’, 코딩 필요 없는 백엔드 자동 구축 솔루션〉, 《대한민국청소년의회뉴스》, 2019-06-24
- ↑ 텐던시 티랩, 〈노드제이에스(Node.JS)란 무엇인가?〉, 《텐던시》
- ↑ 노드제이에스 공식 홈페이지 소개 - https://nodejs.org/ko/about/
- ↑ 백 엔드 프로세서 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=869815&cid=42388&categoryId=42388
- ↑ 서비스형 백엔드 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=2751840&cid=42346&categoryId=42346
참고자료[편집]
- 프런트엔드와 백엔드 위키백과 - 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://terms.naver.com/entry.nhn?docId=869815&cid=42388&categoryId=42388
- 서비스형 백엔드 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=2751840&cid=42346&categoryId=42346
- 에스케이㈜ 씨앤씨 공식 홈페이지 클라우드 제트 소개 - https://www.cloudz.co.kr/cloudz/cloudz_info
- 아마존 웹서비스 공식 홈페이지 소개 - https://aws.amazon.com/ko/serverless/
- 클라우드 제트 공식 홈페이지 소개 - https://www.cloudz.co.kr/cloudz/cloudz_info
- 노드제이에스 공식 홈페이지 소개 - https://nodejs.org/ko/about/
- 스카이허브 공식 홈페이지 - https://www.nectit.com/
- 텐던시 티랩, 〈노드제이에스(Node.JS)란 무엇인가?〉, 《텐던시》
- 이두현 기자, 〈Amazon Web Service로 모바일 게임 백엔드 개발 끝낸다〉, 《인벤》, 2017-09-03
- 에스케이㈜ 씨앤씨, 〈SK㈜ C&C Cloud Z(클라우드 제트), 인디게임사 직접 육성 나선다〉, 《에스케이㈜씨앤씨공식블로그》, 2018-07-05
- 송은우, 〈[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
같이 보기[편집]