CRUD

대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create, Read, Update, Delete를 묶어 이르는 말.

— 소프트웨어 엔지니어링 표준 사전 용어 가이드

"지구상의 화려한 테크 유행어들을 다 걷어내고 나면, 결국 남는 건 거대한 데이터 쪼가리 입력과 출력 노가다뿐이다." 우리가 만드는 수천억 원짜리 유니콘 서비스도 결국은 고도화된 게시판 CRUD의 집합체다.(...)

1. 개요

대부분의 소프트웨어가 컴퓨터 저장 공간이나 데이터베이스에 데이터를 다룰 때 수행하는 핵심적인 4가지 기능인 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)의 앞 글자를 딴 두문자어다. 매칭되는 HTTP 메서드는 POST, GET, PUT, DELETE이며, SQL 명령어로는 INSERT, SELECT, UPDATE, DELETE에 대응한다.(...)

2. CRUD 개발자의 자조와 프레임워크의 은혜

신입 개발자들이 취업 후 실무에 투입되면 가장 먼저 맡게 되는 업무이자, 수년 차 주니어들이 '내가 지금 전산학 발전에 기여는 안 하고 평생 남의 집 게시판 글만 넣고 빼는 CRUD 싸개로 늙어 죽는 것 아닌가' 하는 깊은 실존적 매너리즘에 빠지게 만드는 장본인이다. 과거엔 이 CRUD를 짜기 위해 원시 SQL 쿼리문을 수백 줄씩 타이핑하며 오타 하나에 피눈물을 흘렸으나, 현대에는 ORM 기술(Spring Data JPA, Prisma, Sequelize 등)이 극도로 고도화되어 함수 한 줄(repository.save(data))만 치면 쿼리를 지가 알아서 생성해 바치는 세상이 되었다. 덕분에 단순 CRUD의 진입 장벽은 바닥으로 추락했고, 이제는 얼마나 빠르게 데이터 모델을 설계하느냐의 스피드 전이 되었다.1

3. 관련 밈 및 드립

3.1. 무조건 Hard Delete 때렸다가 시말서 쓴 썰

데이터 삭제(Delete) 요청을 받았을 때, 데이터베이스 테이블에서 진짜 행(Row)을 영구 삭제해 버리는 물리 삭제(Hard Delete)를 감행했다가 대참사를 내는 밈이다. 실무에서는 유저가 탈퇴를 하거나 글을 지워도 혹시 모를 복구나 통계 분석을 위해 is_deleted = true 같은 상태값만 바꾸는 논리 삭제(Soft Delete)를 치는 게 상식인데, 이를 무시했다가 수천 명의 결제 내역을 영구 소멸시키고 데이터베이스 백업 파일을 복구하느라 밤을 새우는 애환이다.

3.2. CRUD만 할 줄 알면 개발자임?

개발 커뮤니티의 단골 키보드 배틀 떡밥이다. 알고리즘이나 분산 아키텍처, 인프라 고도화 없이 화면에서 친 데이터를 DB에 넣고 빼기만 하는 사람을 '진정한 엔지니어'로 볼 수 있는가에 대한 뼈 때리는 비하 밈인데, 역으로 '그럼 니들이 만드는 대단한 서비스도 결국 CRUD 빼면 뭐가 남냐'며 현업 형님들이 등판해 진압하는 구조가 반복된다.

4. 여담

  • C와 U의 경계: 데이터를 새로 넣는 것(Create)과 덮어쓰는 것(Update)의 경계가 애매할 때, 데이터가 없으면 넣고 있으면 수정하는 기적의 명령어 UPSERT 기법이 요긴하게 쓰인다.
  • CQRS 패턴: 대규모 시스템에서는 조회(Read) 요청이 입력·수정(CUD) 요청보다 수백 배 많이 발생하기 때문에, 아예 명령 시스템과 조회 시스템의 DB와 코드를 통째로 분리하여 성능을 극대화하는 CQRS(Command Query Responsibility Segregation) 패턴으로 진화한다.
  • 삭제 마니아들: 실무 쿼리를 짤 때 WHERE 절을 깜빡 잊은 채 UPDATEDELETE 문을 실행해 테이블 전체의 데이터를 날려 먹는 초대형 사고가 매년 주니어들에 의해 로테이션으로 터진다. 실행 전 확인은 생명줄이다. 당신의 커리어가 Soft Delete 될 수 있다.

5. 관련 문서

각주

  1. 그리고 바로 그 편리한 ORM 때문에 내부에서 어떤 더러운 다중 조인(Join) 쿼리가 날아가는지 신경 안 쓰다가, 데이터 백만 건 쌓이는 순간 조회가 30초씩 걸려 사이트가 굳어버리는 대가를 치른다.(...)