조직에서 데이터베이스 데브옵스를 간소화하고 싶으신가요?
데이터베이스가 빠른 혁신의 걸림돌이 되고 있나요?
수백만 달러의 데이터베이스 라이선스 비용을 절감하고 싶으신가요?

계속 읽어보세요!

데이터베이스 데브옵스 현황

데이터베이스 데브옵스 현황 는 SQL Server 전문가들의 DevOps 채택률에 대한 설문조사입니다. 1,000명 이상의 SQL Server 전문가가 설문조사에 응답했습니다. 응답자는 전 세계에서 왔으며 다양한 직무, 회사 규모 및 산업을 대표합니다.

설문조사 결과에는 몇 가지 좋은 결과가 있습니다. 여기서 주목할 만한 몇 가지 주요 결과를 소개합니다:

데이터베이스 변경 사항을 DevOps 프로세스에 통합하는 데 있어 가장 큰 과제는 여전히 애플리케이션과 데이터베이스 변경 사항을 동기화하는 것입니다.

또 하나 ...

기존의 사일로화된 데이터베이스 개발에서 확인된 가장 큰 단점은 변경 사항을 도입할 때 배포 실패 또는 다운타임의 위험이 증가한다는 점입니다. 그 다음으로는 개발 및 릴리스 주기가 느리고 변화하는 비즈니스 요구 사항에 신속하게 대응할 수 없다는 점입니다.

그리고 또 하나 ...

데이터베이스 변경 사항 전달 속도를 높이고 개발자가 더 많은 부가가치 작업을 수행할 수 있도록 하는 것이 데이터베이스 변경 사항 전달 자동화의 핵심 동인입니다.

여기서 강조된 문제들은 SQL Server에만 국한된 것이 아니라 모든 관계형 데이터베이스에 적용될 수 있습니다. Oracle, Postgres, MySQL, MariaDB 또는 기타 관계형 데이터베이스를 사용 중이라면 이러한 문제에 직면할 가능성이 높습니다. 왜 그럴까요?

관계형이 데이터베이스 데브옵스에 적합하지 않은 이유는 무엇인가요?

애플리케이션이 RDBMS의 여러 테이블에 있는 데이터로 작업하는 것이 일반적입니다. 예를 들어 주문을 할 때 Customer, Order 및 Product 테이블을 사용할 수 있습니다. 각 테이블에는 데이터베이스에 특정한 표준 데이터 유형을 가진 여러 열이 있습니다. 테이블에는 기본, 참조 및 외래 키 제약 조건이 있을 수 있습니다. 관계형 데이터베이스를 사용하여 애플리케이션을 구축하는 개발자는 일반적으로 Hibernate 또는 Java 개발자용 Java 지속성 API와 같은 객체 관계형 매퍼(ORM)를 사용합니다. 다른 언어에도 유사한 ORM이 있습니다. ORM은 기본이 되는 복잡한 데이터베이스 구조를 캡처하여 프로그래머가 해당 언어를 사용하여 자연스럽게 애플리케이션을 빌드할 수 있게 해줍니다.

ORM은 또한 지속성 공급자를 사용하며 애플리케이션이 기본 데이터베이스와 독립적으로 작동할 수 있도록 합니다. 이 지속성 공급자는 언어별 클래스와 데이터베이스 구조 간의 바인딩을 생성합니다. 예를 들어 클래스를 테이블 또는 여러 테이블에 매핑하고, 언어 데이터 유형을 데이터베이스에 정의된 유형에 바인딩하고, 테이블 간의 관계를 캡처합니다. 이론적으로 프로그래머는 다른 지속성 공급자를 사용하여 애플리케이션에 다른 RDBMS를 사용할 수 있습니다. 그러나 이것은 실제 경험과는 거리가 멉니다!

데이터베이스를 변경하려면 ORM 클래스를 업데이트해야 하며, 그렇지 않으면 애플리케이션이 작동하지 않을 수 있습니다. 예를 들어, 새 테이블을 추가하려면 새 Java 클래스가 필요하거나 기존 클래스를 업데이트해야 할 수 있습니다. 열의 데이터 유형을 변경하려면 클래스 정의를 업데이트해야 하며, 그렇지 않으면 애플리케이션이 컴파일되지 않습니다. 새 열을 추가한다는 것은 클래스에 새 필드를 추가하는 것을 의미합니다. 모든 변경 사항은 클래스를 업데이트해야 하며 애플리케이션을 다시 패키징해야 합니다.

진화하는 비즈니스 요구 사항을 충족하기 위해 데이터베이스 구조의 변경은 항상 필요합니다. 그러나 DBA가 데이터베이스를 변경하고 ORM 클래스가 업데이트되지 않으면 연결이 끊어집니다. 애플리케이션 배포는 데이터베이스 스키마 업데이트와 함께 조정되어야 합니다. 다음과 같은 도구가 있습니다. 플라이웨이, Liquibase 애플리케이션과 데이터베이스 배포를 통합하는 다른 솔루션도 있습니다. 그러나 개발자는 프로덕션 데이터베이스를 직접 변경할 수 없는 경우가 많습니다. 연결이 끊어지면 애플리케이션이 작동하지 않아 비즈니스에 타격을 입게 됩니다. 데브옵스 관행은 애플리케이션을 구축하는 개발자와 데이터베이스 스크립트를 업데이트하는 DBA 간의 긴밀한 협업을 필요로 하므로 이러한 문제를 해결하는 데 확실히 도움이 될 수 있습니다.

하지만 설문조사에 따르면 응답자 중 50% 이상이 현재 DevOps를 도입하지 않은 것으로 나타났습니다.

Database DevOps Adoption

데이터베이스 변경 사항을 DevOps 프로세스에 통합하려고 해도 어려움이 있습니다.

Database DevOps Challenges

ORM 클래스를 백엔드 데이터베이스 구조와 동기화해야 하는 애플리케이션 및 데이터베이스 변경 사항을 동기화하는 것이 가장 큰 과제입니다. DBA는 애플리케이션 개발에 최적이 아닐 수 있는 특정 방식으로 데이터베이스를 구조화하려고 할 수 있습니다. 애플리케이션 및 데이터베이스 개발 전반에 걸쳐 일관성을 적용하는 것은 원활한 데이터베이스 DevOps를 보장하기 위한 다음 주요 과제입니다.

사일로화된 개발은 비즈니스에 빠르게 혁신하고 가치를 제공하는 능력에 심각한 문제를 야기합니다.

Database DevOps Drawbacks

이 이미지에서 볼 수 있듯이 변경 사항 도입 시 배포 실패, 느린 개발/출시 주기, 비즈니스 요구 사항에 대응할 수 없음이 60% 이상의 단점을 차지합니다.

데이터베이스 변경 사항의 전달 속도는 데이터베이스 DevOps의 가장 큰 관심사입니다.

Database DevOps Driver

그래서 어떻게 하시나요?

NoSQL은 데이터베이스 데브옵스를 어떻게 간소화하나요?

NoSQL 문서 데이터베이스는 데이터베이스 DevOps를 간소화하는 데 도움이 됩니다!

NoSQL은 데이터베이스 DevOps를 어떻게 간소화하나요?

  • 스키마 유연성 - 개발자에게는 빠르게 변화하는 정형, 반정형, 비정형 데이터를 저장할 수 있는 단일 데이터베이스가 필요합니다. NoSQL 문서 데이터베이스는 개발자가 JSON 데이터에서 직접 작업하고 의미를 도출할 수 있도록 하여 스키마 유연성을 제공합니다.
  • 임피던스 불일치 없음 - 애플리케이션에 대한 ORM이 없으므로 도메인 클래스와 데이터베이스 구조 간에 임피던스 불일치가 발생하지 않습니다. 애플리케이션 코드만 업데이트하면 되며 스키마 변경에 따른 조정이 필요하지 않습니다.
  • 확장성 - 보고서에서 언급된 단점 중 하나는 변화하는 비즈니스 요구사항에 적응할 수 없다는 것입니다. 이는 확장성이 데브옵스의 주요 과제임을 강조합니다. 데이터의 양, 쿼리 수 또는 애플리케이션을 지원하는 데 필요한 인덱스 유형이 변경되면 데이터베이스는 이러한 변경 사항을 수용하기 위해 변경되어야 합니다. 몇 주나 몇 달이 아니라 바로 오늘! SQL 데이터베이스는 상용 하드웨어에서 실행되지 않으며, RDBMS의 스케일업과 달리 스케일아웃 아키텍처를 가지고 있습니다. 샤딩은 RDBMS의 확장성에 도움이 될 수 있지만, 이는 이제 처리해야 할 추가적인 복잡성입니다.

자세히 알아보기 기업이 NoSQL로 전환하는 이유.

어느 NoSQL 데이터베이스 는 GE, 메리어트, 버라이즌, 유나이티드, 링크드인, DIRECTV 및 다른 많은 사람들이?

다른 카우치베이스의 장점?

NoSQL은 결코 만병통치약이 아닙니다. 복잡한 트랜잭션 로직이나 실시간 데이터 웨어하우징이 필요한 시스템을 구축하는 경우에는 RDBMS가 더 적합할 수 있습니다. 그러나 확장성 및 민첩성 문제를 해결하고 데이터베이스 DevOps를 간소화합니다.

다음은 관계형 데이터베이스에서 NoSQL로 마이그레이션하는 방법에 대한 훌륭한 동영상입니다:

다음은 Marriott가 관계형에서 NoSQL로 전환한 이유를 보여주는 또 다른 흥미로운 동영상입니다:

더 많은 동영상은 다음에서 확인할 수 있습니다. 카우치베이스 커넥트 2016.

그리고 더 많은 관련 블로그도 있습니다:

문의하세요:

 

작성자

게시자 Arun Gupta, 개발자 지원 부문 부사장, Couchbase

아룬 굽타는 Couchbase의 개발자 지원 담당 부사장입니다. 그는 Sun, Oracle, Red Hat에서 10년 이상 개발자 커뮤니티를 구축하고 이끌었습니다. 그는 콘텐츠, 마케팅 캠페인 및 프로그램의 전략, 계획 및 실행을 개발 및 실행하는 교차 기능 팀을 이끄는 데 있어 깊은 전문성을 보유하고 있습니다. 그 전에는 Sun에서 엔지니어링 팀을 이끌었으며 Java EE 팀의 창립 멤버입니다. Gupta는 기술에 관한 블로그 게시물을 2,000개 이상 작성했습니다. 40여 개국에서 수많은 주제에 대해 광범위한 강연 경험을 가지고 있으며, 3년 연속 JavaOne Rock Star로 선정되었습니다. 또한 미국에서 Devoxx4Kids 지부를 설립하여 어린이를 대상으로 한 기술 교육을 지속적으로 장려하고 있습니다. 기술에 관한 여러 권의 책을 저술했으며, 열렬한 마라토너이자 지구를 횡단하는 사람, Java 챔피언, JUG 리더, NetBeans 드림팀 멤버, Docker 캡틴이기도 한 그는 @arungupta에서 쉽게 만나볼 수 있습니다.

댓글 하나

댓글 남기기