Google Cloud Run Volume Mounts in Preview: Easier Access to Files in Containers

MMS Founder
MMS Steef-Jan Wiggers

Article originally posted on InfoQ. Visit InfoQ

Google recently announced a new feature called volume mounts in preview. This feature aims to streamline the integration of cloud-native applications with shared data storage solutions, such as Cloud Storage buckets and NFS shares, directly within Cloud Run instances.

The volume mounts feature resides in Cloud Run, a fully managed container platform built on Google’s scalable infrastructure. By enabling containers to access storage bucket or file server content as though it were local, Google enhances file system semantics, offering developers a more familiar experience. This eliminates the need for complex solutions or alternative services previously required to access shared data.

Examples of using volume mounts include storing application configuration files, handling event-driven Cloud Storage operations, loading vector database files for applications like Langchain, and serving static websites more efficiently. For instance, developers can now mount Cloud Storage buckets to provide configurations to services or to directly serve static content for websites without the need to rebuild and redeploy container images after each update. This flexibility is beneficial for applications requiring regular static content or configuration updates.

Serving static content to websites example (Source: Google Cloud blog post)

Another example is that volume mounts facilitate the creation of event-driven Cloud Storage handlers, eliminating the need for custom code to fetch files from Cloud Storage. By mounting the relevant bucket, files can be accessed directly through the filesystem, streamlining the process.

Additionally, the ability to mount NFS storage, like a Cloud Filestore instance, is crucial for stateless services that rely on external databases, such as ChromaDB. This ensures consistent access to dynamically changing data without embedding it within the container.

Developers can mount a Cloud Storage bucket or any NFS file share using a gcloud command, update the Cloud Run YAML resource definition, or deploy it via Terraform. They can, for example, perform a source-based deployment to a new Cloud Run job and mount a Cloud Storage bucket with the following command:

gcloud beta run services update SERVICE 

--execution-environment gen2 

--add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME 

--add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

The introduction of volume mounts places Google Cloud Run in competition with similar offerings from AWS and Azure. AWS Fargate‘s integration with persistent storage volumes Azure Container Instances‘ (ACI) capability to mount Azure Files highlights the industry’s move towards more flexible, scalable cloud services.

Etienne Fontaine, a Site Reliability Engineer at BlaBlaCar, highlighted the competitive advantage Google Cloud Run might have; he tweeted:

I think it makes a difference compared to AWS with Fargate and EFS, for example.

More details on Google Cloud Run are available on the documentation website.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Caprock Group LLC Makes New $220000 Investment in MongoDB, Inc. (NASDAQ:MDB)

MMS Founder
MMS RSS

Posted on mongodb google news. Visit mongodb google news

Caprock Group LLC bought a new position in shares of MongoDB, Inc. (NASDAQ:MDBFree Report) during the fourth quarter, according to the company in its most recent 13F filing with the Securities and Exchange Commission. The institutional investor bought 537 shares of the company’s stock, valued at approximately $220,000.

A number of other institutional investors and hedge funds have also recently made changes to their positions in the business. KB Financial Partners LLC acquired a new stake in shares of MongoDB during the 2nd quarter worth approximately $27,000. Bessemer Group Inc. acquired a new stake in shares of MongoDB during the 4th quarter worth approximately $29,000. BluePath Capital Management LLC acquired a new stake in shares of MongoDB during the 3rd quarter worth approximately $30,000. Blue Trust Inc. boosted its position in shares of MongoDB by 937.5% during the 4th quarter. Blue Trust Inc. now owns 83 shares of the company’s stock worth $34,000 after acquiring an additional 75 shares in the last quarter. Finally, Cullen Frost Bankers Inc. acquired a new stake in shares of MongoDB during the 3rd quarter worth approximately $35,000. Institutional investors and hedge funds own 89.29% of the company’s stock.

Wall Street Analysts Forecast Growth

Several equities analysts recently commented on MDB shares. Mizuho increased their price objective on shares of MongoDB from $330.00 to $420.00 and gave the company a “neutral” rating in a research note on Wednesday, December 6th. Royal Bank of Canada increased their price objective on shares of MongoDB from $445.00 to $475.00 and gave the company an “outperform” rating in a research note on Wednesday, December 6th. Redburn Atlantic reissued a “sell” rating and issued a $295.00 price objective (down previously from $410.00) on shares of MongoDB in a research note on Tuesday, March 19th. Barclays increased their price objective on shares of MongoDB from $470.00 to $478.00 and gave the company an “overweight” rating in a research note on Wednesday, December 6th. Finally, Stifel Nicolaus reissued a “buy” rating and issued a $435.00 price objective on shares of MongoDB in a research note on Thursday, March 14th. Two analysts have rated the stock with a sell rating, three have given a hold rating and nineteen have assigned a buy rating to the stock. According to data from MarketBeat.com, the stock has a consensus rating of “Moderate Buy” and a consensus target price of $449.85.

View Our Latest Analysis on MongoDB

Insiders Place Their Bets

In other MongoDB news, CFO Michael Lawrence Gordon sold 10,000 shares of the firm’s stock in a transaction on Thursday, February 8th. The shares were sold at an average price of $469.84, for a total value of $4,698,400.00. Following the completion of the sale, the chief financial officer now directly owns 70,985 shares in the company, valued at $33,351,592.40. The transaction was disclosed in a filing with the Securities & Exchange Commission, which is available at the SEC website. In other news, CFO Michael Lawrence Gordon sold 10,000 shares of MongoDB stock in a transaction dated Thursday, February 8th. The shares were sold at an average price of $469.84, for a total transaction of $4,698,400.00. Following the completion of the transaction, the chief financial officer now directly owns 70,985 shares in the company, valued at $33,351,592.40. The sale was disclosed in a filing with the Securities & Exchange Commission, which can be accessed through this link. Also, Director Dwight A. Merriman sold 2,000 shares of MongoDB stock in a transaction dated Thursday, February 8th. The shares were sold at an average price of $465.37, for a total transaction of $930,740.00. Following the transaction, the director now owns 1,166,784 shares of the company’s stock, valued at $542,986,270.08. The disclosure for this sale can be found here. Over the last ninety days, insiders sold 54,248 shares of company stock worth $22,970,890. 4.80% of the stock is currently owned by company insiders.

MongoDB Trading Down 2.3 %

NASDAQ:MDB opened at $347.82 on Wednesday. The company has a current ratio of 4.40, a quick ratio of 4.40 and a debt-to-equity ratio of 1.07. The stock has a market capitalization of $25.11 billion, a price-to-earnings ratio of -140.25 and a beta of 1.20. The firm has a fifty day simple moving average of $412.17 and a two-hundred day simple moving average of $389.95. MongoDB, Inc. has a 12 month low of $198.72 and a 12 month high of $509.62.

MongoDB (NASDAQ:MDBGet Free Report) last posted its quarterly earnings results on Thursday, March 7th. The company reported ($1.03) EPS for the quarter, missing analysts’ consensus estimates of ($0.71) by ($0.32). The company had revenue of $458.00 million during the quarter, compared to analyst estimates of $431.99 million. MongoDB had a negative return on equity of 16.22% and a negative net margin of 10.49%. Analysts expect that MongoDB, Inc. will post -2.53 EPS for the current fiscal year.

MongoDB Profile

(Free Report)

MongoDB, Inc provides general purpose database platform worldwide. The company offers MongoDB Atlas, a hosted multi-cloud database-as-a-service solution; MongoDB Enterprise Advanced, a commercial database server for enterprise customers to run in the cloud, on-premise, or in a hybrid environment; and Community Server, a free-to-download version of its database, which includes the functionality that developers need to get started with MongoDB.

See Also

Want to see what other hedge funds are holding MDB? Visit HoldingsChannel.com to get the latest 13F filings and insider trades for MongoDB, Inc. (NASDAQ:MDBFree Report).

Institutional Ownership by Quarter for MongoDB (NASDAQ:MDB)



Receive News & Ratings for MongoDB Daily – Enter your email address below to receive a concise daily summary of the latest news and analysts’ ratings for MongoDB and related companies with MarketBeat.com’s FREE daily email newsletter.

Article originally posted on mongodb google news. Visit mongodb google news

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


We are just getting started: MongoDB’s Sachin Chawla on building solutions for India

MMS Founder
MMS RSS

Posted on nosqlgooglealerts. Visit nosqlgooglealerts

MongoDBbegan its journey in 2007 at the time when cloud computing was taking off and the market for scalable and agile database solutions was opening up. 

An open-source NoSQL database management programme, MongoDB helps in storing and managing data. It allows developers to focus on the data they need without the constraints of traditional relational databases.

Today, the New York-based company holds nearly half of the market share in NoSQL databases category. For context, the NoSQL market has players such as Amazon DynamoDB and Apache Cassandra, and is expected to reach $86.3 billion by 2032, according to Allied Market Research. 

Founded by Dwight Merriman, Eliot Horowitz and Kevin Ryan, MongoDB began its India operations in 2013. 

YourStory spoke with Sachin Chawla, the Vice President for India & South Asia at MongoDB, who oversees the expansion and growth of MongoDB in the APJ region to understand the company’s future plans. 

Chawla has 19 years of experience in sales leadership roles in cloud, global software, SaaS, and IT service sectors, serving at companies such as HCL Technologies, BMC Software, and AWS (Amazon Web Services).

Edited excerpts:

Yourstory (YS): Could you provide an overview of MongoDB’s current position in the Indian market? 

Sachin Chawla (SC): India has one of the world’s largest developer ecosystems with over four million developers, and at least 20% of Forbes 2000 companies have established their development centres in India, making the country a significant hub for MongoDB’s operations. 

Our customers in India include Upstox, Darwinbox, Canara HSBC Life Insurance, Magicpin and TATA AIG General Insurance.

MongoDB has initiated an academic programme aiming to train 500,000 students in India to help foster local talent. 

YS: In what ways does MongoDB’s database management system empower startups in India? 

SC: By prioritising developer productivity, MongoDB empowers Indian startups to streamline and accelerate application development. Being a document-oriented database, MongoDB stores data as documents, providing a natural and developer-friendly approach. 

Documents are self-containned and can be treated as objects, enhancing ease of work for developers. This means that developers can focus on the data they need to store and process, rather than worrying about how to split the data across different rigid tables. 

MongoDB Atlas Data Platform addresses all aspects of application data management. By managing the entire data lifecycle, it eliminates the need for startups to invest in multiple technologies. 

Indian startups using MongoDB include edtech startup PhysicsWallah and neobank Flobiz.

YS: Could you share some initiatives that MongoDB has undertaken to establish itself as a preferred partner for startups in India? 

SC: Globally, MongoDB offers several initiatives for startups through its MongoDB for Startups programme. This initiative provides free credits for MongoDB products, including Atlas Database, Atlas Search, Atlas App Services to help startups deal with their data infrastructure. 

We also offer one-on-one sessions with experts to help founders grow their businesses and solve problems. Startups can engage with MongoDB’s community of startups and developers through events and co-marketing initiatives. 

The programme is intended for startups at Series A or earlier that are building a product or service. MongoDB also works closely with VCs, accelerators, and incubators to refer startups to the programme. 

We also launched the AI Innovators Programme, which includes the AI Startups track for early-stage ventures and the AI Amplify track for more established organisations. The programme provides eligible organisations with up to $25,000 in MongoDB Atlas credits to build AI-powered applications.  

Community events and MUG (MongoDB User Group) sessions aim to bring the developer community together, with existing and new users. We also offer MongoDB University, where anyone can sign up for free to learn MongoDB skills. 

YS: How significant is India for MongoDB?

SC: An IDC report estimates that the database market will be $137 billion by 2026 which is a massive opportunity for us globally. 

The country has more than four million developers across a vibrant ecosystem of startups, enterprises, and SMEs, and we are building solutions for India and the world. India remains a strategic market for MongoDB, we continue to invest in it and we are just getting started!

YS: How many startup clients is MongoDB currently managing in India? 

SC: MongoDB has thousands of customers in India, many of which are startups and Independent Software Vendors (ISVs), spanning early to late-stage development. 

One notable success story is Darwinbox, a tech startup that has experienced growth since it began in 2015. 

The HR Software-as-a-Service (SaaS) platform serves more than 2.2 million daily users. The company started using MongoDB Atlas in December 2017 and MongoDB is its primary database, which helped the company lower costs by 40%.

Another customer example is trading platform Upstox. The platform uses MongoDB Atlas to power the operations of its customers with things like registration, user profile, trading, payments, and ledger. 

YS: How does MongoDB leverage AI, particularly in features like MongoDB Atlas Vector Search?

SC: MongoDB is integrating AI into its products and services, to help developers reduce repetitive tasks and enhance productivity. 

One of the features named MongoDB Atlas Vector Search makes it easy for developers to add generative AI and semantic search features to real-time applications, enabling personalised user experiences. 

Semantic search features refer to capabilities within a search system that go beyond keyword matching to understand the context of words or phrases. 

(The copy was updated to fix a style issue)

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


The Noonification: State of the Noonion 2024: HackerNoon Keeps on Blogging (4/2/2024)

MMS Founder
MMS RSS

Posted on mongodb google news. Visit mongodb google news

.t1a571801-1c50-4a34-9df2-64e17da4a9af {
color: #fff;
background: #222;
border: 1px solid transparent;
border-radius: undefinedpx;
padding: 8px 21px;
}

.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-top {
margin-top: -10px;
}
.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-top::before {
content: “”;
background-color: inherit;
position: absolute;
z-index: 2;
width: 20px;
height: 12px;
}
.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-top::after {
content: “”;
position: absolute;
width: 10px;
height: 10px;
border-top-right-radius: undefinedpx;
border: 1px solid transparent;
background-color: #222;
z-index: -2;
bottom: -6px;
left: 50%;
margin-left: -6px;
transform: rotate(135deg);
}

.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-bottom {
margin-top: 10px;
}
.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-bottom::before {
content: “”;
background-color: inherit;
position: absolute;
z-index: -1;
width: 18px;
height: 10px;
}
.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-bottom::after {
content: “”;
position: absolute;
width: 10px;
height: 10px;
border-top-right-radius: undefinedpx;
border: 1px solid transparent;
background-color: #222;
z-index: -2;
top: -6px;
left: 50%;
margin-left: -6px;
transform: rotate(45deg);
}

.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-left {
margin-left: -10px;
}
.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-left::before {
content: “”;
background-color: inherit;
position: absolute;
z-index: -1;
width: 10px;
height: 18px;
}
.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-left::after {
content: “”;
position: absolute;
width: 10px;
height: 10px;
border-top-right-radius: undefinedpx;
border: 1px solid transparent;
background-color: #222;
z-index: -2;
right: -6px;
top: 50%;
margin-top: -6px;
transform: rotate(45deg);
}

.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-right {
margin-left: 10px;
}
.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-right::before {
content: “”;
background-color: inherit;
position: absolute;
z-index: -1;
width: 10px;
height: 18px;
}
.t1a571801-1c50-4a34-9df2-64e17da4a9af.place-right::after {
content: “”;
position: absolute;
width: 10px;
height: 10px;
border-top-right-radius: undefinedpx;
border: 1px solid transparent;
background-color: #222;
z-index: -2;
left: -6px;
top: 50%;
margin-top: -6px;
transform: rotate(-135deg);
}

Article originally posted on mongodb google news. Visit mongodb google news

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Meta Unveils 24k GPU AI Infrastructure Design

MMS Founder
MMS Anthony Alford

Article originally posted on InfoQ. Visit InfoQ

Meta recently announced the design of two new AI computing clusters, each containing 24,576 GPUs. The clusters are based on Meta’s Grand Teton hardware platform, and one cluster is currently used by Meta for training their next-generation Llama 3 model.

Meta designed the clusters to support their generative AI efforts. The two cluster variants differ in their networking fabric. The Llama 3 cluster uses remote direct memory access (RDMA) over converged Ethernet (RoCE) while the other uses NVIDIA’s Quantum2 InfiniBand. The storage layer is based on Meta’s custom-built Tectonic filesystem, which supports the synchronized I/O needed to handle checkpoints from thousands of GPUs. According to Meta,

These two AI training cluster designs are a part of our larger roadmap for the future of AI. By the end of 2024, we’re aiming to continue to grow our infrastructure build-out that will include 350,000 NVIDIA H100s as part of a portfolio that will feature compute power equivalent to nearly 600,000 H100s.

Meta has a history of open-sourcing their hardware platform and rack designs. In 2021, InfoQ covered Meta’s ZionEX cluster. InfoQ covered the development of the Grand Teton platform and Meta’s open rack design in 2022. As part of that effort, Meta contributed their work to the Open Compute Project, which Meta founded in 2011. In late 2023, Meta and IBM launched the AI Alliance “to support open innovation and open science in AI.”

One of the big challenges Meta faced with the new clusters was the difficulty of debugging at that scale. Meta worked with Hammerspace to build interactive debugging tools for their storage system. Meta also worked on a “distributed collective flight recorder” for troubleshooting distributed training.

While developing the new clusters, Meta ran several simulations to predict their intern-node communication performance. However, “out of the box” the clusters did not perform as well as smaller, optimized clusters; bandwidth utilization during benchmarking was extremely variable. After tuning job schedulers and optimizing network routing in the cluster, this metric was consistently greater than 90%.

Meta also worked on their PyTorch framework implementation to better utilize the cluster hardware. For example, the H100 GPUs support 8-bit floating point operations which can be used to accelerate training. Meta also worked on parallelization algorithms and initialization bottlenecks, reducing init time from “sometimes hours down to minutes.”

In a Hacker News discussion about the Meta clusters, several users lamented that hardware costs can make it difficult to compete in the AI space with “hyper-scale” companies like Meta. AI developer Daniel Han-Chen remarked:

Another way to compete with the big tech incumbents is instead of hardware, try maths and software hacks to level the playing field! Training models is still black magic, so making it faster on the software side can solve the capital cost issue somewhat!

Besides Meta, other AI players have also released details of their large compute clusters. Google recently announced their AI Hypercomputer, based on their new Cloud TPU v5p accelerator hardware. Microsoft Azure’s Eagle supercomputer, which contains 14,400 NVIDIA H100 GPUs, recently placed third on the HPC Top500.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


What is a Serverless Database and When Should You Use One? – TechTarget

MMS Founder
MMS RSS

Posted on nosqlgooglealerts. Visit nosqlgooglealerts

What is a serverless database?

A serverless database is a type of cloud database that is fully managed for an organization by a cloud service provider and runs on demand as needed to support applications. The database system automatically scales up or down when workloads change, and bills are based on the amount of data processing and storage resources that a customer uses.

The term serverless implies that the database runs without the use of servers, but that isn’t technically accurate. Serverless databases rely on servers, storage devices and other IT infrastructure that cloud providers deploy in their data centers. However, a user organization doesn’t need to set up and manage its own servers or compute instances in the cloud. As a result, the databases are effectively serverless from its standpoint.

Serverless databases are one aspect of serverless computing, a broader concept that was initially popularized by Amazon Web Services with its AWS Lambda compute service. AWS introduced Lambda in 2014, and other cloud providers launched similar offerings. In its original form, serverless computing focused on enabling function as a service (FaaS) capabilities, in which microservices run only when needed for a brief period of time as part of an application workflow.

A serverless database isn’t quite the same as FaaS because it requires a persistent data layer that is provided as part of the managed service. However, the database’s query engine runs only as needed, and there are no defined limits on processing capacity, concurrent user connections or number of queries.

How do serverless databases work?

Serverless databases operate in a cloud model that abstracts IT infrastructure provisioning and server management away from the user. Typically, a serverless database doesn’t have dedicated servers and the compute resources that support it aren’t always running. Instead, they’re started — or spun up, in IT parlance — when required by applications.

The process of how serverless database operations work includes the following steps:

  1. A client application makes a request to the database, and the cloud provider routes the request to the serverless database service.
  2. The serverless database automatically spins up the compute resources needed to handle the request. This might be a single compute instance for a simple request or multiple instances for a complex query. Some serverless database providers might offer the option of a warm start where there is a pool of always-on compute instances that are ready to respond to user requests in a multi-tenant environment.
  3. With the compute instance up and running, the server makes data query requests to get whatever data is needed from the storage layer. That is typically a managed cloud storage service, such as Amazon S3 or Microsoft’s Azure Blob Storage.
  4. Once the request is completed, the compute resources are shut down automatically, while the storage layer remains persistent.
  5. When the next request comes in, this process repeats with new compute resources spun up to handle it. The database scales up and down automatically based on workload demands.
  6. The user organization is billed only for the actual compute resources used to process each request.

Serverless database vs. database as a service (DBaaS)

In the cloud, serverless database offerings were predated by database as a service (DBaaS) ones. Both are managed services, and database vendors sometimes use the two terms interchangeably. There are some differences between the technologies, though. With DBaaS, for example, deployments and pricing are often based on a set amount of system resources — sometimes referred to as a T-shirt sizing method, with small, medium and large offerings.

The table below provides more details on the distinctions between the two types of cloud database services.

DBaaS Serverless database
Deployment model Requires users to choose a specific instance size or configuration, which involves estimating resource needs in advance. Automatically provides required compute and storage resources based on application demands, eliminating the need for upfront resource planning.
Resource management Users must manage resource allocation and scaling although the cloud provider might offer tools to assist in the process. Eliminates the need for resource management by automatically scaling system resources up or down based on workloads.
Pricing model Often has a fixed pricing model based on the provisioned resources. On-demand pricing is also available, but users must self-manage resources. Operates on a consumption-based pricing model, charging users based on the resources used during database operations.
IT infrastructure Users have dedicated computing resources for their databases, ensuring consistent and predictable performance. Operates in a shared infrastructure to optimize costs, which might lead to performance fluctuations depending on the activities of other users.
Database administration and management Requires involvement in tasks such as backups, patching, scaling and cost management, although some hands-on work is done by the provider. Significantly reduces management overhead by automatically handling backups, patches, scaling and other database administration tasks.

Potential benefits of using serverless databases

Serverless databases offer user organizations the following potential benefits over conventional self-managed databases and DBaaS deployments:

  • Cost efficiency. The pay-as-you-go approach provides opportunities for more cost-efficient database operations. As opposed to running an on-premises database, there’s no need to pay for server infrastructure and ongoing hardware and software maintenance. Consumption-based pricing under the serverless model can also cost less than DBaaS environments and self-managed databases in the cloud although organizations should closely monitor expenses to avoid unexpected cost overruns.
  • Simplified IT operations. The serverless database model is ideal for organizations that just want their developers to build cloud applications that can be deployed and run without needing to worry about ongoing database management.
  • Auto-scaling of database resources. The core design of serverless databases enables automatic resource scaling without database administrators or developers first having to figure out how much database capacity is required as processing workloads and data needs change.
  • High availability and fault tolerance. A serverless database’s underlying architecture is typically distributed and redundant, which helps to enable highly available and fault-tolerant systems that lower the risk of service outages or failures.
  • Better user experience for developers. Many serverless database services are focused on improving the developer experience by providing APIs and easy interface access to enable rapid application development and deployment.
Potential benefits and disadvantages of serverless databases
These are some of the potential benefits and drawbacks that serverless databases present for organizations.

Serverless database types and examples

As is the case with databases in general, there are different types of serverless databases that provide distinct features and capabilities and cater to different application requirements. For users, the choice between them depends on specific project needs, such as the type of data model being used, scalability requirements and the complexity of the planned data processing operations.

Here are common serverless database categories, along with some examples of database management systems that are offered in each one.

Serverless relational databases

These databases use Structured Query Language (SQL) and the relational model, which organizes data in tables and uses a fixed schema to support data consistency, integrity and reliability. The most widely used database technology overall, relational databases are ideal for processing complex transactions and queries involving structured data.

Examples of serverless relational databases include the following:

  • Amazon Aurora Serverless (AWS).
  • Azure SQL Database serverless (Microsoft).
  • Cloud SQL (Google).
  • CockroachDB Serverless.
  • Oracle Autonomous Database Serverless.
  • PlanetScale.

Serverless NoSQL databases

NoSQL databases offer flexible schema designs and are suitable for handling large volumes of structured, unstructured and semistructured data in applications that require scalable processing. NoSQL itself includes a combination of different database technologies — most notably, key-value stores, document databases, wide column stores and graph databases. Many NoSQL products now support multiple models across those categories plus some level of SQL capabilities.

The following are examples of serverless NoSQL databases:

  • Amazon DynamoDB (AWS).
  • Amazon Neptune serverless (AWS).
  • Azure Cosmos DB serverless (Microsoft).
  • DataStax Astra DB.
  • Fauna.
  • Firestore (Google).
  • MongoDB Atlas.

Specialized serverless databases

Special-purpose databases that are available in serverless versions include time series databases, which are designed to handle time-stamped data collected sequentially, and vector databases that are used for large-scale similarity searches on unstructured data in AI, machine learning and image retrieval applications. Examples of time series serverless databases include InfluxDB Cloud Serverless and Amazon Timestream for both InfluxDB and LiveAnalytics, while Pinecone and Amazon OpenSearch Serverless offer serverless vector database engines.

Key considerations for deciding whether to use a serverless database

There are various factors to consider when deciding whether to use a serverless database or a different option, including the following:

  • On-premises or cloud deployment. One of the first and most fundamental considerations is whether an organization should run an on-premises or cloud database.
  • Application workload patterns. Serverless databases tend to work best for workloads with variable or unpredictable traffic, because they can automatically scale to meet data processing demands.
  • Operational costs. Serverless databases can be cost-effective for applications with sporadic traffic but might become expensive for constant high-volume workloads due to the pay-as-you-go pricing model.
  • Developer efficiency. Evaluate the possibility of reduced operational overhead for developers. Serverless databases generally enable them to focus more on application development and less on database management issues.
  • Performance requirements. Assess the performance characteristics of serverless database technologies, including potential latency issues and the ability to meet application performance benchmarks when workloads are scaling up.
  • Ensure data security and compliance. While providers generally offer robust security features, responsibility for securing application data and managing access controls still ultimately lies with the user.

As part of the evaluation process, organizations should also consider the possible disadvantages of using serverless databases, including the following:

  • Cold-start performance latency. In some serverless database deployments, users can experience latency as the serverless functions initially start up. It’s a phenomenon known as cold starts that could affect performance-sensitive applications.
  • Limited configuration control. The serverless model offers less control over a database’s underlying infrastructure and configuration settings compared to a traditional database deployment.
  • Unpredictable costs. Accurately predicting the cost of a serverless database environment can be difficult due to consumption-based pricing, especially with highly variable workloads.

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Presentation: Survival Strategies for the Noisy Neighbor Apocalypse

MMS Founder
MMS Meenakshi Jindal

Article originally posted on InfoQ. Visit InfoQ

Transcript

Jindal: Ten years ago, I relocated to San Diego. After looking for a while, I finally found a clean, nice apartment. I was super excited. It had a lot of shared amenities, which I thought my family and friends can use whenever they come to visit us. Then there was one noisy neighbor named Shawn. He just loved to do the parties. Most of that weekend, his friend came over and just grabbed all the shared amenities. It got to be such a frustration at the end that we finally decided to move out. You must be thinking why I’m sharing this story with you guys. Noisy neighbor is just not limited to living in real life, now it’s become a common problem in our multi-tenant distributed architectures. I’m here to talk about some of the survival strategies to avoid that drastic step of relocation by our tenants, which is very crucial for our multi-tenant platforms. Single tenant, each application has its own compute, infrastructure, database, happy scenarios, but it comes with a cost if you’re ready to pay for it. Multi-tenant, it can be further categorized into two types. Type 1, where each application has its own compute and infrastructure, but different databases, separation of data concern. Type 2, where applications share both the compute, infrastructure, and the storage. Each one comes with its own set of benefits and challenges. We’re going to talk about the multi-tenant type, which is indeed the one variable to the noisy neighbor problems that we’re going to discuss. What is a noisy neighbor? One application trying to monopolize the system resources, creating downtime for other tenants on your platform, slow performance, degradation. What can contribute to it? Increased request thresholds, resource-hungry payloads. The most well-known which we love, the script error by one of our clients, causing hell on our platform.

Asset Management Platform (Netflix)

I’m going to share some of the noisy neighbor stories from the asset management platform at Netflix. It is a centralized platform used by more than 80 studio applications to store, track, organize, discover, distribute millions of digital assets you can think of in a production or the post-production workflows. An asset is very critical for the production with its unique contribution to the final content. An asset can be created by one application, but it can be discovered by many other applications to stitch the final content. That’s a reason to go with the type 2 that we just saw to support the global discovery of the assets by multiple applications during the production workflows. Content creators are the backbone of the media industries. Imagine the chaos and frustration it is going to cause in the production world if this platform is not accessible. They spend hours to create the media and they’re uploading onto the system, and after upload, asset is not discoverable. Think for a minute, they’re lost. What should I do? Should I try to upload again? Isn’t my asset uploaded, or is it lost? They’re just simply lost if this platform is not reliable. Get ready for an exciting journey behind the scenes world of media asset management work at Netflix. What is a media asset? It can be a single asset like video, audio, image, multi-3D content, or it can be a giant tree of composite assets like camera roll, which is a logical grouping of hundreds of assets in one tree. You must be thinking, why am I sharing it with you? We’ll get to it later.

This platform is designed with a distributed architecture. Smooth functioning of this platform further relies on many other components of the Netflix, like storage, archival, and many other media processing services like encoding, inspection, shotchange analysis, and many other analyses that you can think of that runs on video. Every asset ingested into this platform goes through a validation process and then ingest it into different databases like Cassandra, which is our primary source of truth. Elasticsearch to support the real-time asset discovery. Iceberg, or you can say analytics database, which is to support the data science engineering use cases to get the asset inside the dashboard, or to discover those assets by machine learning platform, to build or train their data models. Every asset operation creates an asset change event, which will listen by this workflow management service. Depending on the change in the state of the asset, it triggers various technical and business workflows, which further cause many other microservices of Netflix. Have you ever encountered a situation where your stable platform suddenly becomes slow, unresponsive? After debugging, you realized there is one traffic coming to your platform and creating a noise in your stable platform? That happened to us. Last year, one of the legacy applications started migrating their assets from siloed application into this centralized platform so that every other application can discover these assets. That resulted in a lot of warnings here and there. You can see some of the instances turned into the warning state, some of the instances turned into the red state. End result, apocalypse: alerts all over the place. Many services got impacted by this. As you can see, we started getting the alerts from our services and the dependent services, and some of the services started getting down, some of the services getting slow.

Pager Alerts

Pager, who loves the pager? We would like to get paged by our alerts not by the client who is getting impacted. In this talk, we’ll share how can we avoid the pagers coming from our clients and we should be paged by ourselves. One noisy traffic resulted in the apocalypse of the shared infrastructure. This can cause widespread slowdowns, crashes, outages, system failures, degraded performance, unavailability. End result, application dissatisfaction and loss of trust. Most crucial for any platform, you want to have a reliable platform for all your tenants, and avoid that, again, drastic step of relocation by your tenants from your platform.

Preventive Strategies

They categorize these strategies into three types: preventive, diagnostic, and the corrective. What are the preventive strategies? These are the proactive steps that we take during the design of our application to make sure that we give a reliable and stable platform to all our tenants. The first and foremost, anticipate and provision the resources. You need to have a deep insight of your architecture and what your tenants are looking for, to provision the resources. You have to provision the resources on the application layer and the infrastructure layer. All that seems easy, we say autoscaling. Autoscaling gives the elasticity in our infrastructure to scale up and down depending on the load on our platform. What makes it difficult to set up these autoscaling policies? Resources are not unlimited. You cannot scale up infinitely, you need to know the limits of your autoscaling. Knowing the limits, you need to know the dependent infrastructure limitations and your dependent services threshold. You want to do the scaling, but you want to do the scaling in such a way that you are not compromising the overall system health. Databases. With our modern distributed architecture, most of the applications try to use distributed databases. We try to design the data partition strategies in such a way that our data is distributed across multiple nodes in the distributed database. Problem happens, issue happens, especially when you want to scale up. How many of you have experienced a situation where you want to scale up your database, you’re trying to scale up horizontally, but things are not working? The only thing which is increasing is your cost, the cost of your infrastructure. What is not getting improved is the performance that you’re looking for. After debugging, what do you realize? You have the hotspots. You have hotspots in your system. You have tombstones. What is a hotspot? Anyone experienced the hotspot problem in your databases when you’re doing scaling? One subset of your database experiencing the high activity, most of the read-writes are going to that particular specific node sitting in your database. Regardless of how much scaling you’re doing, it is not increasing or impacting the performance that you’re looking for. Tombstones. With distributed databases, sometimes when you’re trying to delete a document, they don’t immediately delete that, they mark it to be, to be deleted. If you don’t pay careful attention, and in your flow, you design in such a way that you’re deleting a document and you’re creating it, then it can increase your tombstones. Tombstones start slowly increasing. They are very heavy for the performance and the storage. Now question will come, how you will detect these issues in your design. Believe me, these issues do not show up in your normal traffic, they are surfaced only when you have spiky traffic on your platform. The only way to detect these kinds of things is using your load testing. You should try to load test your system with the expected normal and the heavy traffic so that you pinpoint these issues in your design. If you find it, you don’t want to have the oops scenario in your production. You want to fix it beforehand. You may have to redesign your data partition strategies, or you may have to rebuild your framework. This is what you have to do. You have to do to avoid the apocalypse at the end.

Threads, one of the key resources for computing, it helps us to do the parallel processing so that we can get better performance with less resources. When we started designing the application, we just use the one resource pool. What happens? Slowly we start noticing we have latencies in some of the operations. We are more of a read heavy application, writes are heavy but they are more of spiky traffic because think for a second the footage is coming from a camera roll, and they are trying to create bulk of assets in one go and then settle down. We don’t want that spike in write traffic to create latencies for the read which is going on. It should give the expected latency still to the read clients. Then, what did we do? We started dividing our thread pools in such a way by the operation in the service layer so that one spike in operation is not creating the resources contention for the other operations on the same instance. As shown earlier, the request can come as one asset or it can come in bulk. We don’t expect our users to create the one asset at one time, so we give them a bulk API. They can opt to creep load the assets in bulk to our system. This can create the resource contention for the other requests which are coming in small chunks. For example, if my system is getting a request to create 500 assets in one operation, and at the same time, the request is coming to create the 50 assets or 5 assets, if you’re not chunking them, then that has to wait for 500 assets to be processed before taking care of the 50 or 5 assets. What do we do? We chunk the bulk request into the small and then process them individually, so that we are giving the expected latency regardless of the size of your operation traffic. That helps us to avoid again monopolizing one tenant’s resources on our system and create the resource contention for the other tenants.

Manage dependencies with the discovery services. With distributed databases, we should always try to use the discovery services to connect with the different microservices in your entire platform. It helps us to distribute the load and enables the seamless communication between the services. How many of you are using the discovery service to connect to your database here? Or you’re using the nodes to connect to your database. That happened to us. We were using directly the nodes because that was supported in the previous version of Elasticsearch to connect to the database. There comes a spiky traffic, one of the primary nodes which was serving that particular client got restarted. Then the load went to the replica, but the instances which were connected to that particular node gave the timeouts to the users. The request which is already from x to 10x became 30x now on that replica. That replica also got restarted with that CPU spike. That replica went down, another replica started serving the clients. What is going to happen? This chain of restarting will continue until that traffic settled down, or our retries from the client settled down. How you want to avoid it, by using the discovery service, and the right set of socket timeout settings, so that your client is not seeing those timeouts and not retrying, which is already spike. You want the traffic to stay there. With your timeout settings, discovery service should redirect the traffic from the failover nodes to the healthy node. Now we start doing this practice while connecting to most of the databases if possible.

Retries are good, but not always. You can literally create a retry thunderstorm if you’re not following the good retry practices. Retries sometimes can amplify the problems for your system and for your downstream service. Service can literally smash or cry when you’re simply retrying when you’re already under this spiky load traffic. How can you solve this problem of multi-level retries? In your services, rather than spilling that logic all over the place, we can have a centralized place to handle the exceptions, which will take the call, should I retry on this exception or should I stop? Or if you are retrying, we should try to use random exponential backoffs while retrying so that we are not overloading the downstream services with a similar pattern. Still, especially with the spiky traffic and the noisy neighbor, things can get worse. It may be possible that your service can survive the noisy traffic but one of the dependent services got into some bad state. With retrying, you are making it more worse. Not only that service, now because your service resources are held up by doing the I/O calls to that service, and you’re retrying, your service will also see the resource contention slowly and start giving the timeouts to the services which is calling you, cascading failures. How can you give what you want at that point of time? You want to take a deep breath and you want downstream services also to take a deep breath. How will you do that? Circuit breaker. Give your service and downstream services a chance to take a deep breath and recover. In this pattern, when your service is noticing a request or number of errors while making a call to the downstream service, if the threshold of the error is reached, it just opens up the circuit. That means that calls are not made to the downstream service. After a defined reset time, it tries to pass few calls back to the downstream service. If it is healthy, then it closed the circuit breaker and allowed the calls to be made. If it is still trying to recover, then it keeps a circuit breaker in the open state and no further calls are made to the downstream service.

Embrace eventual consistency. Lily mentioned about how they moved from the synchronous to the asynchronous workflows, very crucial. Not every other request is designed to be synchronous. Try to prioritize your availability over consistencies. We also noticed that if the asset is created by a UI application, there is a user sitting behind the screen and they want to see immediately that asset is uploaded. If the assets are getting uploaded via the bulk studio orchestrator pipelines, they don’t want to see it immediately and they are ok to be asynchronous. We divided up that traffic into two parts: synchronous traffic and the asynchronous traffic. It gives us the ability to scale up our system without impacting the dependent components. It also helps us to recover gracefully. That means your messages are buffered so that it can be retried whenever the dependent components are available. What your end user is looking for is that I uploaded some asset and it should be uploaded at the end. They don’t want to see it immediately, but the guarantee they are looking for that it should be done.

Diagnostic Strategies

With the right set of preventive strategies, we can avoid the cascading impacts of a noisy neighbor, but still problems happen in the real world. We all are learning from it. What we need at that point of time is diagnostic strategies. This is a set of observability techniques, sets of processes that help us to quickly identify the problems and take the corrective actions timely. Imagine yourself sitting in a war room, what exactly are you looking for at that point in time? What is happening in my system? When the issue started in my system, why is this issue happening? Or how much is the impact of that issue on my overall system, because then only you can take that call, what should I do at that point of time? Observability helps you to get the real-time insight of your system health and performance. You need to have a good combination of monitoring, alerting, and discovery in place. Monitoring is to collect the different set of metrics coming from your system. Alerting is to notify you whenever the certain thresholds are breached, because you want to get alerted timely, so that you can take the corrective actions. Discovery is to trace down the request, how it is flowing through your system in a distributed architecture. Because the issue may not be because of some other client, it could be because of your configuration itself, you rolled out some deployment and it is not right, and it may be impacting the entire traffic. You want to discover where exactly the problem is happening in that flow of your request through the system.

We want to collect different types of metrics. Some are known, some are provided by our cloud, like CPU utilization, disk usage, network, disk space, but some are pretty specific to your applications. Because you know what is expected latency for a specific operation. You know what are the dependent services you are looking for, and what type of error messages is ok and what is not ok. You want to set up some custom metrics also, along with the default metrics that comes out of the box with the cloud. Database. Datastore metrics are very crucial. It includes the cluster health, node health, indexing RPS, query RPS. Why are we looking for the datastore metrics here? The reason, applications can be scaled up, but not the databases. It’s a very time-consuming process to scale up your databases. It is not going to happen in seconds or minutes when you need it the most. You have to be ready. If you’re carefully monitoring your datastores, because your applications, systems are evolving, their requirements are evolving. You may notice that there is already at the peak usage of the datastores, if you will observe and get alerted beforehand about the database status, then you can scale it up freehand, you don’t wait for that issue to happen in production, because it’s going to be very costly if you try to fix those issues in production. How can you identify the hotspots? If you try to look at the metrics of your datastore, you can immediately identify there are a few specific nodes, which are noticing the CPU spike, but the overall CPU usage is very down. Check for the datastore’s health metrics very carefully.

Logs are crucial, very important. How many of you log with the context? Whenever I start looking for any legacy application, I have always thrown a bunch of files, look into these files, what is happening in the system? Can you really figure out anything from those logs? It’s very time consuming. How can I increase my velocity to figure out what is happening in my system? By adding the right context into it. Now with all the applications, we just not log the events, what is coming from an application, but also the context along with each event. Which tenant it is coming from. What is the distributed tracing ID? What is the request ID? These logs are only useful when you are putting the right context in these events so that you can immediately figure out what is happening by which tenant on your system. At the same time, logs are expensive, but they’re crucial for debugging. How can we solve that problem? I’m not saying that you should enable all the logs in your system because during the spiky traffic, you’re going to have a spike in the disk usage and your node is going to crash. How can we solve this problem of balancing between the right set of logs? You need the capability in your system to enable or disable the logs at runtime. Some folks are going, dynamic debugging. What does dynamic debugging mean? Dynamic debugging means you have the control on your system, and when you realize that there is a traffic, and there is a spike going on this specific service, I want to know what is going on. I want to turn on my info logs on that specific service only. Java world and different languages call it differently, but they give you the flexibility that you can enable those logs at runtime.

Distributed tracing is very crucial with the distributed architecture, like we noticed, the problems can happen anywhere in the flow of the request processing. You want to pinpoint the exact point of failure, or where the processing is getting delayed, so that you can go and check that specific point in your service. Especially with the multi-tenant architecture, when you’re collecting or instrumenting your metrics, have you ever tried to instrument it with your tenant IDs? This is very crucial. You can feel what I’m talking about, because when you are trying to solve a problem, you want to know who is impacting my system. It could be possible that a spike in the traffic is not breaching your system threshold, but there’s one silent tenant sitting down there, which is getting impacted, because their request pattern is aligned with the spiky traffic coming to your platform. If you have the tenant IDs along with the metrics, you can immediately say that this response time is delayed for this particular tenant, although it’s only 4.1% and only one client, but every other client is important equally to your platform. You have to respect it. By looking at this, if you notice that one tenant is seeing this response time slowness, you should be able to fix it. The same for the error rates and the request rates.

We talked a lot about the metrics, different types of metrics, we noticed, and we collect different sorts of metrics. If you’re sitting in a war room, and you open multiple tabs of metrics, and what you’re doing, you’re thinking. What I’m looking for, actually, I open 10 tabs, 20 tabs, then I’m switching back and forth, which operation is seeing the latency? How much does error rate look like? Which tenant am I looking for? After opening so many tabs, you will be lost, you will lose the connection, what you’re trying to build. You can figure it out but it’s going to take time. What you want is quick action. Quickly identify which tenant is creating the problem in my system, and who is getting impacted in my system? You want to have the right set of filters on your dashboard on an aggregated view, called dashboard, with lots of filters like, what is the cluster? What is the application? What is the latency? It could be p99, which is saying that I’m correct, but there is 1% which is saying I am not correct. You want to find out what is that 1% which is not correct in your system. With that right set of filters, we can figure out which operations are getting impacted with that noisy traffic and how to fix it.

Alerts. I’m sure you must be setting up a lot of alerts in your system. Very crucial. Alerts have to be set up timely and actionable with the context. Last year, I owned a legacy application. I got an alert, midnight pager. I woke up, I tried to look around. I opened up the laptop, check the health of the system, looks fine. I check the logs of the system, it was fine. I went back to sleep, 30 minutes later I got the alert again. I opened my laptop again and tried to grab the coffee, ok, something I’m missing here. I’m not finding the right context. Try to look around, I couldn’t figure out anything. What should I do? I just snooze my alert, I want to sleep. I snooze the alerts, I went back to sleep. Next morning, everybody was looking at me, did you snooze the alerts? Ok, what should I do? I took a deep dive into the system the next morning, what we figured out, that alert was set up a long time back. The threshold that was set up in the alert for the errors is no more relevant, because the traffic is already 20 times on the platform, and that error percentage was very low. What’s the learning here? Alerts are good, but every other alert that you set up in your system, don’t expect your on-call person to know in and out of your system. You should put the right context within your alert, what this alert is about, what are the actionable items if you receive that alert. Also, if possible, try to put some links into your alerts, dashboard links, or some documentation links. Because when you’re sitting in a war room, when you’re getting an alert, that pager means something to you. You want to resolve it quickly. What are the steps to it, strategies to it? Put the right action, right context, and the right links into your alert, so that anyone who’s getting the pager, within 5 minutes, they should be able to know what is going in my system.

Corrective Strategies

With the diagnostic and preventive strategies that we discussed, hopefully our system will remain reliable and stable for all our tenants, but life changes. In the real world, it’s not happy scenario. What do we need? The corrective strategies. Corrective strategies to make our platform reliable. We need to implement the graceful degradation measures into my system. While doing that, you need to have the deep insight of your system architecture. I remember one of the interns joined us, he received an alert that there is a processing delay happening and the task queue depth is growing. The first thing, what’d you do? Scale up your system. He did this scaling up our system. What did it do? It ended up creating more spike of load on our system. That spike was a creation of 10,000 image requests on our system. For every other image asset ingested into our system, based on the workflows, we create 4 thumbnails for each image. By scaling up for those 10,000 requests, he ended up creating 40,000 more asset creation requests on the platform, and those 10,000 requests ended up being 40,000 requests on our platform, more cascading failures all over the place. Before taking any action, make sure you have a deep insight of your system architecture. By taking any corrective action, you are not putting any cascading impacts on your platform with your actions.

Slow down. If you figure out that there is a specific tenant request, which is creating the load on your system, you want to slow it down. If you’re using the asynchronous message processing, one way, you can direct the traffic from that specific tenant from a primary stack to the secondary stack, and then slowly start processing it. It can impact the legitimate traffic from that tenant also. You want to communicate it back to your client that we are going to slow down the processing from your request. This happened in our case. When we communicated this issue back to our clients, they immediately figured out that there is some configuration issue on their side. They fixed their configuration settings and slowed down the RPS in our system, and we moved the traffic back from the backup step to the primary step for the tenant. This is only possible if that particular request is handled asynchronously. If you’re trying to process the request synchronously, you have to take the drastic step of throttling the request. This is the last thing you’d like to do, but we have to do it, no other way. You want to define the tenant resource quotas, limit the request processing rate coming from that tenant, and limit the concurrency from that tenant. Slow down. You want to communicate back again to the users. Make sure when you’re throttling the request, you are sending back the right exception message back to the client. Because it may be possible, they don’t know what is going on. Are you really throttling their request or is it timeout coming from your server? They may consider it as some server error, and for those 30 requests, they will retry and make it 60x for you. Send back the right set of message so they should understand they’re not supposed to retry, they are supposed to settle down, slow down.

Key Takeaways

What are the takeaways for the reliable architecture that we learned with these strategies? Regularly evaluate your system requirements. Things are changing, systems are changing. Our requirements are changing, the same time our client requirements are changing. Make sure you regularly evaluate your system requirements and update your resources configuration: your resources configuration on the server-side, database side. Improve observability. That is a critical aspect of a distributed architecture. You should think about your observability from day one. Issues are going to happen, and you cannot say no to it. With the improved observability in place, you can quickly identify those issues, and fix it timely. Analyze the ad hoc alerts. Never ignore any ad hocs coming your way. They are the indicators of your potential failures in the future. They’re trying to give you a signal that if a spike will happen in your system, it will cry, it will bleed. Make sure you analyze any alert coming to your system wisely. It doesn’t have to be immediate, but you can have some incident response and checking like, ok, what happened in the last one week in my system? Spend some time as an on-call support person to increase the reliability of your platform. Automate the graceful recovery. Every manual intervention is going to take time. It is going to slow down the fixing of the issues. If you can automate those kinds of things, then you can fix these issues without paging the on-call person, and in less amount of time. Collaboration and knowledge sharing with your tenant application is very crucial. We also mentioned collaborate. This is the biggest key point that we miss. We are building a platform, but for whom? For our tenant applications. If we don’t understand what my tenants are looking for, what is their expected SLOs from my platform, then I cannot build a reliable platform. Things may change. If you communicate, if you collaborate with them, then you know that there is expected traffic coming on my way, and you will provision the resources accordingly. Collaboration and knowledge sharing is very crucial when you’re trying to build any platform application to be used by your client applications.

With that said, reliable architecture is not just a one-time process. It’s a continuous journey. We all are learning. I saw a lot of tracks where most of us were talking about reliability, observability. Everyone is talking about their learnings and sharing their knowledge. Good, learn from it, and learn from your incidents. Every noisy traffic comes with its own unique set of challenges and learnings. Make sure you build your muscles from each incident that happens. It will help you to grow your platform for the future. Via diagnostic strategies, if you’re trying to identify the root cause, if you see there is some point which you can improve on, make sure you do it at that time or later. Don’t keep it in the backlog to be done later. It is going to happen in the future, and somebody else will look at you again, why didn’t you do it? Why did you just create a backlog item on it? If you’re taking any short-term solution to fix the issues, which you’re going to take because the impact of the traffic is so long that you want to take some short-term solution, make sure you move it to the long-term solution. Think about it, like, how can I avoid a similar situation in the long term, and try to design your solution. Try to avoid that oops scenario to your client applications. You want to give them a reliable and stable platform, which you can. Learning and putting it in the preventive strategies so that your system can automate those failures and gracefully recover itself rather than trying to page somebody and taking time to fix it.

See more presentations with transcripts

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Realta Investment Advisors Purchases Shares of 519 MongoDB, Inc. (NASDAQ:MDB)

MMS Founder
MMS RSS

Posted on mongodb google news. Visit mongodb google news

Realta Investment Advisors acquired a new stake in MongoDB, Inc. (NASDAQ:MDBFree Report) in the 4th quarter, according to the company in its most recent 13F filing with the SEC. The firm acquired 519 shares of the company’s stock, valued at approximately $212,000.

A number of other hedge funds and other institutional investors have also modified their holdings of the stock. Jennison Associates LLC grew its position in shares of MongoDB by 87.8% in the 3rd quarter. Jennison Associates LLC now owns 3,733,964 shares of the company’s stock valued at $1,291,429,000 after acquiring an additional 1,745,231 shares during the period. 1832 Asset Management L.P. increased its position in MongoDB by 3,283,771.0% during the fourth quarter. 1832 Asset Management L.P. now owns 1,018,000 shares of the company’s stock worth $200,383,000 after buying an additional 1,017,969 shares during the last quarter. Norges Bank acquired a new stake in shares of MongoDB in the fourth quarter valued at approximately $147,735,000. T. Rowe Price Investment Management Inc. increased its holdings in shares of MongoDB by 77.4% during the 4th quarter. T. Rowe Price Investment Management Inc. now owns 568,803 shares of the company’s stock worth $111,964,000 after acquiring an additional 248,133 shares during the last quarter. Finally, Dorsal Capital Management LLC raised its stake in MongoDB by 100.0% in the 4th quarter. Dorsal Capital Management LLC now owns 400,000 shares of the company’s stock valued at $78,736,000 after acquiring an additional 200,000 shares during the period. Institutional investors and hedge funds own 89.29% of the company’s stock.

Wall Street Analyst Weigh In

Several equities analysts have commented on the stock. Barclays upped their price objective on shares of MongoDB from $470.00 to $478.00 and gave the company an “overweight” rating in a report on Wednesday, December 6th. Mizuho raised their price objective on shares of MongoDB from $330.00 to $420.00 and gave the stock a “neutral” rating in a research report on Wednesday, December 6th. Guggenheim upped their target price on MongoDB from $250.00 to $272.00 and gave the company a “sell” rating in a research report on Monday, March 4th. Tigress Financial lifted their price target on MongoDB from $495.00 to $500.00 and gave the stock a “buy” rating in a report on Thursday, March 28th. Finally, Stifel Nicolaus reaffirmed a “buy” rating and issued a $435.00 price objective on shares of MongoDB in a report on Thursday, March 14th. Two analysts have rated the stock with a sell rating, three have assigned a hold rating and nineteen have assigned a buy rating to the company’s stock. Based on data from MarketBeat, the company currently has a consensus rating of “Moderate Buy” and an average price target of $449.85.

Read Our Latest Report on MDB

MongoDB Price Performance

Shares of MDB stock opened at $356.09 on Tuesday. MongoDB, Inc. has a twelve month low of $198.72 and a twelve month high of $509.62. The company has a quick ratio of 4.40, a current ratio of 4.40 and a debt-to-equity ratio of 1.07. The business has a fifty day simple moving average of $413.43 and a 200 day simple moving average of $390.05. The company has a market cap of $25.70 billion, a P/E ratio of -143.58 and a beta of 1.24.

MongoDB (NASDAQ:MDBGet Free Report) last posted its earnings results on Thursday, March 7th. The company reported ($1.03) EPS for the quarter, missing analysts’ consensus estimates of ($0.71) by ($0.32). The company had revenue of $458.00 million during the quarter, compared to the consensus estimate of $431.99 million. MongoDB had a negative return on equity of 16.22% and a negative net margin of 10.49%. On average, sell-side analysts forecast that MongoDB, Inc. will post -2.53 EPS for the current fiscal year.

Insiders Place Their Bets

In other MongoDB news, CFO Michael Lawrence Gordon sold 10,000 shares of the company’s stock in a transaction dated Thursday, February 8th. The stock was sold at an average price of $469.84, for a total value of $4,698,400.00. Following the completion of the transaction, the chief financial officer now owns 70,985 shares of the company’s stock, valued at approximately $33,351,592.40. The sale was disclosed in a legal filing with the SEC, which is available through the SEC website. In other news, CEO Dev Ittycheria sold 33,000 shares of MongoDB stock in a transaction on Thursday, February 1st. The shares were sold at an average price of $405.77, for a total transaction of $13,390,410.00. Following the transaction, the chief executive officer now owns 198,166 shares in the company, valued at $80,409,817.82. The sale was disclosed in a document filed with the SEC, which is available through the SEC website. Also, CFO Michael Lawrence Gordon sold 10,000 shares of the stock in a transaction on Thursday, February 8th. The shares were sold at an average price of $469.84, for a total value of $4,698,400.00. Following the completion of the sale, the chief financial officer now owns 70,985 shares of the company’s stock, valued at $33,351,592.40. The disclosure for this sale can be found here. Over the last quarter, insiders have sold 54,248 shares of company stock valued at $22,970,890. 4.80% of the stock is currently owned by insiders.

MongoDB Profile

(Free Report)

MongoDB, Inc provides general purpose database platform worldwide. The company offers MongoDB Atlas, a hosted multi-cloud database-as-a-service solution; MongoDB Enterprise Advanced, a commercial database server for enterprise customers to run in the cloud, on-premise, or in a hybrid environment; and Community Server, a free-to-download version of its database, which includes the functionality that developers need to get started with MongoDB.

Featured Articles

Want to see what other hedge funds are holding MDB? Visit HoldingsChannel.com to get the latest 13F filings and insider trades for MongoDB, Inc. (NASDAQ:MDBFree Report).

Institutional Ownership by Quarter for MongoDB (NASDAQ:MDB)



Receive News & Ratings for MongoDB Daily – Enter your email address below to receive a concise daily summary of the latest news and analysts’ ratings for MongoDB and related companies with MarketBeat.com’s FREE daily email newsletter.

Article originally posted on mongodb google news. Visit mongodb google news

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


Mayflower Financial Advisors LLC Acquires 50 Shares of MongoDB, Inc. (NASDAQ:MDB)

MMS Founder
MMS RSS

Posted on mongodb google news. Visit mongodb google news

Mayflower Financial Advisors LLC lifted its holdings in shares of MongoDB, Inc. (NASDAQ:MDBFree Report) by 7.5% during the 4th quarter, according to the company in its most recent filing with the Securities and Exchange Commission (SEC). The institutional investor owned 716 shares of the company’s stock after purchasing an additional 50 shares during the period. Mayflower Financial Advisors LLC’s holdings in MongoDB were worth $293,000 at the end of the most recent reporting period.

Other institutional investors and hedge funds have also added to or reduced their stakes in the company. KB Financial Partners LLC bought a new position in MongoDB in the second quarter worth approximately $27,000. Blue Trust Inc. boosted its holdings in MongoDB by 937.5% in the fourth quarter. Blue Trust Inc. now owns 83 shares of the company’s stock worth $34,000 after acquiring an additional 75 shares in the last quarter. BluePath Capital Management LLC bought a new position in MongoDB in the third quarter worth approximately $30,000. Parkside Financial Bank & Trust raised its stake in shares of MongoDB by 176.5% in the second quarter. Parkside Financial Bank & Trust now owns 94 shares of the company’s stock worth $39,000 after purchasing an additional 60 shares during the last quarter. Finally, AM Squared Ltd purchased a new stake in shares of MongoDB in the third quarter worth approximately $35,000. Institutional investors own 89.29% of the company’s stock.

Wall Street Analysts Forecast Growth

Several analysts have recently commented on MDB shares. Redburn Atlantic reissued a “sell” rating and issued a $295.00 price objective (down from $410.00) on shares of MongoDB in a research note on Tuesday, March 19th. Truist Financial increased their price objective on MongoDB from $440.00 to $500.00 and gave the stock a “buy” rating in a research note on Tuesday, February 20th. KeyCorp increased their price objective on MongoDB from $500.00 to $543.00 and gave the stock an “overweight” rating in a research note on Wednesday, February 14th. Piper Sandler increased their price target on MongoDB from $425.00 to $500.00 and gave the company an “overweight” rating in a research report on Wednesday, December 6th. Finally, Barclays increased their price target on MongoDB from $470.00 to $478.00 and gave the company an “overweight” rating in a research report on Wednesday, December 6th. Two analysts have rated the stock with a sell rating, three have given a hold rating and nineteen have issued a buy rating to the stock. Based on data from MarketBeat, the company presently has a consensus rating of “Moderate Buy” and a consensus target price of $449.85.

Check Out Our Latest Analysis on MDB

Insider Transactions at MongoDB

In other news, Director Dwight A. Merriman sold 2,000 shares of the firm’s stock in a transaction on Thursday, February 8th. The stock was sold at an average price of $465.37, for a total value of $930,740.00. Following the completion of the transaction, the director now directly owns 1,166,784 shares of the company’s stock, valued at $542,986,270.08. The transaction was disclosed in a filing with the Securities & Exchange Commission, which is available through this hyperlink. In related news, CFO Michael Lawrence Gordon sold 10,000 shares of MongoDB stock in a transaction on Thursday, February 8th. The stock was sold at an average price of $469.84, for a total transaction of $4,698,400.00. Following the completion of the sale, the chief financial officer now owns 70,985 shares of the company’s stock, valued at $33,351,592.40. The transaction was disclosed in a filing with the Securities & Exchange Commission, which is available through this link. Also, Director Dwight A. Merriman sold 2,000 shares of MongoDB stock in a transaction on Thursday, February 8th. The shares were sold at an average price of $465.37, for a total value of $930,740.00. Following the sale, the director now directly owns 1,166,784 shares of the company’s stock, valued at approximately $542,986,270.08. The disclosure for this sale can be found here. Insiders sold 54,248 shares of company stock valued at $22,970,890 over the last three months. Company insiders own 4.80% of the company’s stock.

MongoDB Price Performance

MongoDB stock opened at $356.09 on Tuesday. MongoDB, Inc. has a one year low of $198.72 and a one year high of $509.62. The business has a fifty day moving average price of $413.43 and a 200-day moving average price of $390.05. The company has a quick ratio of 4.40, a current ratio of 4.40 and a debt-to-equity ratio of 1.07.

MongoDB (NASDAQ:MDBGet Free Report) last posted its quarterly earnings results on Thursday, March 7th. The company reported ($1.03) EPS for the quarter, missing analysts’ consensus estimates of ($0.71) by ($0.32). MongoDB had a negative return on equity of 16.22% and a negative net margin of 10.49%. The company had revenue of $458.00 million during the quarter, compared to the consensus estimate of $431.99 million. As a group, equities analysts anticipate that MongoDB, Inc. will post -2.53 EPS for the current year.

About MongoDB

(Free Report)

MongoDB, Inc provides general purpose database platform worldwide. The company offers MongoDB Atlas, a hosted multi-cloud database-as-a-service solution; MongoDB Enterprise Advanced, a commercial database server for enterprise customers to run in the cloud, on-premise, or in a hybrid environment; and Community Server, a free-to-download version of its database, which includes the functionality that developers need to get started with MongoDB.

See Also

Want to see what other hedge funds are holding MDB? Visit HoldingsChannel.com to get the latest 13F filings and insider trades for MongoDB, Inc. (NASDAQ:MDBFree Report).

Institutional Ownership by Quarter for MongoDB (NASDAQ:MDB)



Receive News & Ratings for MongoDB Daily – Enter your email address below to receive a concise daily summary of the latest news and analysts’ ratings for MongoDB and related companies with MarketBeat.com’s FREE daily email newsletter.

Article originally posted on mongodb google news. Visit mongodb google news

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.


From Postgres to ScyllaDB NoSQL, with a 349x Speed Boost – The New Stack

MMS Founder
MMS RSS

Posted on nosqlgooglealerts. Visit nosqlgooglealerts

<meta name="x-tns-categories" content="Data / Software Development / Storage“><meta name="x-tns-authors" content="“>

From Postgres to ScyllaDB NoSQL, with a 349x Speed Boost  – The New Stack

What Is our P(doom) Level?

P(doom) is Silicon Valley’s latest hot metric, an approximation of how worried you are that AI, once fully cognizant, will destroy humanity. Inversely proportional to e/accs (the “effective accelerationists”).

0-25: AI will usher in a new age of utopianism.

0%

26-50: What, me worry?

0%

51-75: We’ll probably be OK with some government oversight.

0%

76-100: I’m stocking up on batteries and canned food now.

0%

2024-04-01 11:27:16

From Postgres to ScyllaDB NoSQL, with a 349x Speed Boost 

sponsor-scylladb,sponsored-post-contributed,

How Coralogix cut query processing times from 30 seconds to 86 milliseconds – and a peek at its next optimizations with WebAssembly and Rust.


Apr 1st, 2024 11:27am by


Featued image for: From Postgres to ScyllaDB NoSQL, with a 349x Speed Boost 

Image from Vladimir Ivankin on Shutterstock.

Speed matters for Coralogix, an observability platform that dev teams trust to spot incidents before they escalate into problems. Coralogix uses a real-time streaming analytics pipeline, providing monitoring, visualization and alerting capabilities without requiring indexing.

One of Coralogix’s key differentiators is a distributed query engine for fast queries on mapped data from a customer’s archives in remote storage. That engine queries semi-structured data stored in object storage (Google Cloud Storage, S3) using a specialized Parquet format. It was originally designed as a stateless query engine on top of the underlying object storage, but reading Parquet metadata during query execution introduced an unacceptable latency hit. To overcome this, the team developed a metadata store (simply called “metastore”) to enable faster retrieval and processing of the Parquet metadata needed to execute large queries.

The original metastore implementation, built on top of PostgreSQL, wasn’t fast enough for the company’s needs. So, the team tried a new implementation – this time, with ScyllaDB. Spoiler: It worked. The team achieved impressive performance gains – cutting query processing time from 30 seconds to 86 milliseconds. Let’s take an in-depth look at how they achieved this and also peek at how they’re planning to further optimize it with WebAssembly User-Defined Functions (UDFs) and Rust.

Metastore Motivation and Requirements

Before getting into the metastore implementation details, let’s take a step back and look at the rationale for building a metastore in the first place.

“We initially designed this platform as a stateless query engine on top of the underlying object storage, but we quickly realized that the cost of reading Parquet metadata during query execution is a large percentage of the query time,” explained Dan Harris, principal software engineer at Coralogix. They realized that they could speed this up by placing it in a fast storage system that they could query quickly (instead of reading and processing the Parquet metadata directly from the underlying object storage).

They envisioned a solution that would:

  • Store the Parquet metadata in a decomposed format for high scalability and throughput
  • Use bloom filters to efficiently identify files to scan for each query
  • Use transactional commit logs to transactionally add, update and replace existing data in the underlying object storage

Key requirements included low latency, scalability in terms of both read/write capacity and scalability of the underlying storage. And to understand the extreme scalability required, consider this: a single customer generates 2,000 Parquet files per hour (50,000 per day), totaling 15TB per day, resulting in 20GB in Parquet metadata alone for a single day.

The Initial PostgreSQL Implementation

“We started the initial implementation on Postgres, understanding at the time that a non-distributed engine wouldn’t be sufficient for the long run,” Harris acknowledged. That original implementation stored key information such as “blocks,” representing one-row group and one Parquet file. This includes metadata like the file’s URL, row group index and minimal details about the file. For example:

To optimize reading, they used bloom filters for efficient data pruning. “Eventually, we want to support something like full-text search. Basically, when we’re ingesting these files into our system, we can build a bloom filter for all the distinct tokens that we find in the file. Then, based off a particular query, we can use those bloom filters to prune the data that we need to scan,” Harris explained.

They stored bloom filters in a block-split setup, breaking them into 32-byte blocks for efficient retrieval. They’re stored independently so the system doesn’t have to read the entire bloom filter at query time.

Additionally, they stored column metadata for each Parquet file. For example:

Harris explained: “The files that we’re writing are quite wide, sometimes as many as 20,000 columns. So, by reading only the metadata that we need, we can really reduce the amount of IO required on any given query.”

ScyllaDB Implementation

Next, let’s look at the ScyllaDB implementation as outlined by Harris’ teammate, Sebastian Vercruysse, senior software engineer at Coralogix.

Blocks Data Modeling

The block modeling had to be revisited for the new implementation. Here’s an example of a block URL: s3://cgx-production-c4c-archive-data/cx/parquet/v1/team_id=555585/…

…dt=2022-12-02/hr=10/0246f9e9-f0da-4723-9b64-a12346095d25.parquet

The bold part is the customer’s top-level bucket; inside the bucket, items are partitioned by hour. In this case, what should be used as the primary key?

  • (Table url)? But some customers have many more Parquet files than other customers, and they wanted to keep things balanced.
  • ((Block url, row group))? This uniquely identifies a given block, but it would be difficult to list all the blocks for a given day because the timestamp is not in the key.
  • ((Table url, hour))? That works because if you have 24 hours to query, you can query quite easily.
  • ((Table url, hour), block url, row group)? That’s what they’ve selected. By adding the block URL and row group as clustering keys, they can easily retrieve a specific block within an hour, which also simplifies the process of updating or deleting blocks and row groups.

Bloom Filter Chunking and Data Modeling

The next challenge: how to verify that certain bits are set, given that ScyllaDB doesn’t offer out-of-the-box functions for that. The team decided to read bloom filters and process them in the application. However, remember that they are dealing with up to 50,000 blocks per day per customer, each block containing 262KB for the bloom filter part. That’s a total of 12GB – too much to pull back into the application for one query. But they didn’t need to read the whole bloom filter each time; they needed only parts of it, depending on the tokens involved during query execution. So, they ended up chunking and splitting bloom filters into rows, which reduced the data read to a manageable 1.6 megabytes.

For data modeling, one option was to use ((block_url, row_group), chunk index) as the primary key. That would generate 8,192 chunks of 32 bytes per bloom filter, resulting in an even distribution with about 262 KB per partition. With every bloom filter in the same partition, it would be easy to insert and delete data with a single batch query. But there’s a catch that affects read efficiency: You would need to know the ID of the block before you could read the bloom filter. Additionally, the approach would involve accessing a substantial number of partitions; 50K blocks means 50K partitions. And as Vercruysse noted, “Even with something as fast as ScyllaDB, it’s still hard to achieve sub-second processing for 50K partitions.”

Another option (the one they ultimately decided on): ((table url, hour, chunk index), block url, row group). Note that this is the same partition key as the blocks one, with an added index to the partition key that represents the nth token required by the query engine. With this approach, scanning five tokens spanning a 24-hour window results in 120 partitions — an impressive improvement compared to the previous data modeling option.

Furthermore, this approach no longer requires the block ID before reading the bloom filter, allowing for faster reads. Of course, there are always trade-offs. Here, due to the blocked bloom filter approach, they have to split a single bloom filter into 8,192 unique partitions. This ends up limiting ingestion speed compared to the previous partitioning approach that allowed ingesting all bloom filter chunks at once. However, the ability to quickly read a given block within an hour is more important to them than fast writes, so they decided that this trade-off was worth it.

Data Modeling Woes

Not surprisingly, moving from SQL to NoSQL involved a fair amount of data modeling rework, including some trial and error. For example, Vercruysse shared, “One day, I figured out that we had messed up min and max timestamps – and I wondered how I was going to fix it. I thought maybe I could rename the columns and then somehow make it work again. But, here you cannot rename a column if it’s part of a clustering key. I thought I could perhaps add new columns and run an UPDATE query to update all rows. Unfortunately, this doesn’t work in NoSQL either.”

Ultimately, they decided to truncate the table and start over again vs. writing migration code. Their best advice on this front is to get it right the first time. 🙂

Performance Gains

Despite the data modeling work required, the migration paid off nicely. For the metastore block listing:

  • Each node currently handles 4 to 5 terabytes.
  • They’re currently processing around 10K writes per second with P99 latency consistently below one millisecond.
  • The block listing results in about 2,000 parquet files in an hour; with their bloom filters, they’re processed in less than 20 milliseconds. For 50K files, it’s less than 500 milliseconds.

They also do checking of bits. But, for 50K Parquet files, 500 milliseconds is fine for their needs.

In the column metadata processing, the P50 is quite good, but there’s a high tail latency. Vercruysse explained: “The problem is that if we have 50K Parquet files, our executors are fetching all of these in parallel. That means we have a lot of concurrent queries and we’re not using the best disks. We assume that’s at the root of the problem.”

ScyllaDB Setup

Notably, Coralogix moved from first discovering ScyllaDB to getting into production with terabytes of data in just two months (and this was a SQL-to-NoSQL migration requiring data modeling work, not a much simpler Cassandra or DynamoDB migration).

The implementation was written in Rust on top of the ScyllaDB Rust driver and they found ScyllaDB Operator for Kubernetes, ScyllaDB Monitoring and ScyllaDB Manager all rather helpful for the speedy transition. Since offering their own customers a low-cost observability alternative is important to Coralogix, the team was pleased by the favorable price-performance of their ScyllaDB infrastructure: a three-node cluster with:

  • 8 vCPU
  • 32 GiB memory
  • ARM/Graviton
  • EBS volumes (gp3) with 500 MBps bandwidth and 12k IOPS

Using ARM reduces costs and the decision to use Elastic Block Storage (EBS) (gp3) volumes ultimately came down to availability, flexibility and price-performance. They admitted, “This is a controversial decision, but we’re trying to make it work and we’ll see how long we can manage.”

Lessons Learned

Their key lessons learned here:

  • Keep an eye on partition sizes: The biggest difference in working with ScyllaDB vs. working with Postgres is that you have to think rather carefully about your partitioning and partition sizes. Effective partitioning and clustering key selection make a huge difference for performance.
  • Think about read/write patterns: You also have to think carefully about read/write patterns. Is your workload read-heavy? Does it involve a good mix of reads and writes? Or, is it predominantly write-heavy? Coralogix’s workloads are quite write-heavy because they’re constantly ingesting data, but they need to prioritize reads because read latency is most critical to the business.
  • Avoid EBS: The team admits they were warned not to use EBS: “We didn’t listen, but we probably should have. If you’re considering using ScyllaDB, it would probably be a good idea to look at instances that have local SSDs instead of trying to use EBS volumes.”

Future Plans: WebAssembly UDFs with Rust

In the future, they want to find the middle ground between writing large enough chunks and reading unnecessary data. They’re splitting the chunks into roughly 8,000 rows and believe they can split them further into 1,000 rows, which could speed up their inserts.

Their ultimate goal is to offload even more work to ScyllaDB by taking advantage of User Defined Functions (UDFs) with WebAssembly. With their existing Rust code, integrating UDFs would eliminate the need to send data back to the application, providing flexibility for chunking adjustments and potential enhancements.

Vercruysse shared, “We already have everything written in Rust. It would be really nice if we can start using the UDFs so we don’t have to send anything back to the application. That gives us a bit more leeway to play with the chunking.”

Watch the Complete Tech Talk

You can watch the complete tech talk and skim through the deck in our tech talk library.

YOUTUBE.COM/THENEWSTACK

Tech moves fast, don’t miss an episode. Subscribe to our YouTube
channel to stream all our podcasts, interviews, demos, and more.

Group
Created with Sketch.

TNS owner Insight Partners is an investor in: Kubernetes.

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.