Code First vs Database First

  • 4 minutes to read

닷넷(.NET) 프로그래밍 영역에서 코드 퍼스트와 데이터베이스 퍼스트를 구분하는 가장 간단한 방법은 다음과 같습니다.

  • Database First: SQL 문으로 테이블과 저장 프로시저를 먼저 생성하고 프로그래밍 영역에서 사용하는 방법
  • Code First: 프로그래밍 영역에서 모델 클래스를 만들고 이를 바탕으로 데이터베이스 개체인 테이블을 만들고 사용하는 방법

DB First

닷넷 프로그래밍 영역에서는 DB First를 레거시로 부릅니다.

만약에 회사에 DBA가 따로 존재하는 시스템이라면 데이터베이스 퍼스트 방식을 사용하면 됩니다.

테이블, 저장 프로시저 등의 모든 데이터베이스 관련된 개체들이 Database 영역 안에서 이뤄지면,

응용 프로그래밍 영역에서는 Dapper와 같은 Micro ORM을 통해서 접근하면 됩니다.

물론, 순수 ADO.NET 기술로 접근해도 되고요.

Code First

개발자가 개발에 필요한 데이터베이스를 직접 설계해야하는 일반적인 응용 프로그래밍 개발 환경이라면 Code First 방식이

생산성 및 유지 보수에서 훨씬 우월합니다.

하나의 데이터베이스가 아닌 여러 DBMS와 Cosmos DB와 같은 클라우드 기반 데이터베이스로 확장하고자 한다면,

Code First 방식이 아닌 Database First 방식이라면 모두 새롭게 제작되어야 합니다.

이 부분에서는 데이터베이스 퍼스트 방식은 코드 퍼스트 방식에 적수가 되지 못합니다.

경험 기반 조언

지난 20년 넘게 프로그래밍 일을 해오면서 거의 전부를 Database First 방식으로 일을 해왔습니다.

하지만, Code First를 만나고나서는 이제는 기존에 만들어 놓은 시스템을 건드리는 경우가 아니면 DB First 방식을 사용하진 않을 겁니다.

Code First를 처음 시도했을 때에는 ORM 기술이 Micro ORM 또는 순수 SQL 기술에 비해서 처리 속도가 월등히 느렸기에

대시보드와 같이 사용자가 적은 영역 위주로 사용을 했습니다.

하지만, 지금은 ORM 기술과 처리 속도면에서, Micro ORM 그리고 순수 데이터 처리 기술 간의 차이가 거의 없어진 시점이기에

이제는 ORM 기술의 Code First 방식을 첫 번째 기술로 사용할 예정입니다.

강의에서 사용되는 소스는 순수 ADO.NET에서 Micro ORM인 Dapper 그리고 Full ORM인 Entity Framework Core 순으로 강의가 진행되지만,

실제로 새롭게 만드는 영역은 무조건 EF Core로만 진행될 예정입니다. 물론, Code First 방식이지만, SQL Server Database 프로젝트는 함께 가지고 갑니다.

참고

구글 검색 엔진에서 "Code First vs Database First"를 검색하면 많은 양의 아티클들이 쏟아져 나옵니다.

많은 사람들이 정리해 놓은 아티클들을 더 찾아서 읽어보면 좋겠습니다.

어쨌든, 제 경험 기반의 주관적인 의견이니 참고하시되,

회사 정책, 팀 정책에 따르면 됩니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com