Front-End ( 프론트 엔드 ) vs Back-End ( 백엔드 )
IT 전공자라면 진로를 결정할 때에 가장 먼저 고려하는 사항이 바로 프론트엔드 / 백엔드로서의 방향성이 아닐까 싶다.
불과 10여년 전만 해도 이러한 프론트엔드와 백엔드의 구분은 명확하지 않았고, 그럴 필요도 없었으나 이제는
웹의 발달과 더불어 앱 개발도 활발하게 이루어짐에 따라 세분화된 업무를 소수의 인원이 전부 담당하기는
사실상 불가능한 문제가 되었다.
결국, 프론트엔드와 백엔드 개념이 확립되면서 두 파트의 차이점이 확립되면서 많은 개발자 및 엔지니어들이
이를 참고하여 본인의 기술에 적합한 파트에서 업무를 수행하는 형태로 이어지고 있다.
그렇다면, 정확히 Front-End와 Back-End의 주 업무 분야와 기술력 등을 알아보고 두 파트의 차이점을 구분해보도록 하자.
Front-End (프론트 엔드)
- Front-End 영역 : 사용자(User)의 화면에 나타나는 웹 화면
- 사용자와 직접 접촉하며 상호작용이 이루어지는 파트
- 백엔드 개발자가 만든 집의 내부 디자인 담당
Front-End 구성
- UX Designer : 사용자에게 최상의 편리함을 제공하기 위한 사이트의 구성 및 기능 담당
- Web Desginer : UX Designer가 구성한 것을 토대로 디자인을 입히는 역할
- Front-End developer : 위의 디자인을 웹 어플리케이션으로 구현
Front-End 개발자에 요구되는 기술 (Skill)
- HTML, CSS, JavaScript
- 사용자가 이용하는 웹의 기본적 Architecture를 담당하므로
- Bootstrap, Foundation, Backbone, AngularJS, EmberJS
- 사용자의 도구에 따라 유연한 방식의 컨텐츠를 표현해야 함
- jQuery, LESS 같은 라이브러리 사용
- 보다 효율적인 코드 작성을 위함
※ 개발자 채용 시 Ajax 사용 경험을 요구하는 경우도 많은 이유
백그라운드에서 서버 데이터를 가져와 페이지를 동적으로 만드는 JavaScript를 활용하는데
보편적으로 사용되는 기술이기 때문.
Front-End 개발자 주요 업무
- 위의 나열된 기술들을 사용
- 목업(Mockup) / 와이어프레임(Wireframe) 개발에서부터 전달 단계
- Designer와 사용자 경험 분석가와 긴밀히 협력 관계 유지
- 사용자 경험 기준에서의 문제 발견
- 디자인 수정에 관한 조언 및 문제 해결을 위한 코드 제공
- 목표 / 필요(needs) / 기회에 대한 정확한 이해 및 수행을 위해 다른 팀과 유연하게 협력
# Front-End 개발자의 경우, 업무에 대한 능력 뿐 아니라 여러 영역에 대한 책임을 감당해야 함
Back-End (백엔드)
- 일반 사용자 눈에 보이지 않는 서버에서 작용하는 기술을 다루는 직군
- UI나 GUI로 구성된 화면의 통신/요청에 대해 DB 또는 Interface 등을 통해 시스템 구성 실체에 접근하는 파트
- 사용자와 접촉하지 않고 Front-End와 연동하여 기술적인 부분을 처리
Back-End 구성
백엔드 파트는 비교적 다양한 형태를 띈다. 그 중 몇가지 예로 들면 다음과 같다.
- 서버관리자 : 서버 환경설정, 서버구성 관리
- DB관리자 : DB 설계, Data 관리 및 최적화
- Back-End developer : 서버 자체를 코딩
Baek-End 개발자에 요구되는 기술 (Skill)
- PHP, Ruby, Python, Java, .Net
- 서버 측 언어 활용하여 응용 프로그램 제작
- MySQL, Oracle, SQL Server
- 데이터 검색, 저장 및 변경 후 프론트 엔드 코드로 사용자에게 다시 제공
이외에도
- PHP 프레임워크에 대한 사용 경험 : Zend, Symfony 및 CakePHP
- 버전 제어 소프트웨어 사용 경험 : SVN, CVS 또는 Git
- 개발 및 배포 시스템으로서의 Linux 사용 경험
등을 요구하는 경우가 있다.
Back-End 개발자 주요 업무
- 비즈니스 이해 관계자와 소통하며 구체적 요구 사항 파악
- 요구사항을 기술적 내용으로 변환
- 기술설계를 위한 가장 효율적인 솔루션 제시
- 위의 기술 및 도구(Tools)을 사용하여 모듈화가 가능한 코드로 웹 응용 프로그램을 제작
# 백엔드 개발자 작업 결과 프로세스 예
1) 특정 사이트 접속
- 특정 웹 사이트 서버에서 넘긴 정보가 사용자의 단말기에 웹 페이지로 보여지는 프로세스
2) 회원가입 시 저장되는 개인정보
- 이후 로그인 할 때마다 계정의 정보가 불러지는 과정 포함
Full Stack Developer
- Front-End와 Back-End 모두 교차적으로 작업할 수 있는 역할을 지칭
- Full Package를 제공하는 개발자를 의미
- 로딩시간부터 레이아웃, 사용자와의 상호작용성 및 구조적 토대까지 전체적인 흐름을 담당
Full Stack 개발자에 요구되는 기술 (Skill)
- Linux 서버 설정 및 구성
- 서버측 API 작성
- 클라이언트 측 JavaScript, 디자인 CSS
#웹이 작동하는 모든 차원에서의 해박한 지식을 요구함
참고 :