ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ORM/Prisma/3Tier 개념
    아무거나 찌끄리기 2024. 9. 9. 20:52

    ORM(Object-Relational Mapping)이란?

    ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 불일치를 해결하기 위해 사용되는 기술이다. ORM을 사용하면 프로그래머는 데이터베이스와 상호 작용할 때 SQL 쿼리 대신 객체 지향의 개념을 사용하여 데이터를 처리할 수 있다. 이는 객체와 데이터베이스 테이블 간의 매핑을 자동으로 수행해 주며, 코드의 복잡성을 줄이고 생산성을 높여준다.

    ORM을 활용하면 데이터베이스의 테이블과 애플리케이션의 클래스 간의 매핑을 정의할 수 있다. 예를 들어, 애플리케이션에서 사용되는 객체가 데이터베이스의 행(Row)에 대응하고, 객체의 속성(Property)이 데이터베이스의 열(Column)에 대응한다. ORM은 이러한 매핑을 자동으로 관리해 주기 때문에 개발자는 데이터베이스에 직접 접근하는 복잡한 SQL 쿼리 대신 객체 지향의 방법으로 데이터를 조작할 수 있다.

     

    데이터베이스란?

    데이터베이스(Database)는 데이터를 저장하고 관리하는 시스템이다. 데이터베이스는 대량의 데이터를 효율적으로 저장, 검색, 수정, 삭제할 수 있는 구조화된 방법을 제공하며, 일반적으로 관계형 데이터베이스와 비관계형 데이터베이스로 나눌 수 있다.

    • 관계형 데이터베이스(Relational Database): 데이터를 테이블 형식으로 저장하며, 테이블 간의 관계를 정의할 수 있다. 예를 들어, MySQL, PostgreSQL, Oracle 등이 있다.
    • 비관계형 데이터베이스(Non-Relational Database): 데이터의 구조가 비정형이거나 반정형일 때 사용된다. 예를 들어, MongoDB, Cassandra, Redis 등이 있다.

     

    ORM의 장점

    ORM은 개발자에게 여러 가지 장점을 제공한다.

    1. 생산성 향상: ORM을 사용하면 데이터베이스와의 상호 작용을 SQL 쿼리로 작성하는 대신 객체 지향의 코드로 작성할 수 있다. 이는 코드의 작성과 유지보수를 단순화시키며, 생산성을 크게 향상시킨다. 개발자는 데이터베이스의 내부 구현에 신경 쓰지 않고 비즈니스 로직에 집중할 수 있다.
    2. 코드의 일관성 유지: ORM을 사용하면 데이터베이스의 구조와 객체 지향 모델 간의 매핑이 자동으로 처리되기 때문에, 데이터 모델과 비즈니스 로직 간의 일관성을 유지하기가 쉬워진다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있다.
    3. 보안성 강화: ORM은 SQL 인젝션과 같은 보안 취약점을 줄이는 데 도움을 준다. ORM 프레임워크는 데이터베이스 쿼리를 안전하게 처리하는 메커니즘을 제공하여 악의적인 입력으로부터 시스템을 보호할 수 있다.
    4. 데이터베이스 독립성: ORM을 사용하면 특정 데이터베이스에 종속되지 않고 애플리케이션을 개발할 수 있다. ORM은 다양한 데이터베이스 시스템을 지원하며, 데이터베이스의 종류를 변경하더라도 코드의 수정이 최소화된다.
    5. 자동화된 데이터베이스 작업: ORM 프레임워크는 데이터베이스 스키마의 생성, 수정, 삭제와 같은 작업을 자동으로 처리할 수 있는 기능을 제공한다. 이를 통해 데이터베이스 관리 작업의 수고를 줄일 수 있다.

     

    Prisma란?

    Prisma는 현대적인 ORM 도구로, TypeScript와 JavaScript를 사용하는 애플리케이션에서 데이터베이스와의 상호작용을 간편하고 효율적으로 만들어주는 라이브러리이다.

    1. Prisma Client: TypeScript와 JavaScript에서 데이터베이스와 상호작용할 수 있는 타입 안전한 API를 제공한다. Prisma Client를 사용하면 SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 수행할 수 있다.
    2. Prisma Migrate: 데이터베이스의 스키마를 관리하고 마이그레이션을 자동화하는 도구이다. 데이터베이스 스키마의 변경 사항을 추적하고, 이를 데이터베이스에 적용할 수 있는 기능을 제공한다.
    3. Prisma Studio: 웹 기반의 UI로 데이터베이스의 데이터를 시각적으로 관리하고 편집할 수 있는 도구이다.

    Prisma는 개발자가 데이터베이스 작업을 더 쉽고 빠르게 수행할 수 있도록 돕는 강력한 도구이다. 특히 타입 안전성과 효율적인 마이그레이션 관리로 많은 개발자들에게 인기를 끌고 있다.

     

    Prisma의 장점

    1. 타입 안전성(Type Safety): Prisma Client는 TypeScript와 JavaScript를 사용하여 데이터베이스와 상호작용할 수 있는 타입 안전한 API를 제공한다. 이는 코드 작성 시 컴파일 단계에서 오류를 잡아내는 데 도움을 주며, 런타임 오류를 줄이는 데 기여한다.
    2. 직관적인 데이터 모델링: Prisma는 Prisma Schema라는 선언적 문법을 사용하여 데이터베이스 스키마를 정의할 수 있다. 이 스키마 파일은 데이터 모델을 명확하게 표현하며, 코드와 데이터베이스 구조 간의 일관성을 유지하는 데 도움을 준다.
    3. 강력한 마이그레이션 도구: Prisma Migrate는 데이터베이스 스키마의 변경을 효율적으로 관리할 수 있는 도구이다. 데이터베이스 스키마의 변경 사항을 추적하고, 필요한 마이그레이션을 자동으로 생성 및 적용하여 데이터베이스 관리를 간편하게 한다.
    4. 자동 생성된 쿼리 및 API: Prisma Client는 데이터 모델에 기반하여 자동으로 쿼리를 생성해 주기 때문에, 개발자는 직접 SQL 쿼리를 작성할 필요가 없다. 이는 개발 속도를 높이고 코드의 가독성을 향상시킨다.
    5. 데이터베이스 독립성: Prisma는 다양한 관계형 데이터베이스를 지원한다. 이를 통해 데이터베이스 시스템을 변경하더라도 애플리케이션의 코드 변경을 최소화할 수 있으며, 데이터베이스의 종류에 구애받지 않고 일관된 API를 사용할 수 있다.
    6. 우수한 개발자 경험: Prisma는 Prisma Studio와 같은 도구를 통해 직관적인 데이터 시각화 및 관리를 지원한다. 이는 데이터베이스의 데이터를 시각적으로 관리하고 편집할 수 있게 해준다.

     

     

    3-Tier

    3-Tier 아키텍처는 소프트웨어 시스템을 세 개의 주요 계층으로 나누어 각 계층의 역할과 책임을 분리하여 시스템의 유지보수와 확장성을 향상시키는 디자인 패턴이다. 이 아키텍처는 사용자 인터페이스, 비즈니스 로직, 데이터 저장소를 명확히 분리하여 복잡성을 줄이고, 개발과 유지보수를 효율적으로 관리할 수 있게 한다.

     

    3-Tier 아키텍처란?

    3-Tier 아키텍처는 세 가지 주요 계층으로 구성된다

    1. 프레젠테이션 계층 (Presentation Tier): 사용자 인터페이스를 담당
    2. 비즈니스 로직 계층 (Business Logic Tier): 애플리케이션의 비즈니스 로직을 처리
    3. 데이터 계층 (Data Tier): 데이터 저장소와의 상호작용을 관리

    이러한 계층 분리는 각 계층이 독립적으로 변경될 수 있도록 하여 시스템의 유연성과 유지보수성을 높인다.

     

    구성과 장단점

    특징 1-Tier 아키텍처 2 -Tier 아키텍처 3 -Tier 아키텍처
    구성 모든 기능이 단일 애플리케이션에서 처리 클라이언트와 서버로 나뉘어 있으며, 클라이언트가 비즈니스 로직과 사용자 인터페이스를 포함 프레젠테이션, 비즈니스 로직, 데이터 계층으로 나뉘어 각 계층이 독립적으로 관리
    장점 - 설계와 구현이 간단
    - 초기 개발 속도가 빠름
    - 클라이언트와 서버 간의 명확한 분리
    - 비즈니스 로직과 데이터 접근의 분리
    - 확장성 향상
    - 모듈화가 잘 이루어짐
    - 확장성 향상
    - 보안성이 강화됨
    - 재사용성이 높음
    단점 - 유지보수 어려움
    - 확장성 문제
    - 재사용성 부족
    - 클라이언트 의존성 문제
    - 데이터 전송 문제
    - 보안 문제
    - 시스템 복잡성 증가
    - 성능 문제 가능성
    - 배포 복잡성 증가

    이와 같이 3-Tier 아키텍처의 각 계층은 명확한 책임과 역할을 가지며, 시스템의 유지보수성과 확장성을 높이기 위한 구조를 제공한다. 이를 통해 소프트웨어 개발과 관리의 효율성을 극대화할 수 있다.

Designed by Tistory.