본문 바로가기
SingleStoreDB

다양한 DB를 사용할 필요 없이, SingleStore 하나면 됩니다.

by 에이플랫폼 [Team SingleStore Korea] 2021. 8. 31.

 

데이터 인프라의 복잡성이 우리 업계에서 만연되어 있습니다. 최신 응용프로그램은 여러 개의 특수 목적 데이터 베이스를 기반으로 구축되고 있으며 제품 및 조직의 수명 기간 동안 더 많이 추가되고 있습니다.


GitHub를 통해 다음과 같은 웹 애플리케이션에 대한 데이터베이스 조합을 확인할 수 있습니다.

  • MySQL, MariaDB 또는 PostgreSQL과 같은 콘텐츠 저장 및 검색을 위한 기존 관계형 데이터베이스. 때로는 MongoDB 또는 Cassandra와 같은 NoSQL 데이터베이스(하지만, 실제로 그렇게 해서는 안됨).
  • ​Redis, Memcached와 같은 콘텐츠 캐싱 또는 고속 백그라운드 작업 대기열의 상태 추적을 위한 인메모리 키-값 데이터베이스
  • ​Elastic 또는 시계열 데이터베이스와 같이 Full-text 검색등 특정 기능을 위한 전문 데이터베이스
  • ​데이터 웨어하우스와 같은 데이터를 모으고 분석을 실행하기 위한 데이터베이스

이것은 자체 호스팅 가능한 웹 애플리케이션을 넘어서는 일반적인 방법이며, 클라우드 서비스 공급업체는 이러한 행동을 권장하는 것 같습니다. 우리는 “데이터 인프라 스프롤(Data Infrastructure Sprawl)”이라고 부르는 광기를 멈춰야 한다고 촉구했습니다.

웹 앱의 데이터베이스를 여러 개 사용할 필요 없이 SingleStore 단 하나만 필요합니다.

다중 데이터베이스 사용의 장점

하나의 데이터베이스로 프로젝트를 시작한다고 가정해 보겠습니다. 한계에 도달하는 경우는 다음과 같이 여러 가지가 있습니다.

  • ​백그라운드 작업을 시작하면, 갑자기 연결이 부족하여 팀이 동시성 제한을 제어하기 위해 안간힘을 써야 합니다.
  • 복잡한 조인을 실행하여 앱에서 일부 분석 데이터를 제공하려면, 데이터베이스를 실행하는 데 시간이 너무 오래 걸려 응답 시간이 느려지고 고객은 실망하게 됩니다.
  • 특정 방식으로 데이터 포맷을 지정해야 합니다. 데이터베이스가 제공하는 기능셋을 우회하기 위해 앱 로직을 조작하고 있는 자신을 발견할 것입니다. 그리고 다시, 당신의 팀은 데이터베이스 제한사항을 해결하기 위해 노력해야 합니다.

 

현명한 방법은 새로운 데이터 베이스를 추가하는 것입니다.

  1. 작업에 적합한 도구: 초기 데이터베이스가 모든 작업을 수행할 수 없으므로 특정 작업에 적합한 다른 데이터베이스에 의존하도록 앱의 일부를 추출하여 성능 문제를 해결합니다.

  2. 어렵지 않은 설정 방법: 프레임워크와 라이브러리는 다양한 데이터베이스에 대해 광범위하게 사용할 수 있습니다. 개발팀은 ‘Docker-compose up’을 실행하여 개발 중인 여러 서비스를 스핀업(Spin-up)할 수 있고, 사용자는 DBaaS(Database as a Service) 제품을 사용하여 운영 환경에서 서로 다른 데이터베이스를 쉽게 실행할 수 있습니다.

  3. 널리 알려진 일반적인 기술: 앱을 사용할수록 더 많은 앱이 계속해서 늘어납니다. 그렇기 때문에 다양한 튜토리얼, 포럼 항목, 문서, 라이브러리 등을 통해 더 쉽게 따라할 수 있습니다.

관심사 분리(Separation of concerns)는 실제로 데이터베이스 계층에 적용될 수 있습니다. 여러 데이터베이스 기술을 모놀리식 애플리케이션(Monolithic Application)과 함께 사용할 수 있으며, 각 서비스에 자체 데이터베이스가 있는 마이크로서비스 환경에서는 훨씬 자연스럽게 보일 수 있습니다.

그러나, 이것은 완벽한 방법이 아닙니다. 다음 섹션에서는 기본 또는 초기 데이터베이스의 제한사항을 해결하기 위해 여러 데이터베이스 기술을 사용하도록 선택할 때 발행하는 몇 가지 일반적인 문제를 살펴보겠습니다.

다중 데이터베이스 사용의 단점

소프트웨어를 설계하고 구축할 때 종종 절충안을 관리하게 됩니다. 이전 섹션에서 여러 데이터베이스를 사용하여 응용프로그램을 백업할 때 얻을 수 있는 몇 가지 이점을 나열했습니다. 하지만 모든 것이 이로운 것은 아닙니다.

인프라에 추가하는 데이터베이스 서비스 수에 따라 문제의 수와 잠재적인 문제가 선형적으로 증가하지 않는다는 것을 알게 될 것입니다. 실제로 다음과 같은 문제가 기하급수적으로 발생하게 됩니다.

  1. 단순한 학습 곡선이 아님. 이제 학습 곡선이 여러 개 있습니다. 개발자는 기본적으로 각 데이터베이스 기술의 복잡한 부분에 대해 잘 알지 못합니다. 새로운 팀 구성원을 교육하거나 팀 구성원이 코드베이스의 새로운 부분을 수정할 때, 데이터베이스 기술의 다양성으로 인해 학습 속도가 느려지거나 새로운 코드가 데이터베이스를 제대로 활용하지 못하는 기술 부채(Technical debt)를 초래할 수 있습니다. 초기에 개발 속도를 높이기 위해 새 데이터베이스 서비스를 추가했지만 나중에 문제를 해결했다는 사실을 알게 될 것입니다.

    ※ 기술 부채(Technical debt): 현 시점에서 더 오래 소요될 수 있는 더 나은 접근방식을 사용하는 대신 쉬운 솔루션을 채택함으로써 발생되는 추가적인 재작업의 비용을 반영하는 소프트웨어 개발의 한 관점이다. 기술 부채는 금전적인 채무와 비유될 수 있다.

  2. 더 많은 실패 포인트. 이제 여러 데이터베이스 기술을 포괄하는 재해복구 전략을 구현해야 합니다. 각 기술은 데이터 백업 및 복원을 관리할 수 있는 고유한 방법이 있고, 각 서비스는 서로 다른 관련 메트릭을 가지고 있습니다. 또한 더 많은 서비스를 모니터링해야 합니다. 뿐만 아니라 사용자와 팀이 데이터베이스에 의존하는 응용프로그램의 기능이 어떻게 조정되는지 고려해야 합니다. 검색 기능을 지원하는 특정 데이터베이스가 다운되어 앱의 검색창이 작동하지 않는다면 응용프로그램은 어떻게 작동합니까? 또는 대기열을 관리하는 데이터베이스가 메모리에서 실행되어 서버가 손상되어 백그라운드 작업이 갑자기 손실되는 경우, 앱의 성능이 저하되거나 사용자와 팀에 문제가 누적되어 엉망이 될까요? 추가 장애 지점을 조정하는 것은 어렵고, 애플리케이션을 구축하고 다듬는 데 시간과 리소스가 소요됩니다.

  3. 비즈니스 비용 증가. 팀이 응용프로그램을 확장하는데 비용이 더 많이 들 수 있지만, 비즈니스 비용의 증가도 고려해야 합니다. 각 데이터베이스 공급업체는 클라우드 제품, 자체 호스팅 라이선스 및 지원 서비스의 가격을 다르게 책정하고, 각 서비스에 대해 적절한 마진을 부과합니다. 한 대에 대한 프로비저닝이 아니라 여러 서비스에 대한 과잉 프로비저닝으로 인해 여러 번 더 많은 비용을 지불하게 되는 경우가 많습니다.

여러 데이터베이스 기술을 사용하는 것은 비용이 많이 드는 일입니다. 시간이 지나면서 새로운 구성원의 교육과 새로운 기능의 개발 속도가 느려질 수 있습니다. 이는 아키텍처와 운영 관리에 복잡성을 가중시켜 서비스 품질을 유지하기가 더 어려워지며, 응용프로그램 증가에 따라 비즈니스 비용도 증가합니다.

대부분의 조직에서는 사용 가능한 데이터베이스 기술의 한계를 감안할 때 최신 데이터 집약적 응용프로그램에 적합한 성능과 기능을 제공할 수 있는 실질적인 대안이 없었기 때문에 이러한 기능, 성능 및 비용 간의 절충을 수용하고 있습니다.

하지만, 우리는 위에서 설명한 문제를 겪지 않고 목표를 달성할 수 있는 훨씬 더 좋은 방법이 있다고 믿습니다.

SingleStore를 이용하세요

수년간 SingleStore 데이터베이스는 수백 개의 회사에서 동급 최고의 다양한 데이터베이스 기술을 대체하는 데 사용되었습니다. 대다수의 경우, 첫 번째 또는 기본 데이터베이스의 특정 한계를 극복하기 위해 완전히 다른 데이터베이스 기술이 필요한 것이 아닌 몇 가지 기능을 추가하고 전체적으로 더 빠른 데이터베이스가 필요합니다.

Cybersecurity 분야의 한 고객은 최근 Elastic과 Postgres라는 두 가지 데이터베이스 기술의 수백 개의 인스턴스를 수십 개의 SingleStore 유닛을 실행하는 단일 클러스터로 교체했다는 사실을 공유했습니다. 이는 막대한 비용 절감 뿐만 아니라 유지보수, 기능 개발 및 팀 성장에 있어 엄청난 단순화를 의미합니다.

또 다른 고객인 개인정보보호 우선 웹 분석 서비스인 Fathom Analytics는 클라우드 기반 MySQL 배포가 빠르게 성장하는 사용자 기반 대시보드를 느리게 생성하기 시작했을 때 SingleStore를 시작했습니다. 몇 개월 후, 그들은 이미 아키텍처를 단순화하기 위해 기존 다른 데이터베이스 기술을 SingleStore로 대체할 방법을 찾고 있습니다. 그들의 회사는 자발적으로 운영되는 소규모 부트스트랩 회사입니다. 그들의 기술 블로그 게시물을 읽으면 그들의 목표가 소규모로 유지하면서 세계에서 가장 빠르고 최고의 분석 서비스를 제공하는 것임을 알 수 있습니다. SingleStore는 데이터베이스 수준에서 이를 가능하게 합니다.

고객이 최소 두 개의 데이터베이스를 SingleStore로 교체하여 아키텍처를 단순화한 방법을 설명하는 여러 사례 연구를 웹 사이트에서 확인할 수 있습니다.

혜택은 끝이 없습니다

빠르고 친숙함. SingleStore는 인메모리 및 온디스크 스토리지 기능을 활용하여 규모에 상관없이 트랜잭션 및 분석 쿼리를 모두 지원할 수 있는 매우 빠른 관계형 데이터베이스입니다. 또한 JSON, 지리공간, 시계열 데이터 등 다양한 데이터 형식을 지원합니다. MySQL 와이어 호환이므로 MySQL 및 MariaDB를 즉시 대체할 수 있어 코드를 다시 작성하거나 도구를 새로 만드는 등 새로운 기술을 배울 필요가 없습니다.

확장성과 다용성. SingleStore로 프로젝트를 시작하면 사용량을 영구적으로 확장할 수 있습니다. 즉, 데이터베이스는 규모에 상관없이 주요 사용 사례에 대해 빠른 속도로 유지될 뿐만 아니라, 별도의 데이터베이스 기술을 배포할 필요 없이 SingleStore의 다용성을 활용하여 새로운 사용 사례를 구축할 수 있습니다.

  • 아키텍처를 합리화합니다.
  • 익숙한 작업환경을 유지할 수 있습니다.
  • 운영비용이 절감할 수 있습니다.
  • 데이터베이스 계층에서 병목 현상은 없습니다.​

이것이 스타트업에서 유니콘 기업, 포춘 선정 10대 기업에 이르기까지 모든 규모의 기업이 SingleStore를 채택한 이유입니다.

무료로 SingleStore 사용해 보기. 당신은 클라우드에서 무료로 SingleStore를 사용해 보거나 직접 배포할 수 있습니다. 지금 계정을 만들어 보세요.

August 12th, 2021

Alex Solleiro


출처: https://www.singlestore.com/blog/you-only-need-one-database/

 

You're Using Too Many Databases. You Only Need One

Thinking about adding another database to your project? Think again. In this post, you'll discover pros & cons of using multiple databases vs. only one.

www.singlestore.com

 

www.a-platform.biz | info@a-platform.biz