Table of Contents
웹 개발이란
- 프로그래밍 세계에서 웹 서비스를 개발하는 분야를 웹 개발(Web Development)이라고 한다
- 웹 개발은 크게 UI를 담당하는 프론트엔드(Frontend)와 데이터를 담당하는 백엔드(Backend)로 나뉜다
백엔드란
- 백엔드는 서버에서 실행되는 코드로, 유저로부터 받은 데이터를 저장하고, 유저가 요청한 데이터를 반환하는 역할을 한다
- 유저의 요청을 받아, 로직을 처리하고 응답으로 적절한 데이터를 반환하는 역할을 한다
- 또 데이터를 영구적으로 저장하는 데이터베이스도 백엔드 범주에 보통 포함시킨다
- 유저가 직접 백엔드와 통신하지는 않고, 유저는 프론트엔드와 통신하며, 프론트엔드가 유저 대신 백엔드와 통신한다
백엔드 요소
- 필수요소
- 요청 라우팅: 유저가 보낸 요청(Request)에 알맞는 응답(Response)을 반환하기 위해 적절한 위치로 분기
- 데이터 처리: 데이터베이스에서 데이터 읽기/저장/수정/삭제
- 비즈니스 로직: 구현한 기능을 수행하는데 필요한 비즈니스 로직
- 예외 처리: 어떠한 상황에도 서버는 하나의 요청에 대해 하나의 응답을 반환해야함
- 부가요소
- 캐싱: 자주 사용되는 데이터를 캐싱
- API 문서화: 다른 개발자들과의 협업을 위해 API를 문서화
- 테스트 코드: 안정적인 서비스를 위해 배포하기 전에 다양한 케이스에 대해 테스트
백엔드 아키텍처
- API Gateway: 요청을 적절한 API 서버로 전달하는 역할
- Load Balancer: 하나의 서버에 과부하가 걸리지 않도록 요청 트래픽을 적절히 배분하는 역할
- API Server: 들어온 요청에 대해 적절한 로직을 수행하는 역할
- Database: 데이터 영구 저장하는 역할
- Cache: 자주 사용되는 데이터를 임시 저장해 빠른 읽기를 지원하는 역할
- Queue: 들어온 요청을 비동기적으로 처리하는 역할
백엔드 코드 아키텍처
- MVC
- Clean code
- Hexagonal
백엔드 대표적 기능
- 회원가입/로그인
- 페이지네이션
- 검색
- 알림
- 채팅
- 국제화
- 결제
- 장바구니
백엔드 고려사항
- 확장성(Scalability)
- 대용량 트래픽
백엔드 프로그래밍 흐름
- 내가 백엔드 프로그래밍할 때 따르는 작성 흐름이다
- 주관적이기 때문에 참고만 하고 본인 또는 속한 팀원들과 개발하기 편한 방식을 따르면 된다
- 라우팅
1. 엔드포인트를 REST API 형태로 작성
2. 요청에 적절한 상태 코드와 응답을 반환하도록 함
- 데이터베이스
1. 데이터베이스와의 연결
2. ERD로 엔티티 정의
3. 정의한 엔티티 바탕으로 모델 클래스 정의
- 데이터
1. CRUD에 사용할 data validation 구현
2. 데이터 직렬화/역직렬화 구현
- 보안
1. 회원가입/로그인/로그아웃 구현
2. 비밀번호 암호화
3. 쿠키 서명
- 비즈니스 로직
- 에러 처리
- 페이지네이션
- 유지/보수
1. API 문서화
2. 테스트 코드
3. 로깅
- 부가 기능
1. 캐싱
2. 웹소켓
3. SSE
4. 배치 처리