This is a continuation of an article that describes operational considerations for hosting solutions on Azure public cloud.
There are
several references to best practices throughout the series of articles we wrote
from the documentation for the Azure Public Cloud. The previous article focused
on the antipatterns to avoid, specifically the busy frontend antipattern. This
one focuses on monolithic persistence antipattern.
This antipattern
occurs when a single data store hurts performance due to resource contention.
Additionally, the use of multiple data sources can help with virtualization of
data and query.
A specific
example of this antipattern is when applications save transactional records,
logs, metrics and events to the same database. The online transaction
processing benefits from a relational store but logs and metrics can be moved
to a log index store and time-series database respectively. Usually, a single
datastore works well for transactional data but this does not mean documents
need to be stored in the same data store. An object storage or document
database can be used in addition to a regular transactional database to allow
individual documents to be shared without any impact to the business
operations. Each document can then have its own web accessible address.
This antipattern
can be fixed in one of several ways. First, the data types must be listed, and
their corresponding data stores must be assigned. Many data types can be bound
to the same database but when they are different, they must be passed to the
data stores that handles them best. Second, the data access patterns for each
data type must be analyzed. If the data
type is a document, a CosmosDB instance is a good choice. Third, if the
database instance is not suitable for all the data access patterns of the given
data type, it must be scaled up. A premium sku will likely benefit this case.
Detection of
this antipattern is easier with the monitoring tools and the built-in
supportability features of the database layer. If the database activity reveals
significant processing, contention and very low data rate, it is likely that
this antipattern is manifesting.
Examine the work
performed by the database in terms of data types which can be narrowed down by
callers and scenarios, may reveal just the culprits that are likely to be
causing this antipattern
Finally,
periodic assessments must be performed on the data storage tier.
No comments:
Post a Comment