Drizzle ORM 사용 후기

from. 강상원
개발2025년 01월 21일
-
#개발#백엔드#ORM#Drizzle

Drizzle을 선택한 이유

Drizzle ORM의 엄청난 타입 호환성과 SQL 유사성, 뛰어난 인터페이스라는 장점만 보고 새로 들어가는 프로젝트의 ORM을 Drizzle로 결정했다.

하지만

간과한 점이 하나 있었다. 필자의 RDBMS가 MySQL기반이라는 점..

Drizzle은 물론 훌륭한 ORM이다. 기존에 쓰던 Prisma나 TypeORM보다 SQL과 유사해서 쉽게 사용할 수 있고, migration이나 connection 등 설정도 매우 간단하다. 하지만 MySQL과의 호환성이 많이 떨어진다.

Drizzle은 PostgreSQL과 같이 요즘 뜨는 RDBMS와는 호환성이 괜찮은 것 같다. 공식 문서만 봐도 Drizzle의 여러 메서드 중에 MySQL에는 호환이 안되어서 따로 만든 메서드들이 많이 보인다.

예시)

// PostgreSQL ✅, SQLite ✅, MySQL ❌
const [table] = await db.insert(table).values(data).returning();

// PostgreSQL ❌, SQLite ❌, MySQL ✅
const [result] = await db.insert(table).values(data).$returningId();
// const result: {} 타입 추론이 안된다 ㅜㅜ

위 예시를 예로 들자면, 이런 특수한 메서드들은 타입 호환성이 아주 많이 떨어진다. 타입 추론이 답답하게 안된다.

결론

여기서 ORM을 바꾸기엔 이미 작성한 코드가 너무나 많다. ORM을 중간에 바꾸기 보단, 아프지만 Drizzle과 동행하려고 한다.

만약 다음 프로젝트를 진행하게 된다면, MySQL을 버리거나 다른 ORM을 찾으려고 한다. (근데 MySQL을 버리는 것 보다는 다른 ORM을 사용하는게 러닝 커브가 더 적기 때문에 다른 ORM을 찾아볼 것 같기는 하다.)