[CS] - 백엔드

박진우·2022년 8월 4일
2

Computer Science

목록 보기
2/7
post-thumbnail

💡 프론트엔드 | 백엔드


일반적으로 프론트엔드(front-end) 백엔드(back-end) 라는 용어는 프로세스의 처음마지막 단계를 가리킨다. front-end 는 사용자로부터 다양한 형태의 입력을 받아 back-end 가 사용할 수 있는 규격,규칙을 따라 처리할 책임을 진다.

front-end back-end로 연결하는 것은 인터페이스의 일종이다.

소프트웨어 공학에서 프론트엔드와 백엔드라는 용어는 소프트웨어의 presentation layer(프론트엔드)과 data access layer(백엔드) 또는 물리 구조 또는 하드웨어 사이의 관심사를 분리하는 것을 의미한다. 클라이언트 - 서버 모델에서 클라이언트는 일반적으로 프론트엔드로 간주되며 서버에서 실제로 presentation 작업이 수행되는 경우에도 일반적으로 서버가 백엔드로 간주된다.

흔히 웹에서 프론트엔드는 사용자에게 시각적으로 보여지는 부분,

백엔드는 백엔드라는 용어에서 볼 수 있듯이 웹사이트나 웹 애플리케이션 또는 모바일 솔루션의 프로세스와 관련된 서버측(server-side)과 데이터베이스를 관리하고, 실질적으로 사용자들이 원하는 정보를 제공할 수 있도록 데이터를 관리하거나 서버를 운영한다고 볼 수 있다.

크게 말하자면 드러나지 않는 DB 공간(회원가입, 로그인),서버를 의미한다.


기업에서 새로운 웹서비스나 모바일 애플리케이션을 준비하는 과정에서 서비스 기획자, UI/UX 디자이너, 웹 디자이너, 프론트엔드, 벡엔드 혹은 풀스택(Full-Stack), 서버 엔지니어 등의 인원을 필요로 하게 된다.

백엔드에서는 데이터를 저장하고 관리하며, 웹사이트의 클라이언트에서 모든 것이 자연스럽고,정상적으로 작동할 수 있게 해준다.

백엔드는 사용자들이 눈으로 직접 확인하거나, 상호작용할 수는 없지만, 소프트웨어 개발의 일부분인 것은 맞다고 할 수 있다.

백엔드에서는 프론트엔드에 있는 사용자들이 취하는 행동들을 처리합니다. 즉, 사용자들은 백엔드에 간접적으로 액세스하는 것이죠. 백엔드 개발에는 사용자 인터페이스가 없는 시스템 컴포넌트 작업, API 작성, 라이브러리 생성, 데이터베이스 통합 등 다양한 활동들이 포함되어 있다.

시스템이나 서비스의 규모에 따라 차이가 있겠지만 결국 훌륭한 백엔드 개발자로 성장 하기 위해서는 다양한 범위의 지식 경험을 가지고 있어야 한다




💡 백엔드 개발자

출처: https://medium.com/devtrailsio/beginners-web-development-guide-part-2-backend-fd466212dbfc


◽백엔드 개발에서 사용되는 언어 & 용어

백엔드는 프론트엔드에 비해 프로그래밍 언어 선택의 폭이 넓습니다.
어떠한 언어라도 개발이 가능한 편이기 때문에 언어에 크게 좌우되는 편은 아니다.
그렇기 때문에 백엔드에서는 해당 언어가 가진 특성과 작업물 및 작업 방향과의 일치성 등을 고려하여 선택하는 것이 좋다.

◾ PHP

특별히 웹 애플리케이션 개발을 위해서 고안된 서버 측 스크립트 언어이자, 수많은 웹 시스템의 기반이 되는 언어로, PHP는 서버 측에서 실행되기 때문에, 특히 서버 측 언어로서 많은 인기를 얻고 있다.

또한 PHP는 자동으로 HTML 문서를 생성하기 때문에 동적으로 신속하게 HTML문서를 만들 수 있고, DB와 상호작용을 하면서 데이터를 저장하고, 표현하는 서버와 브라우저 간의 연결고리 역활을 수행한다.


◾ Node.js

노드는 크로스 플랫폼의 오픈소스 런타임(run time) 환경으로써, 브라우저의 외부에서 자바스크립트 코드를 실행할 수 있게 해줍니다. 노드는 프로그래밍 언어도 아니고, 프레임워크도 아니고,웹 서버도 아니다. 노드는 그저 Javascript 런타임일 뿐이다.

Node.js는 입출력이 잦은 어플리케이션, 데이터 스트리밍 어플리케이션, 데이터를 실시간으로 다루는 어플리케이션, JSON API 기반 어플리케이션, 싱글페이지 어플리케이션 등 이와 같은 분야에서 사용된다면 좋은 효율성을 가진다.

확장성이 뛰어나고 반응속도가 빠르며 많은 양의 요청도 처리 가능하기에 웹서버의 동작을 더욱 효과적으로 통제할 수 있다.
하지만 언어가 아니라 소프트웨어 플랫폼이어서 그 자체로는 아무것도 하지 못하고 서버를 직접 구현해야 한다는 특징이 있다.

이미 노드는 모바일이나 웹 어플리케이션용 API와 같은 백엔드 서비스 개발을 위해서 사용된다.
야후,이베이,우버,마이크로 소프트, 넷플릭스 등 포춘지 선정 500대 기업에서 많이들 사용하고 있다.


◾ Javascript

자바스크립트는 객체(Object) 기반의 스크립트 언어다.
스크립트 언어란, 응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어를 가리키며, 자바스크립트 외에도 제이쿼리(jQuery), PHP, 파이썬(Python), 루비(Ruby) 등이 스크립트 언어에 해당 자바스크립트는, 프론트엔드 백엔드 모두에서 사용할 수 있는 프로그래밍 언어다.

◾ C++

C++은 객체 지향 및 멀티 패러다임을 지원하는 프로그래밍 언어다.
C언어에는 없는 객체지향 프로그래밍을 지원하기 위한 C언어의 확장판으로 생각해도 무방할 것이라고 생각한다.

C++은 강력하면서도 유연하다는 장점을 가지고있으며, C언어를 모두 포함하면서 클래스,연산자,중복,가상 함수 등과 같은 특징을 갖추고 있어 객체지향 프로그래밍까지 적합한 언어지만 내용이 매우 방대하고 어려운게 특징이다.

C++은 요즘에도 경쟁력을 갖추기 위해서 가장 널리 사용되는 프로그래밍 언어이며, 또한, 백엔드 언어로도 많은 인기를 얻고 있다.

◾ Java

자바는 가장 인기 있는 프로그래밍 언어들 중 하나이며, 자바의 컴포넌트는 쉽게 사용할 수 있기 때문에 확장성이 아주 뛰어난 플랫폼이라고 말할 수 있다.

자바는 특정 플랫폼에 의존하지 않은 독립성을 갖추고 있고, 생산성 과 안정성, 호환성, 가독성이 좋아 개발자 커뮤니티에서 널리 사용되고 있다.

◾ Python

: 파이썬은 개발자들이 시스템을 효율적으로 통합하고, 빠르게 작업할 수 있게 해주는 최고의 프로그래밍 언어로 딥러닝, 데이터 사이언스, AI 분야에서 많이 사용된다.

파이썬은 문법이 누구나 배우기 쉽고 응용력이 좋은 장점을 가지고 있는게 특징이다.


◾ Ruby

Ruby는 일본 에서 개발한 스크립트 언어이자, 순수한 객체 지향 프로그래밍 언어다.

Python과 유사한 점이 많으며, 실제로 두 언어는 일종의 라이벌 관계라고 말할 수 있다.

Ruby는 사람에게 매우 친숙한 언어를 지향하기 때문에 원하는 부분을 자유롭게 바꿀 수 있는 유연성과 함께 블록이나 믹스인과 같이 다른 언어가 가지고 있지 않은 다양한 매력을 보유하고 있지만 고성능 프로그래밍 언어가 아니라는 단점도 있다.

◾ Express

익스프레스는 웹 애플리케이션 구축에 사용되는 노드(Node.js)용 무료 오픈소스 프레임워크이고, 익스프레스는 MIT의 라이선스에 의해 공개되고 있으며, API를 만들고 웹 애플리케이션을 구축할 수 있게 해준다.


◾ Laravel

라라벨은 무료이며, 오픈소스인 PHP 웹 프레임워크다.

캐싱(caching), 라우팅(routing), 인증(authentication), 세션(session)과 같은 대부분의 웹 개발에서 사용되는 공통 작업들을 심플하게 만들어주며, 어플의 기능에 영향을 주지 않으면서 프로그래머에게 개발 프로세스를 간단하게 해준다.


◾ C#

C# 은 유연하면서도 강력한 프로그래밍 언어다.

다양한 종류의 애플리케이션을 만드는 데 사용될 수 있고, 이 기술은 개발 도구, 웹사이트, 컴파일러와 같은 다양한 프로젝트에 사용되고 있으며, C#은 객체지향(object-oriented) 프로그래밍 언어를 만드는 데 도움이 된다.

◾ Django

Django는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework)

비교적 입문이 쉬운 언어인 파이썬으로 제작되어 진입장벽이 낮고 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어져있어 특유의 높은 생산성으로 스타트업에서 많이 사용되는 웹 프레임워크다.

또한 Django의 특징은 풍부한 개발환경, 소스 변경사항 자동 반영, 자주 이용되는 내용을 저장해 두었다가 재사용해서 성능을 높이는 캐시 시스템, 내부적으로 확장이 가능하고, 디자인이 간편한 자체 탬플릿 시스템 , 다양하고 강력한 라이브러리, 다양한 운영체제(OS) 활용 등 과 같은 특징이 있으며

익히기 쉬운 만큼 개발속도도 빠르고, 코드의 완성도를 높게 유지할 수 있으며 확장성 또한 좋다.


◾ Spring

스프링은 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크다.

spring.io 사이트에서 확인하면 스프링 프레임워크는 현대 자바 기반의 엔터프라이즈 어플리케이션을 위한 프로그래밍Configuration Model 제공한다라고 언급하고 있다.

JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용하며, JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있다.

JAVA의 활용도가 높아짐에 따라 프로젝트 규모 또한 커지게 되었다. JAVA에서 JSP, MyBatis, JPA 등 여러가지 기술을 사용하는데 이 기술을 Spring을 이용하여 좀더 편하게 사용할수 있는것이다. 또한 Spring은 중복코드의 사용률을 줄여주고, 비즈니스 로직을 더 간단하게 해줄수 있다.

즉 Spring이란 JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크라고 할 수있다.


◾ REST API

백엔드 개발자의 시작은 바로 프론트엔드와 연동하기 위한 API 개발이라고 말할 수 있다.

API

  • 애플리케이션 프로그래밍 인터페이스(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다.

  • 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성합니다.

  • EX) 근무 시간 기록 애플리케이션은 직원의 전체 이름과 날짜 범위를 요청하는 API를 표시합니다. 이 정보가 수신되면 내부적으로 직원의 근무 시간 기록을 처리하고 해당 날짜 범위에서 근무한 시간을 반환합니다.

출저: https://aws.amazon.com/


REST API 를 시작하면 좋은 이유는 오랫동안 API개발의 표준 처럼 사용 되어 왔고 서버개발의 전반적인 흐름을 이해 하는데 도움이 되기 때문이다.

최근에는 GraphQL을 도입하는 회사들도 많아지고 개발 생산성도 좋은 편이지만 아직 까지는 좋은 백엔드 개발자가 되기 위해서는 REST API를 먼저 익히고 학습 하는게 좋다고 생각한다.

REST(Representational State Transfer)는 로이 필딩의 2000년 박사학위 논문에서 처음으로 소개된 개념이며, 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스 를 뜻한다.

로이 필딩 교수는 HTTP의 주요 저자 중 하나였으며, 당시 웹에서 통신이 사용되는 방식에 보완할 점이 많다고 생각한 후 웹의 장점을 최대한 잘 활용할 수 있는 아키텍처로써 REST를 발표했다고 한다.

개념을 간단히 표현하자면 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 명시된 해당 자원에 대한 CRUD Operation(Create, Read, Update, Delete)을 적용하는 것을 의미한다.

즉, 컴퓨터나 시스템과 상호 작용하여 정보를 검색하거나 기능을 수행하고자 할 때 API는 사용자가 원하는 것을 시스템에 전달할 수 있게 지원하여 시스템이 이 요청을 이해하고 이행하도록 할 수 있다.

0개의 댓글