서버리스는 최소한의 유지 관리 및 재정 비용으로 종단 간 애플리케이션을 구축하려는 개발자에게 적합합니다. 서버리스 기능을 사용하면 백엔드 인프라를 유지 관리하지 않고도 고유한 코드를 실행할 수 있습니다. 그러나 설계상 상태 비저장이므로 외부 데이터 저장소가 필요합니다. 다음 질문은 서버리스에 가장 적합한 데이터베이스는 무엇입니까? 좋은 소식은 데이터베이스 공급업체가 서버리스 추세를 보고 서버리스 제품을 출시하거나 제품을 조정하려고 한다는 것입니다. 이 기사에서는 먼저 데이터베이스를 서버리스에 적합하게 만드는 요소를 나열합니다. 그런 다음 개인적으로 Serverless를 위한 훌륭한 데이터베이스가 될 후보라고 생각하는 데이터베이스를 나열하겠습니다.
서버리스에 적합한 데이터베이스의 장점은 무엇입니까?
- 사용 용이성: 차세대 개발자는 기술을 배우는 데 며칠과 몇 주를 보내고 싶지 않습니다. 그들은 문서 페이지를 읽는 대신 YouTube 비디오를 보고 배우고 싶어합니다. 따라서 서버리스용 데이터베이스는 간단하고 직관적이어야 합니다.
- 서버리스 가격: 가격은 0으로 조정되어야 합니다. 내가 사용하지 않는 것을 지불해야 하는 이유. 대역폭당 또는 요청당 가격 책정 모델은 정확한 사용량과 상관 관계가 있으므로 서버리스입니다. 개인적으로 대역폭보다 예측하기가 항상 쉽기 때문에 요청 단위를 선호합니다.
- 개발자 친화적인 가격 책정: 가격 책정은 함정 없이 단순해야 합니다. 일부 가격 책정 페이지는 너무 복잡하여 세부 사항을 설명하는 추가 기사와 블로그 게시물이 있습니다. 일부 공급업체에는 복잡한 계산기가 있습니다. 불행히도 대부분의 공급업체는 위험을 최소화하기 위해 복잡한 가격 책정을 선호합니다. 따라서 인보이스를 보기 전에는 얼마를 지불할 것인지 예측하기 어렵습니다.
- 서버리스 연결: 서버리스 기능은 몇 초 만에 수십만에서 수천까지 확장할 수 있습니다. 데이터베이스에 지속적인 연결이 필요한 경우 데이터베이스의 연결 제한에 쉽게 도달할 수 있습니다. HTTP 기반 연결은 더 가볍고 일반적으로 이러한 제한이 없기 때문에 문제가 없습니다.
- 낮은 지연 시간: 추가 대기 시간은 서버리스 기능의 비용입니다. 그러나 실제 비용은 웹사이트에서 유휴 상태로 기다리는 불행한 사용자입니다.
- 휴대성: 다른 클라우드 공급업체로 이동하려면 데이터 계층을 다시 작성해야 합니까? 또는 원격 데이터베이스에 연결하지 않고 랩톱에서 애플리케이션을 테스트할 수 있습니까?
- 일관성: 일반적으로 일관성과 성능 사이에는 절충점이 있습니다. 데이터베이스는 일관성 및 성능 스펙트럼에서 서로 다른 위치에 있습니다. 좋은 데이터베이스는 일관성 보장을 명확하게 정의하여 사용자가 가능한 문제와 위험을 인지할 수 있도록 해야 합니다.
- 확장성: 애플리케이션이 높은 처리량을 수신하기 시작할 때 데이터베이스는 계속 유지되어야 합니다. 이상적으로는 확장이 자동으로 이루어지거나 클라우드 공급자가 관리해야 합니다. 걱정하지 않으셔도 됩니다.
- 에지 친화적: Cloudflare 작업자 및 Fasty Compute는 사용자와 가장 가까운 에지에서 서버리스 기능을 실행할 수 있는 멋진 기술입니다. 여기에는 REST 기반 연결이 필요하지만 대기 시간을 최소화하기 위해 전역적으로 복제된 데이터베이스도 필요합니다.
- 세계화: 애플리케이션이 전 세계적으로 대중화됨에 따라 전 세계적으로 우수한 성능을 제공하는 데이터베이스가 필요합니다. 다중 지역 복제는 이를 가능하게 하는 핵심 기능입니다. 그러나 조심하십시오. 가격을 확인하십시오. 이 기능은 비용이 많이 들 수 있습니다.
서버리스를 위한 최고의 데이터베이스는 무엇입니까?
이 섹션에서는 다음 데이터베이스를 사용하여 얻은 인상과 메모를 공유합니다. 과학적 분석에 근거한 것은 아니지만 실제 비교 분석을 하기 전에 아이디어를 드리고자 합니다.
MongoDB(아틀라스)
-
사용 용이성:MongoDB는 가장 널리 사용되는 NoSQL 데이터베이스 및 문서 저장소입니다. API는 JSON 기반 데이터 모델 덕분에 매우 간단하고 직관적입니다.
-
이식성:거의 모든 클라우드 제공업체는 MongoDB API가 포함된 데이터베이스 제품을 보유하고 있으며 MongoDB를 온프레미스에서 직접 실행할 수 있습니다. 따라서 이식성 문제가 없습니다.
-
MongoDB Atlas는 최근 서버리스 데이터베이스 유형을 발표했습니다. 제 개인적인 인상은 서버리스 가격 책정 모델에서 호스팅되는 MongoDB 인스턴스와 비슷하다는 것입니다. 여기에서 볼 수 있듯이 Node.js SDK를 포함한 Serverless 데이터베이스에는 많은 기능이 지원되지 않습니다.
-
서버리스 연결:MongoDB Atlas는 HTTP 기반(예:REST) API를 제공하지 않습니다. 연결 제한에 쉽게 도달할 수 있습니다. 이것이 그들이 https://docs.atlas.mongodb.com/best-practices-connecting-from-aws-lambda/
를 피하는 방법에 대한 기사를 게시하는 이유입니다.** _(업데이트) MongoDB Atlas가 HTTP 기반 데이터 API를 출시했습니다 _
카산드라(Datastax Astra)
- Datastax Astra는 기본 Cassandra 드라이버 외에도 REST 및 GraphQL API를 제공합니다.
- 사용 용이성:나에게는 MongoDB 및 Redis에 비해 Cassandra를 배우는 것이 더 어려웠습니다. 그러나 Datastax 팀은 콘솔을 잘 사용했으며 매우 직관적이었습니다. 하지만 여전히 다른 버전의 REST API가 있는 문서에서 길을 잃었던 기억이 납니다.
- 개발자 친화적인 가격 책정:Datastax Astra의 가격 책정은 간단하지 않습니다. 모든 단위는 개별적으로 계산되며(읽기, 쓰기, 대역폭) 클라우드 제공업체 및 지역에 따라 가격이 다릅니다. Datastax에는 읽기/쓰기 단위(RRU 및 WRU)에 대한 자체 정의가 있습니다.
DynamoDB(AWS)
- 사용 용이성:AWS 사용자라면 DynamoDB를 쉽게 시작하고 사용할 수 있습니다. 하지만 MongoDB가 더 쉽고 직관적인 쿼리 API를 가지고 있다고 생각합니다.
- 서버리스 연결:DynamoDB 연결은 http 기반이며 연결 제한 문제가 없습니다.
- 휴대성:가장 큰 문제는 여기에 있습니다. AWS 외에는 DynamoDB를 사용할 수 없습니다.
동식물DB
- 일관성:아마도 FaunaDB가 이 목록에서 일관성 면에서 최고일 것입니다. 글로벌 복제와 함께 일관성을 보장합니다. 그러나 여기에는 추가 성능 비용이 따른다는 점에 유의하십시오. 이러한 강력한 일관성이 정말로 필요한지 고려하십시오.
- 성능:강력한 일관성으로 인해 다른 제품보다 지연 시간이 깁니다.
- 사용 용이성:솔직히 FQL은 제가 배우고 사용하기 가장 어려웠습니다. 하지만 FaunaDB는 GraphQL API도 지원하므로 더 쉬울 수 있습니다.
- 서버리스 연결:HTTP 기반 연결 덕분에 FaunaDB는 연결 제한 문제가 없습니다.
업스태시
- 사용 용이성:Redis는 아마도 이 목록에서 가장 배우기 쉬운 API일 것입니다. Upstash는 직관적이고 간단한 인터페이스로 클라우드에서 쉽게 사용할 수 있습니다.
- 개발자 친화적인 가격 책정:Upstash 가격은 요청별로 책정됩니다. 또한 가격 상한선을 설정하여 미리 정해진 금액 이상을 지불하지 않도록 보장합니다.
- 성능:메모리 기반 스토리지 덕분에 Upstash는 최고의 대기 시간을 제공합니다. 아이디어를 얻으려면 이것을 확인하십시오.
- 복잡한 쿼리 기능(조인 등)이 필요한 경우 Redis 데이터 구조가 실용적이지 않을 수 있습니다. 이러한 경우 더 나은 SQL 지원을 제공하는 데이터베이스가 필요할 수 있습니다.
파이어스토어
- 사용 용이성:Firestore는 이 범주에서 이 목록에서 최고 중 하나입니다. UI와 API는 매우 직관적입니다.
- 이식성:DynamoDB와 마찬가지로 Firestore에도 공급업체 잠금 문제가 있습니다. Google Cloud에 있으면 좋습니다.
- 성능:이전에 성능에 대해 몇 가지 불만을 들었습니다. 개인적으로 FaunaDB와 함께 대기 시간이 다른 것보다 나쁘다는 것을 경험했습니다. 여기에 물음표가 있습니다.
마무리 단어
저는 서버리스가 개발의 미래이며 서버리스로의 지속적인 전환이 있다고 믿습니다. 서버리스를 사용하면 개발자와 소규모 회사가 매우 제한된 예산으로 확장 가능한 제품을 만들 수 있습니다. 데이터베이스는 서버리스 원칙과 일관된 오퍼링으로 이러한 전환의 일부가 되어야 합니다.