백엔드 개발자 커리어 로드맵

sapjil·2023년 12월 15일
1

백엔드

목록 보기
2/2

1. 백엔드 개발이란?

1) 백엔드와 프론트엔드의 차이 및 역할

  • 프론트엔드와 백엔드의 가장 큰 차이는 웹앱 개발 담당 영역 차이
  • 프론트엔드는 사용자(클라이언트)가 접하는 화면 앞단을 다루며, 시각적 요소와 사용자 경험을 개선하는데 초점을 두지만, 백엔드는 사용자에게 보이지 않는 뒷단에서 데이터 처리와 관리를 담당하여 웹/앱의 기능적인 부분을 조작하고 구현함.

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) 클라우드 서비스와 인프라 이해

  • 백엔드 개발자가 클라우드 서비스와 인프라를 이해하는 것은 앱의 확장성, 안정성, 보안성, 자동화, 비용 관리 등을 보장하며, 더 효율적인 시스템을 구축하고 운영하는데 큰 도움이 됨
  • 클라우드 서비스와 인프라에 대해 알아야 할 주제는 아래와 같음
    - 클라우드 컴퓨팅 개념과 이점
    - 클라우드 서비스 제공 업체
    - 클라우드 기반 시스템 아키텍처
    - 인프라스트럭처 관리
    - 보안과 모니터링
    - 클라우드 마이그레이션 전략
    - 고가용성과 확장성



4.학습과 발전을 위한 팁

1) 도서

  • 아래 도서는 참조한 사이트에서 일부 내용 발췌한 내용임(출처)
  • 컴퓨터 구조
    - 한 권으로 읽는 컴퓨터 구조와 프로그래밍
  • 운영체제
    - 운영체제와 정보기술의 원리
  • 네트워크 & HTTP
    - 그림으로 배우는 HTTP& Network Basic
    • HTTP 완벽 가이드
  • 데이터베이스
    - 데이터베이스 첫걸음
    • SQL 레벨업
    • 친절한 SQL 튜닝
    • 데이터베이스 인터널스
  • 객체지향
    - 객체 지향의 사실과 오해
    • 엘레강트 오브젝트
    • 오브젝트
  • 자바
    - Java의 정석
    • 스프링 입문을 위한 자바 객체 지향의 원리와 이해
    • 실전 자바 소프트웨어 개발
    • 모던 자바 인 액션
    • 이펙티브 자바 3/E
    • 자바 성능 튜닝 이야기
  • 스프링
    - 자바 웹 프로그래밍 Next Step
  • 테스트 주도 개발(TDD)
    - 테스트 주도 개발 시작하기
    • 테스트 주도 개발
    • 단위 테스트
  • 리팩토링
    - 리팩터링
    • 클린코드
  • 도메인 주도 설계(DDD)
    - 도메인 주도 개발 시작하기
    • 모메인 주도 설계
  • 디자인 패턴
    - 헤드 퍼스트 디자인 패턴
    • GoF의 디자인 패턴
  • 아키텍처
    - 클린 아키텍처
    • 도메인 주도 설계로 시작하는 마이크로서비스 개발
    • 가상 면접 사례로 배우는 대규모 시스템 설계 기초
    • 데이터 중심 어플리케이션 설계
  • 인프라
    - 그림으로 공부하는 IT 인프라 구조
    • 커네팅너 인프라 환경 구축을 위한 쿠버네티스/도커
    • 쿠버네티스 완벽 가이드
  • 소프트웨어 공학
    - Code Complete 코드 컴플리트 2/E
    • 클린 소프트웨어
    • 웹 개발자를 위한 대규모 서비스를 지탱하는 기술
  • 빅데이터
    - 실전 카프카 개발부터 운영까지
    • 엘라스틱 스택 개발부터 운영까지
  • 교양
    - 함께 자라기
    • 소프트웨어 장인
    • 실용주의 프로그래머
    • 프로그래머의 뇌

2) 참고 링크

  • 백엔드 개발자 로드맵에 대한 잘 정리된 글: 이동

3) 백엔드 로드맵

  • 아래 그림은 백엔드 로드맵으로 유명한 그림이다. 각 요소들을 모두 이해한 후 개발자로 취직하는 것은 매우 불가능하지만 어떤 내용을 알아야 하는지에 대한 방향성을 잡는데 좋은 그림이라 생각한다.
  • 각 링크를 클릭하면 원본 출처로 이동할 수 있으며, 출처에서는 각 요소 선택 시 디테일한 설명도 확인 가능하다.

(1) Backend Developer 로드맵


(2) Java Developer 로드맵


(3) Python Developer 로드맵

profile
DE, AI Engineer를 꿈꾸는 dev의 log

0개의 댓글