개발자는 크게 프론트엔드와 백엔드로 나뉩니다.
프론트엔드와 백엔드의 차이점에 대해 알아보고 제가 백엔드 개발자가 되고싶은 이유에 대해 기록해보고자 합니다.
프론트엔트?
사용자가 웹 사이트 또는 웹 애플리케이션의 URL을 입력하거나 모바일 애플리케이션을 다운로드할 때, 사용자들은 아주 깔끔한 레이아웃을 가진 인터페이스를 보게 됩니다. 이렇게 인터페이스(User Interface)라고 해서 사용자가 마주 보는 화면, 즉 웹사이트에서 나타나는 텍스트나 이미지 그리고 버튼을 클릭하는 것 등 사용자가 마주하는 '앞단'의 것을 '테크놀로지 분야에서 ‘프론트엔드’라고 부릅니다. 프론트엔드는 사용하기 쉽고 완전한 기능을 갖춘 인터페이스를 갖추었을 때만 사용자들의 참여를 끌어내기 때문에 아주 중요한 요소가 됩니다. 서비스의 경쟁력을 유지하기 위해서는, 매끄럽게 동작하는 강력한 프론트엔드를 구축하는 것이 매우 중요합니다. 그리고 이러한 사용자 인터페이스를 개발하는 사람이 프론트엔드 개발자입니다.
프론트엔드 개발자?
프론트엔드 개발자는 여러분이 지금 보고 있는 웹사이트, ‘웹’을 개발하는 웹 개발 영역 중 사용자가 눈으로 보는 영역을 구축하고, 기능을 구현하는 개발자입니다. 눈으로 보는 영역이라 함은 버튼, 입력창, 페이지 내의 애니메이션, 즉 UI(User Interface)를 의미합니다. 프론트엔드 개발자는 실제로 화면 작업과 더불어 웹에서 벌어지는 모든 일들을 도맡아 하게 됩니다. 프론트엔드 개발은 주로 웹 및 모바일 솔루션의 사용자 인터페이스(UI)와 사용자 경험(UX)을 만드는 데 초점을 맞추고 있습니다.
우리가 사용하는 모든 웹은 HTML, CSS, Javascript 언어로 구성됩니다. 시선을 사로잡는 프론트엔드를 만드는 데는 HTML, CSS, 자바스크립트(Javascript)가 중요한 역할을 합니다. HTML, CSS 는 우리가 시각적으로 볼 수 있게 화면을 보여주는 역할을 합니다. 이 때 고정된 화면에서 사용자들이 버튼을 클릭하거나 로그인, 결제하기 등의 동적인 기능을 사용하기 위해선 Javascript 언어를 사용하게 됩니다. 따라서 프론트엔드 개발자가 되기 위해서는 필수적으로 HTML, CSS, JavaScript라는 언어를 학습해야 합니다. 프론트엔드 개발은 웹사이트에서 눈에 보이는 부분을 세련되고, 편하게 만드는 것에 관심이 많을수록 재미를 붙이며 학습할 가능성이 높습니다.
백엔드?
백엔드는 사용자들이 원하는 정보를 제공할 수 있도록 데이터를 관리하더나 서버를 운영하는 등 '뒷단'의 영역을 의미합니다. 용어 자체에서 알 수 있듯이, 백엔드는 웹사이트나 웹 애플리케이션 또는 모바일 솔루션의 프로세스와 관련된 서버 측(Server-side)과 데이터베이스를 관리해 주는 테크놀로지입니다. 프론트엔드가 눈에 직접 보이는 영역이었다면, 백엔드는 눈에 보이지 않는 서버에서 작용하는 기술을 다룹니다. 백엔드 개발자는 여러분이 지금 보고 있는 홈페이지, ‘웹’을 개발하는 웹 개발 영역 중 사용자가 필요로 하는 정보를 저장 및 관리하고, 전달하는 영역을 담당하는 개발자입니다.
백엔드 개발자?
백엔드 개발자는 IT 서비스에 필수적인 데이터들과 관련된 모든 프로그램을 관리하는 직군입니다. 쉽게 말해 지금 보고 있는 홈페이지, ‘웹’을 개발하는 웹 개발 영역 중 사용자가 필요로 하는 정보를 저장 및 관리하고, 전달하는 영역을 담당하는 개발자입니다. 웹사이트를 이용하는 사용자들의 정보 등 데이터가 쌓여 있는 데이터베이스를 관리하고, 웹사이트에서 사용자가 어떠한 이미지를 보기 위해 검색을 할 때, 서버가 사용자의 요청에 응답해 원하는 이미지 검색결과를 내보내는데 여기서 데이터를 저장하는 데이터베이스부터 시작해서 데이터를 처리하기 위한 API 서버, 파일들을 저장하는 스토리지 등 서버 측 개발 분야입니다. 백엔드는 사용자들이 직접 보거나 상호작용할 수는 없지만, 사용자가 보지 못하는 영역에서 원활하게 웹사이트, 웹 애플리케이션을 이용할 수 있도록 도와주는 역할을 하며 프론트엔드에 있는 사용자들이 취하는 행동들을 처리합니다. 즉, 사용자들은 백엔드에 간접적으로 액세스하는 것입니다. 백엔드 개발에는 사용자 인터페이스가 없는 시스템 컴포넌트 작업, API 작성, 라이브러리 생성, 데이터베이스 통합 등 다양한 활동들이 포함되어 있습니다.
백엔드 개발자의 역할
백엔드 개발자의 역할을 대표적으로 나눠보면 아래와 같이 나눠볼 수 있을 듯 합니다.
- API 개발: API 서버는 클라이언트와 통신해서 데이터를 넘겨줍니다. 백엔드 개발자는 API 서버에서 클라이언트의 요청에 응답할 수 있도록 API를 개발합니다.보통 API 서버는 데이터베이스와 긴밀하게 연결되어 있습니다. 로그인, 회원가입, 상품 리스트 받기, 결제하기 등의 핵심 기능들은 전부 데이터베이스가 필요합니다. 그러면 결국 백엔드 개발자는 해당 API 를 개발하면서 동시에 데이터베이스도 다루게 되는 것입니다.
- 데이터베이스 : 데이터베이스에는 서비스에 필요한 모든 데이터들이 들어 있습니다. 백엔드 개발자는 해당 데이터들을 개념적으로 구분해서 넣을 수 있는 테이블(공간)을 설계하게 됩니다. 그리고 테이블 안에는 필드를 통해 데이터를 구분하게 됩니다. 상품이라는 테이블을 만들 때는 이메일, 닉네임, 성별 등의 정보들을 저장할 수 있는 필드를 설계합니다. 이를 데이터 모델링 한다고도 이야기 합니다.
- 서버 및 클라우드 관리 : 웹을 제공하기 위해서는 웹 서버 가 필요합니다. 데이터를 제공하기 위해선 데이터베이스 서버 가 필요합니다. 클라이언트와 데이터 통신을 하기 위해선 API 서버 가 필요합니다. 요새는 서버를 쉽게 구축할 수 있는 클라우드를 대부분 사용합니다. 백엔드 개발자들은 클라우드를 이용해서 서버들을 구축하게 됩니다. 서버를 구축한다는 말은 컴퓨터에 클라이언트에게 정보를 줄 수 있는 서버 프로그램을 설치하는 것을 의미합니다. 아무 것도 없는 컴퓨터에서 서버 프로그램을 설치하고 그 안에 개발된 코드를 실행시키는 거라고 보시면 됩니다. 백엔드 개발자는 서버를 구축하는 것 뿐만 아니라 효율적으로 관리하기 위해 아키텍처도 배워야합니다.
백엔드를 개발하기 위해서는 웹 서비스의 전체적인 구조를 이해하고 있어야 하고 흔히 말하는 ‘논리적 사고’로 접근해야 합니다. 보드게임에 비유하자면 단순하게 푸는 게 아니라 효율성을 따지고, 빠르게 풀 수 있는 방법을 찾는 것을 좋아한다면 백엔드를 즐겁게 배울 가능성이 높습니다. 백엔드는 앞서 말한 프론트엔드의 언어와 다르게 한 가지 언어에 집중해서 학습하면 됩니다.
백엔드 개발에서 사용되는 언어들은 어떤 것들일까?
PHP
: 특별히 웹 애플리케이션 개발을 위해서 고안된 서버 측 스크립트 언어입니다. PHP는 서버 측에서 실행되기 때문에, 특히 서버 측 언어로서 많은 인기를 얻고 있습니다.
Node.js
: 노드는 크로스 플랫폼의 오픈소스 런타임(run time) 환경으로써, 브라우저의 외부에서 자바스크립트 코드를 실행할 수 있게 해줍니다. 노드는 프로그래밍 언어도 아니고, 프레임워크도 아닙니다. 노드는 모바일이나 웹 어플리케이션용 API와 같은 백엔드 서비스 개발을 위해서 사용됩니다. 이미 페이팔, 우버, 월마트, 넷플릭스 등 포춘지 선정 500대 기업에서 많이들 사용하고 있습니다.
Javascript
: 앞서 프론트엔드 때 소개해드렸던 자바스크립트는, 프론트엔드 백엔드 모두에서 사용할 수 있는 프로그래밍 언어입니다.
C++
: C++은 요즘에도 경쟁력을 갖추기 위해서 가장 널리 사용되는 프로그래밍 언어입니다. 또한, 백엔드 언어로도 많은 인기를 얻고 있죠.
Java
: 자바는 가장 인기 있는 프로그래밍 언어들 중 하나이며, 개발자 커뮤니티에서 널리 사용되고 있는데요. 자바의 컴포넌트는 쉽게 사용할 수 있기 때문에 확장성이 아주 뛰어난 플랫폼이라고 말할 수 있습니다.
Python
: 파이썬은 개발자들이 시스템을 효율적으로 통합하고, 빠르게 작업할 수 있게 해주는 최고의 프로그래밍 언어입니다.
Ruby
: 동적 객체 지향 스크립트 언어입니다. 배우기 쉽고, 확장성도 높지만 파이썬과 마찬가지로 느리고, 국내 사용률이 저조해서 많이 사용하지 않는 언어입니다.
백엔드에서 사용되는 테크놀로지는 무엇일까?
Express
: 익스프레스는 웹 애플리케이션 구축에 사용되는 노드(Node.js)용 무료 오픈소스 프레임워크입니다. 익스프레스는 MIT의 라이선스에 의해 공개되고 있으며, API를 만들고 웹 애플리케이션을 구축할 수 있게 해줍니다.
Laravel
: 라라벨은 무료이며, 오픈소스인 PHP 웹 프레임워크입니다. 캐싱(caching), 라우팅(routing), 인증(authentication), 세션(session)과 같은 대부분의 웹 개발에서 사용되는 공통 작업들을 심플하게 만들어줍니다. 또한, 어플의 기능에 영향을 주지 않으면서 프로그래머에게 개발 프로세스를 간단하게 해준다는 장점이 있습니다.
C#
: C#은 유연하면서도 강력한 프로그래밍 언어입니다. 다양한 종류의 애플리케이션을 만드는 데 사용될 수 있는데요. 이 기술은 개발 도구, 웹사이트, 컴파일러와 같은 다양한 프로젝트에 사용되고 있습니다. C#은 객체지향(object-oriented) 프로그래밍 언어를 만드는 데 도움이 됩니다.
나는 왜 백엔드 개발자인가?
개발자를 꿈꾼다면 누구나 한번쯤은 프론트엔드와 백엔드에 대해 고민을 합니다. 저 역시 막연히 코딩이 재밌다는 이유 하나만으로 전과를 했고 전과를 한 뒤 동기들의 전공 지식 수준을 따라잡기에 급급했습니다. 그러다보니 프론트엔드와 백엔드 중 어느것이 저에게 더 잘 맞을지 생각해본적이 없었습니다. 그러던 중 프로젝트에 참여하게 되었고 다른 팀원들의 포지션이 백엔드인점을 고려하여 프론트엔드를 맡게 되었습니다. 프론트엔드 개발자로 프로젝트를 진행하면서 백엔드에 대한 지식이 조금 더 많았다면 백엔드를 맡은 팀원들과 더 많이 소통하여 더 좋은 결과물을 낼 수 있었을텐데라는 생각을 하게 되었습니다. 그래서 백엔드 공부를 시작하게 되었습니다.
프로젝트를 진행하면서 눈에 보이는 결과물들에 개발이 즐거웠고 프론트엔드 개발자를 생각하기도 했지만 백엔드 관련 공부를 하면서 제가 개발자의 꿈을 꾸게 된 처음이 기억났습니다. 어떤 문제를 풀며 어떻게, 왜 이런 결과가 나오는지에 대한 흥미를 다시 느끼게 되었습니다. 무엇보다 함께 공부하던 사람들과 같은 분야로 같은 고민을 하며 생각을 나누는 것이 너무 좋았고 자연스럽게 백엔드 개발자를 꿈꾸게 되었습니다.
'밍log > [M]' 카테고리의 다른 글
[BACKEND] 백엔드 #4 (0) | 2023.07.06 |
---|---|
[BACKEND] 백엔드 #3 (0) | 2023.07.04 |
[BACKEND] 백엔드 #2 (0) | 2023.07.04 |