프론트엔드는 사용자(클라이언트)가 접하는 화면 앞단을 다루며, 시각적 요소와 사용자 경험을 개선하는데 초점을 두지만, 백엔드는 사용자에게 보이지 않는 뒷단에서 데이터 처리와 관리를 담당하여 웹/앱의 기능적인 부분을 조작하고 구현함.
2) 백엔드 개발자의 주요 업무
백엔드 개발자의 공고에는 보통 아래와 같이 기술되어 있음
- 백엔드 서버 개발 및 유지보수
- 효율적인 API 설계
- 대용량 데이터, 트래픽을 고려한 서버 설계 및 구현
- 서버 개발, 서버 인프라 관리
- 운영중인 서버의 유지 보수 및 관리
- 신규 서비스 개발 기획
- 웹 프레임 워크 및 내부 관리 툴 개발
- 인프라, 아키텍처 설계
- 빌드/배포 파이프라인 자동화(CI/CD)
- 데이터베이스 설계 및 관리
2. 백엔드 개발자의 기술 요구 사항
1) 필요한 핵심 기술과 언어
백엔드 개발자에게 필요한 하드스킬은 선호하는 언어나 프레임워크에 따라 달라지지만 크게 프로그래밍 언어, 프레임워크(라이브러리), 데이터베이스, 데이터 구조 및 알고리즘, 웹 서버 및 배포, RESTful API 설계 및 구현, 보안 및 성능 최적화, 네트워크 통신, 버전 관리 시스템 등이 있다.
서버 사이드 프로그래밍 언어
- 개발자 본인이 선호하는 언어 또는 프로젝트나 회사 요구에 맞게 프로그래밍 언어 선택
- 종류: Java, Python, JavaScript(Node.js), Ruby, PHP etc
대중적 프레임워크(Framework)에 대한 지식
- Framework(프레임워크)란 웹앱 개발을 쉽고 효율적으로 할 수 있도록 기본적인 구조와 규칙을 제공하는 도구나 환경을 의미함.
-종류: Spring(Java), Django(Python), Flask(Python), Express(Node.js) etc
데이터베이스
- 데이터베이스(DB, Database)는 데이터가 저장되어 있는 곳으로, 데이터베이스를 다루기 위해서는 DBMS를 통해 데이터를 다루는 법을 알아야 함
- DMBS 종류:MySQL(SQL), Oracle(SQL), PostgreSQL(NoSQL), MongoDB(NoSQL) etc
데이터구조 및 알고리즘
- 백엔드 개발은 데이터를 구현하고 표시하는데 사용되는 프로세스, 구조, 및 알고리즘을 기본적으로 이해하고 있어야 함. 관련된 지식으로 선형 및 이진 검색, 해시 코드 구현, 데이터 정렬, 스택, 대기열 및 목록이 있음
웹 서버 및 배포
- 서버를 설정하고 배포하는 방법을 알아야함
AWS, GCP(Google Cloud Platform), Azure와 같은 클라우드 서비스를 이용해 배포하는 방법도 알아야 함
그 외 Docker, Kubernetes(K8s) 등이 있음
RESTful API 설계 및 구현
- RESTFul API란 REST를 기반으로 만들어진 API를 의미함. REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미함. 즉, HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)를 명시하고 HTTP Method(POST, GET, PUT, DELETE, PATCH 등)을 통해 해당 자원(URI)에 대한 CRUD Operation(Create, Read, Update, Delete)을 적용하는 것을 의미함.
RESTful API를 설계하고 구현하는 방법을 이해하여 HTTP 메소드, 상태 코드, 리소스, 엔드포인트(endpoint) 등을 활용하여 클라이언트와의 효율적인 통신을 위한 API를 개발하는 것이 중요함.
보안 및 성능 최적화
- 백엔드에서 DB를 다루기 때문에 보안과 및 서버 성능 최적화에 대한 이해도 중요함
네트워크 통신
- 웹앱은 기본적으로 네트워크 통신을 해야함. 네트워크 통신을 이해함으로써 서버와 클라이언트 간의 상호작용, 데이터 전송, 요청 및 응답 처리 등 시스템의 동작 원리를 이해할 수 있음.
백엔드 개발자가 알야야 할 네트워크 통신 개념은 프로토콜(HTTP, TCP/IP 등), 보안(SSL, 암호화), 데이터 전송 방법(동기식/비동기식), 성능 최적화, 네트워크 7계층 등이 있음
버전 관리 시스템
버전관리란 코드의 최종, 최최종, ㄹㅇ찐최종 등과 같이 문서의 내용이 변화한 히스토리를 기록하고 관리하는 것을 말하며 버전 관리 시스템은 이를 돕는 도구를 의미함. 개발자는 이를 통해 과거 코드로 쉽게 복귀하거나 저장 및 관리할 수 있고, 다른 개발자와 협업에도 용이함
대표적으로 Git이 있고 원격 저장소로 Github이 있는데, github은 누구나 접근할 수 있는 코드를 모아놓은 구글 드라이브라고 생각하면 된다. 개발자들은 해당 드라이브에 자신의 코드를 업로드하거나 다운로드하여 로컬(내 컴퓨터)에서 작업한다.
2) 데이터베이스 관리 및 다루기
DB는 백엔드에서 중요한 영역 중 하나
아래와 같은 주제에 대해서 잘 알아둬야 한다.
- 데이터베이스 기본 개념과 종류
SQL과 NoSQL 활용
데이터베이스 설계 및 최적화
보안과 관리
클라우드 기술과 데이터베이스
대용량 데이터 처리와 분산 시스템
실시간 데이터 처리와 스트리밍
3. 백엔드 개발자가 익힐 수 있는 기술과 도구
1) 백엔드 개발자를 위한 주요 프레임워크 및 도구
백엔드 개발자를 위한 프레임워크는 선호하는 언어에 따라 다르지만 국내에서는 Java를 활용한 백엔드 프레임워크 Spring, Spring Boot를 많이 쓰고 스타트업에서는 python 웹 프레임워크 Django나 Flask를 주로 사용한다. 그 외에 Node.js를 위한 앱 프레임워크 Express.js, Ruby 언어를 위한 앱 프레임워크 Ruby on Rails(일본에서 많이 사용한다고 알고 있음), PHP 기반 경량 프레임워크인 Laravel, C# 기반 프레임워크 ASP.NET Core 등이 있다.
어떤 프레임워크가 우세하다는 것은 없으며 도구의 특성과 개발 환경에 맞춰 필요한 프레임워크 및 언어를 선택하여 개발한다.
2) 클라우드 서비스와 인프라 이해
백엔드 개발자가 클라우드 서비스와 인프라를 이해하는 것은 앱의 확장성, 안정성, 보안성, 자동화, 비용 관리 등을 보장하며, 더 효율적인 시스템을 구축하고 운영하는데 큰 도움이 됨
클라우드 서비스와 인프라에 대해 알아야 할 주제는 아래와 같음
- 클라우드 컴퓨팅 개념과 이점
- 클라우드 서비스 제공 업체
- 클라우드 기반 시스템 아키텍처
- 인프라스트럭처 관리
- 보안과 모니터링
- 클라우드 마이그레이션 전략
- 고가용성과 확장성