Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

10장. 마치며 — 좋은 데이터 접근 코드란

10.1 우리는 어디까지 왔는가

이 책은 한 가지 질문에서 출발했다.

👉 “데이터베이스에 어떻게 접근할 것인가?”

그리고 그 답은 시간이 지나며 계속 바뀌어왔다.

  • Raw Query → 직접 다루는 시대
  • Query Builder → 안전하게 다루는 시대
  • ORM → 객체로 다루는 시대
  • 혼합 전략 → 상황에 맞게 다루는 시대

각 방식은 이전의 한계를 극복하기 위해 등장했고,
하나가 등장했다고 해서 이전 방식이 사라지지는 않았다.

👉 데이터 접근의 역사는 “대체”가 아니라 “누적”이다


10.2 기술이 아니라 선택이다

기술은 도구일 뿐이다.

  • ORM이 만능은 아니다
  • Raw Query가 구식은 아니다
  • Query Builder가 어중간한 것도 아니다

각 방식은 서로 다른 강점을 가진다.

  • ORM → 생산성
  • Query Builder → 유연성
  • Raw Query → 제어력

👉 좋은 코드는 “좋은 기술”이 아니라
👉 상황에 맞는 선택에서 나온다


10.3 추상화를 이해해야 추상화를 쓸 수 있다

ORM은 편리하다.
하지만 그 편리함이 모든 것을 가려준다는 뜻은 아니다.

  • N+1 문제
  • Lazy Loading
  • 트랜잭션 범위
  • 쿼리 실행 계획

이 모든 것은 추상화 “뒤”에 살아있다.

👉 추상화를 쓰는 것과 이해하는 것은 다르다
👉 추상화를 이해하지 못하면, 추상화는 오히려 부담이 된다

ORM 로그를 켜고
실제 실행되는 SQL을 한 번이라도 본 사람과
그렇지 않은 사람의 코드는 완전히 다르다.


10.4 구조는 변화를 위한 것이다

6장에서 다룬 계층 구조,
8장에서 다룬 트랜잭션 위치,
이 모든 것은 결국 한 가지를 위한 것이다.

👉 변화에 대응하기 위해서

  • 테이블이 바뀌어도
  • DB가 바뀌어도
  • ORM이 바뀌어도
  • 요구사항이 바뀌어도

영향을 받는 범위를 줄이는 것.
그것이 구조의 목적이다.

코드를 “나누기 위해서” 구조를 만드는 것이 아니다.
👉 바꾸기 쉽게 만들기 위해서 구조를 만든다.


10.5 결국 중요한 것

이 책에서 다룬 모든 주제는
결국 하나의 질문으로 수렴된다.

👉 “지금 내가 다루는 데이터에 가장 적합한 방식은 무엇인가?”

  • 단순한 CRUD인가? → ORM이 어울린다
  • 복잡한 통계인가? → Raw Query가 어울린다
  • 동적 조건이 많은가? → Query Builder가 어울린다
  • 페이지가 깊어지는가? → Cursor가 어울린다
  • 여러 작업을 묶어야 하는가? → 트랜잭션이 필요하다

정답은 정해져 있지 않다.
👉 상황을 읽고 선택하는 능력이 핵심이다.


10.6 끝으로

기술은 계속 발전한다.

  • 새로운 ORM이 등장하고
  • 새로운 데이터베이스가 나오고
  • 새로운 패턴이 만들어진다

하지만 변하지 않는 것이 있다.

👉 데이터를 다룬다는 것은
👉 데이터를 이해하는 일이고
👉 데이터를 이해하는 사람이 좋은 코드를 쓴다

도구는 바뀌어도
그 본질은 바뀌지 않는다.

이 책이 도구를 고르는 데에 머무르지 않고
👉 데이터를 보는 시야를 넓히는 데
도움이 되었기를 바란다.