1단계
1단계 — 백엔드란 무엇인가
25 분
1단계 — 백엔드란 무엇인가
프론트엔드가 보이는 부분 이라면, 백엔드는 데이터 · 로직 · 인증 을 담당하는 보이지 않는 절반.
1. 백엔드의 네 가지 일
- 데이터 저장 · 조회 — DB 에 사용자 · 게시물 · 로그를 쌓고 검색
- 비즈니스 규칙 — "5 번 잘못 입력하면 5 분 잠금" 같은 판단
- 인증 · 인가 — 이 사람이 누구인지 (Authentication) + 무엇을 할 수 있는지 (Authorization)
- 외부 시스템 연동 — 결제 (PG) · 메시지 (카카오 · 네이버) · 이메일 (SMTP)
프론트엔드가 답할 수 없는 부분을 백엔드가 책임집니다.
2. 한 요청의 흐름
브라우저
└─ 1. POST /api/posts (HTTPS 요청)
↓
Spring Controller (DTO 검증)
↓
Service (비즈니스 규칙 · 트랜잭션)
↓
Repository (DB 쿼리)
↓
PostgreSQL → 결과 row
↑
브라우저 ← 2. 201 Created (JSON 응답)
이 다섯 층 구조가 Spring 의 핵심 모양. 각 층이 자기 책임만 집니다.
3. Controller · Service · Repository
// Controller — HTTP 요청/응답 담당
@RestController
@RequestMapping("/api/posts")
public class PostController {
private final PostService postService;
@PostMapping
public ResponseEntity<PostDto> create(@Valid @RequestBody CreatePostRequest req) {
PostDto created = postService.create(req);
return ResponseEntity.status(201).body(created);
}
}
// Service — 비즈니스 로직 · 트랜잭션
@Service
@Transactional
public class PostService {
private final PostRepository postRepo;
public PostDto create(CreatePostRequest req) {
if (req.getTitle().length() > 100) throw new ValidationException(...);
Post post = Post.from(req);
return PostDto.from(postRepo.save(post));
}
}
// Repository — DB 접근
public interface PostRepository extends JpaRepository<Post, Long> {
List<Post> findByUserIdOrderByCreatedAtDesc(Long userId);
}
규칙: Controller → Service → Repository 한 방향. 반대는 금지.
4. 왜 Java 21 + Spring Boot 4 인가
- Java 21
- virtual threads — 가벼운 쓰레드로 동시성 ↑
- record class — 데이터 클래스 보일러플레이트 제거
- pattern matching — switch 강력화
- Spring Boot 4
- 의존성 관리 · 자동 설정 · 내장 서버 (Tomcat · Netty)
./gradlew bootRun한 줄로 실행
- 생태계
- Security · Data JPA · Cloud · Batch · WebFlux 거의 모든 기업용 기능
5. 다른 백엔드 스택 비교
| 스택 | 특징 | 대표 사용처 |
|---|---|---|
| Spring Boot 4 | 견고함 · 대규모 · 풀텍스트 | 금융 · 이커머스 · 엔터프라이즈 |
| FastAPI (Python) | 가벼움 · 데이터 · 빠른 프로토타입 | 스타트업 · AI · 데이터 |
| Express / NestJS (Node) | 프론트와 같은 언어 · 빠른 시작 | 스타트업 · 실시간 |
| Go (Gin · Fiber) | 성능 · 단순함 | 클라우드 인프라 · 결제 |
| Rust (Axum · Actix) | 안전성 · 최고 성능 | 고성능 시스템 · 임베디드 |
한국 시장은 여전히 Spring 이 가장 큼.
6. HTTP 상태 코드
| 코드 | 의미 | 용도 |
|---|---|---|
| 200 | OK | 일반 성공 |
| 201 | Created | 생성 성공 |
| 204 | No Content | 삭제 성공 |
| 400 | Bad Request | 요청 형식 오류 |
| 401 | Unauthorized | 인증 안 됨 |
| 403 | Forbidden | 권한 없음 |
| 404 | Not Found | 없는 자원 |
| 409 | Conflict | 중복 · 충돌 |
| 422 | Unprocessable Entity | 검증 실패 |
| 500 | Internal Server Error | 서버 오류 |
REST API 설계의 첫 언어.
7. 인증 vs 인가
Authentication (인증) = "이 사람이 누구지?"
→ 로그인 · JWT · 세션 쿠키
Authorization (인가) = "이 사람이 무엇을 할 수 있지?"
→ 역할 (admin · user) · 소유권 검사
둘 다 필요. 로그인은 했지만 다른 사용자 글을 삭제하면 403.
8. 데이터베이스 — 왜 PostgreSQL?
- 오픈소스 · 무료 · 기업 지원
- ACID — 트랜잭션 안전
- SQL 표준 충실 · 확장 풍부 (pgvector · PostGIS · TimescaleDB)
- JSONB · 배열 · 전문검색 등 현대적 기능
MySQL · SQL Server · Oracle 도 가능하지만 PostgreSQL 이 2026 기준 가장 다용도.
9. API 형태 — REST · GraphQL · gRPC
| 형태 | 특징 | 언제 |
|---|---|---|
| REST | 자원 · HTTP 메서드 중심. 표준 | 대부분 |
| GraphQL | 클라이언트가 필요한 필드만 요청 | 프론트 여러 · 네트워크 최적화 |
| gRPC | protobuf · HTTP/2 · 스트리밍 | 마이크로서비스 간 |
입문은 REST. GraphQL · gRPC 는 특정 상황에서.
10. 로그 · 관측
private static final Logger log = LoggerFactory.getLogger(PostController.class);
log.info("created post userId={}", userId);
log.warn("rate limit hit ip={}", ip);
log.error("payment failed", exception);
SLF4J + Logback 이 Spring 표준. System.out.println 은 지양.
11. 자주 걸리는 자리
- Controller 에서 비즈니스 로직 — 반드시 Service 로 이동
- DTO 없이 Entity 직접 반환 — API 응답이 DB 스키마에 결합
@Transactional없이 여러 쿼리 — 중간 실패 시 데이터 불일치- 민감 정보 log — 비밀번호 · 토큰 · 주민번호 절대 로그 금지
12. 학습 순서 제안
- Java 21 문법 (record · switch) 기초
- Spring Boot 프로젝트 만들기 ·
@SpringBootApplication - Controller · Service · Repository 실습
- H2 · PostgreSQL 연결
- DTO · Validation · 예외 처리
- JWT 인증
- 테스트 (MockMvc · Testcontainers)
- 배포 (Docker)
이 강좌가 같은 순서로 갑니다.
더 깊이
다음 단계
2단계에서는 진짜 첫 Spring Boot 프로젝트를 만들어 봅니다.