데이터 추상화를 통해 개발자와 관리자는 전체 데이터 사일로에 액세스할 필요가 없기 때문에 프런트 엔드 사용자에게 필요한 데이터만 표시할 수 있습니다. 앱스트럭션은 소프트웨어 개발의 여러 영역에서 사용되며, 애플리케이션의 데이터 계층은 데이터베이스를 사용자 인터페이스와 분리합니다. 인프라 변경 시 확장성을 높이고 리팩토링을 줄이는 것이 목적입니다.
DBMS란?
데이터베이스 관리 시스템(DBMS)은 사용자와 원시 저장 데이터 간의 인터페이스로 사용되는 도구입니다. 관리자는 DBMS를 사용하여 데이터베이스에 저장된 데이터를 보고, 새 데이터를 업데이트 또는 삽입하고, 쿼리를 실행하여 데이터를 검색할 수 있습니다. 또한 관리자는 저장된 절차, 트리거, 테이블, 인덱스 및 기타 객체와 같은 데이터베이스 항목을 관리할 수 있습니다. DBMS는 데이터베이스를 구축하고 나중에 관리하는 데 종종 사용됩니다.
DBMS의 예로는 MySQL 있습니다. MySQL은 관계형 데이터베이스이므로 관리자는 DBMS를 사용하여 데이터베이스 개체를 보고, 테이블을 만들고, 데이터를 쿼리합니다. 애플리케이션은 DBMS를 사용하여 데이터를 쿼리하거나 데이터베이스에 데이터를 추가합니다. MySQL은 관계형 데이터베이스이기 때문에 데이터는 모든 열에 제약이 있는 테이블에 저장되어 저장된 데이터의 유형을 제어합니다.
DBMS의 또 다른 예는 MongoDB 입니다. MongoDB는 비정형 데이터를 저장하는 NoSQL 오픈소스 데이터베이스입니다. 데이터는 문서에 저장되며 관리자는 문서의 모든 수와 유형의 항목을 저장할 수 있습니다. 관리자는 MongoDB DBMS를 사용하여 데이터베이스 구조를 관리하며, 애플리케이션은 이를 사용하여 데이터를 쿼리하고 추가합니다.
데이터 추출이란?
데이터 추상화는 애플리케이션의 논리 함수로, 원시 데이터를 프런트 엔드에서 분리합니다. 간단히 말해, 데이터 계층은 데이터베이스에 대한 연결을 처리하고 프런트 엔드에서 쿼리합니다. 데이터 추상화를 통해 프런트 엔드 애플리케이션이 데이터가 저장된 위치에 관계없이 데이터를 쿼리할 수 있습니다. 그런 다음 개발자는 코드의 많은 부분을 리팩토링하지 않고도 백엔드 데이터베이스를 교체하여 새로운 데이터베이스 엔진과 연결하고 작업할 수 있습니다.
예를 들어, 작업해야 할 데이터 유형을 결정할 때까지 개발 중인 MongoDB를 사용한다고 가정해 봅시다. 그런 다음 프로덕션에서 MySQL을 사용하려고 합니다. 데이터 추상화 계층은 프론트엔드 코드베이스에 영향을 주지 않고 MongoDB와 MySQL의 데이터베이스 연결 및 쿼리를 처리합니다. 사용자는 데이터베이스 엔진의 변경 사항을 알지 못하지만 필요한 정보를 얻을 수 있습니다.
데이터 추출 수준
데이터 추상화는 데이터 관리의 다양한 측면을 다루는 포괄적 용어입니다. 개발자가 애플리케이션을 만들고 관리자와 협력할 때 물리적, 논리적 및 뷰의 세 가지 수준의 추상화가 있습니다. 다음은 이러한 수준에 대한 간략한 설명입니다.
- 물리적/내부적 수준: 이 레벨은 서버의 네트워크 정보 및 서버의 위치를 포함하여 데이터베이스를 수용하는 인프라를 포함합니다. 예를 들어, 물리적 구성 요소는 중간 수준의 CPU 및 메모리 리소스를 갖춘 클라우드 VM일 수 있습니다.
- 논리적/개념적 수준: 논리적 계층은 물리적 계층에 연결하는 데 사용되는 코드입니다. 여기에는 연결, 쿼리 및 오류 처리를 위한 로직이 포함되어 있습니다. 논리적 계층에는 입력 요인에 따라 여러 데이터베이스에 연결하는 코드가 포함될 수 있습니다.
- 보기/외부 레벨: 프런트엔드 애플리케이션을 통해 사용자는 데이터를 볼 수 있습니다. 이러한 수준의 추상화는 원시 데이터 스토리지 위치에서 가장 먼 곳에 있지만, 데이터를 포맷하여 뷰어에 제공하여 유용하게 사용할 수 있도록 합니다.
다계층 데이터베이스 아키텍처
추상화 레이어는 애플리케이션에 내장된 논리적 레이어일 수 있지만 물리적으로 다른 리소스에도 배치될 수 있습니다. 다계층 추상화의 목적은 다른 계층에 영향을 주지 않고 단일 계층을 훨씬 쉽게 확장할 수 있도록 하는 것입니다. 다중 계층 아키텍처는 관리자가 애플리케이션의 각 구성 요소에 대해 여러 계층을 선택할 수 있는 “n-계층 아키텍처”라고도 합니다.
일반적으로 다계층 아키텍처에는 프레젠테이션, 데이터 및 애플리케이션이라는 세 가지 계층이 있습니다. 다음은 이러한 계층에 대한 간략한 설명입니다.
- 데이터 계층: 이 계층은 데이터를 저장하고 데이터베이스 엔진을 실행합니다. 전용 베어본 서버 또는 가상 머신에 설치될 수 있습니다. 데이터베이스는 또한 사용 사례 시나리오에 따라 복잡한 데이터 파이프라인이 있는 데이터 웨어하우스의 클러스터에서도 작동할 수 있습니다.
- 애플리케이션 계층: 이 계층은 애플리케이션을 처리합니다. 예를 들어, 프런트 엔드가 사용자 정의 웹 애플리케이션인 경우 웹 서버는 애플리케이션 파일을 저장하고 실행합니다. 사용자는 애플리케이션을 실행하기 위해 이 서버에 연결합니다.
- 프레젠테이션 계층: 프레젠테이션 계층은 비슷하게 들리더라도 애플리케이션 계층과는 다릅니다. 애플리케이션 계층에는 코드 기반과 애플리케이션 로직이 있으며, 프레젠테이션 계층은 사용자가 보는 것입니다. 웹 애플리케이션에서 프레젠테이션 계층은 애플리케이션 코드를 포맷하고 사용자에게 표시하는 데 사용되는 CSS 및 HTML입니다.
데이터 추출의 장점은 무엇일까요?
프런트엔드 애플리케이션과 데이터 레이어를 분리하면 리소스를 세부적으로 확장할 수 있습니다. 데이터 계층의 변경도 프런트엔드에 영향을 미치지 않으므로, 데이터 추상화는 다른 데이터베이스 엔진이 사용되거나 데이터 계층의 위치가 변경될 때 코드의 리팩터링을 제한합니다.
예를 들어, 조직이 온프레미스 위치에서 클라우드로 데이터베이스를 이동하기로 결정했다고 가정해 봅시다. 데이터 계층만 변경하면 되며 프런트엔드 애플리케이션 코드를 변경할 필요가 없습니다. 관리자는 애플리케이션 계층의 리소스를 확장할 필요 없이 데이터 계층의 리소스를 확장할 수 있습니다.
결론
엔터프라이즈 애플리케이션에서 DBMS에 연결할 수 있는 데이터 추상화 레이어를 사용하면 확장 또는 축소가 가능합니다. 또한 코드베이스를 변경하지 않고도 아키텍처의 데이터 계층 아키텍처를 변경할 수 있습니다. 여러 데이터베이스 엔진을 사용하거나 오버헤드 없이 데이터베이스를 새로운 위치로 이동할 수 있습니다.
데이터 추상화 아키텍처를 계획하고 있다면, 퓨어스토리지 ® FlashArray™에서 통합 블록 및 파일 스토리지를 확인하세요. 클라우드 스토리지에 대한 자세한 내용은 퓨어스토리지의 클라우드 블록 스토리지를 확인하세요.