DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Because the DevOps movement has redefined engineering responsibilities, SREs now have to become stewards of observability strategy.

Apache Cassandra combines the benefits of major NoSQL databases to support data management needs not covered by traditional RDBMS vendors.

The software you build is only as secure as the code that powers it. Learn how malicious code creeps into your software supply chain.

Generative AI has transformed nearly every industry. How can you leverage GenAI to improve your productivity and efficiency?

Related

  • Cloud Database Services Compared: AWS, Microsoft, Google, and Oracle
  • Architecting for Resilience: Strategies for Fault-Tolerant Systems
  • Keep Your Application Secrets Secret
  • Cloud Key Management Services Use Cases

Trending

  • How to Merge HTML Documents in Java
  • Enhancing Business Decision-Making Through Advanced Data Visualization Techniques
  • Can You Run a MariaDB Cluster on a $150 Kubernetes Lab? I Gave It a Shot
  • AI Speaks for the World... But Whose Humanity Does It Learn From?
  1. DZone
  2. Data Engineering
  3. Databases
  4. Sample Architecture Using Amazon AWS, Microsoft Azure, Google GCP, MongoDB, and Couchbase

Sample Architecture Using Amazon AWS, Microsoft Azure, Google GCP, MongoDB, and Couchbase

In this article, I explore how we can architect an example using products and components from Amazon AWS, Microsoft Azure, Google GCP, MongoDB, and Couchbase.

By 
Keshav Murthy user avatar
Keshav Murthy
DZone Core CORE ·
Jan. 17, 22 · Analysis
Likes (4)
Comment
Save
Tweet
Share
3.4K Views

Join the DZone community and get the full member experience.

Join For Free
Article Image
A drawing should have no unnecessary lines and a machine no unnecessary parts. 

                William Strunk Jr., Elements of Style

In the book Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems, Martin Kleppmann has written about traits and trade-offs for data infrastructure while designing modern applications. He has given an example architecture for a data system that combines several components. I used this example for the article Example Architectures for Data-Intensive Applications. That article explored just the Couchbase features and functions.

A recent Twitter thread talked about how AWS has many databases, but most “half-baked” services (not my characterization) compete for the same business as DynamoDB!  Could this be a paradox of choice? The theory is, more choices do not usually lead to better outcomes. However, customers do vote with their dollars and cents. So far, they’re picking AWS for the potential savings in the short run. Could this lead to complexity and drive up the cost in the future?

In this article, I explore how we can architect that example using products and components from various Cloud database vendors.

  1. Amazon AWS
  2. Microsoft Azure
  3. Google GCP
  4. MongoDB
  5. Couchbase

Example Reference Architecture

Example architecture for data intensive applications

Amazon AWS

Amazon has choices and a Reddit user has created a decision tree for choosing the databases!  Here's that graphic.

Decision tree for choosing the databases

[Source: Reddit]

Using this guide, let's look at the architecture to make our choices for various components.

Example architecture for data intensive applications - AWS

For the core operational database, you can use DynamoDB (NoSQL), DocumentDB(NoSQL) or Aurora/RDS (RDBMS). Add either Elasticache or MemoryDB for caching. Use Amazon Neptune or Elastic Search service (using OpenSearch). Or use Elastic itself directly.   Either AWS SQS or Kafka provides queuing function for downstream processing.  Amazon Redshift and Amazon Quicksight provide the data warehouse and BI function.  

You'll have to make choices about sizing and workload about each one of them and find a way to stitch them together either by built-in functionality, connectors, and customer application code.  The lines from the reference architecture diagram are intact.  Choice does address your need even if you have to stitch them together.

Microsoft Azure

Example architecture for data intensive applications - Microsoft Azure

Microsoft has grown from a single (Sybase) SQL Server on OS/2 in the 90s plethora of products and services on Azure. This page gives you the Azure databases list and matches them with the right workload requirements. Just like AWS, the choices are plenty.  Interestingly, they don't list the "search" in the database category.  This is typical of database vendors even though most applications that use databases require search. Microsoft has the Azure cognitive search service, not tightly integrated with Cosmos or other services.  You also have the option of deploying Elasticsearch itself.

In the end, this is the same as the AWS diagram above, replaced with Microsoft Azure products.

Google GCP

Similar to AWS and Azure, GCP has plenty of choices for databases from Cloud SQL to Cloud Spanner, Memorystore to Firestore, and Oracle to Bigtable. 

Example architecture for data intensive applications - GCP

Different Cloud, same result. You can pick up from a number of databases, components for cache, queues, and search from GCP and others.  The architecture is the same and the challenges are the same you saw with AWS native solutions.

MongoDB

MongoDB is a scale-out, highly available documented oriented database that meets a number of requirements for a modern database. MongoDB provides a simple get/set API, complex aggregation framework, and distributed transactions. MongoDB reduces the number of components because it has built-in MongoDB Realm functions which can execute serverside logic.  You'd still need a caching layer to meet low latency performance objectives,  While the product is advertised to have built-in text search, its functionality is limited.  So is its capability for complex analytical queries. 

Example architecture for data intensive applications - MongoDB

MongoDB Atlas 

This improves the situation because it has an Atlas search. Atlas search is built using Apache Lucene. This search capability is only available on Atlas and not within the MongoDB product.

Example architecture for data intensive applications - MongoDB Atlas

Couchbase and Couchbase Capella

Couchbase is a shared-nothing, scale-out, highly available, high-performance document-oriented NoSQL database that also meets a number of requirements for a modern database. Couchbase provides simple get/set API, SQL inspired N1QL for both operational and analytical query processing, full-text search, and event processing. It's distributed and supports distributed transactions both for document get/set APIs and N1QL and their combinations. 

Couchbase FTS is built from the ground up and uses the bleve search engine. Couchbase Analytics is an MPP database engine designed for analytics.  And finally, it's the same core product on-prem and on-cloud. 
Example architecture for data intensive applications - Couchbase

Conclusion

On-prem and on-cloud, there are plenty of choices for databases to design data-intensive applications. Do each architect and company have different philosophies: Best of the breed or integrated solution? The answer, of course, is "it depends". Even in this simple example, each database may have optimizations, and would be good to hear from respective experts.
AWS azure MongoDB Architecture Cloud database Database engine Google (verb)

Published at DZone with permission of Keshav Murthy, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Cloud Database Services Compared: AWS, Microsoft, Google, and Oracle
  • Architecting for Resilience: Strategies for Fault-Tolerant Systems
  • Keep Your Application Secrets Secret
  • Cloud Key Management Services Use Cases

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!