Files
papers/crowdstart-commerce/sections/02-background-and-motivation.tex

33 lines
2.0 KiB
TeX

\section{Background and Motivation}
\subsection{E-Commerce Platform Evolution}
Early e-commerce systems (1995--2005) were predominantly monolithic applications backed by relational databases. Platforms such as Magento, osCommerce, and custom solutions built on LAMP stacks dominated the market. These systems offered feature completeness but imposed significant operational burden: database tuning, session management, and vertical scaling became critical operational concerns.
The second generation (2005--2012) introduced service-oriented architectures (SOA), decomposing monoliths into cooperating services. However, SOA implementations often retained stateful assumptions—session affinity, shared caches, and synchronous inter-service communication—that limited horizontal scalability.
\subsection{Cloud Platform Capabilities}
Google App Engine (GAE), introduced in 2008, offered a fundamentally different model: fully managed infrastructure with automatic scaling, but under strict constraints. Applications must be stateless between requests; all persistent state must reside in managed services (Datastore, Memcache, Task Queues).
These constraints, initially viewed as limitations, enable powerful properties:
\begin{itemize}
\item \textbf{Automatic scaling}: Instance count adjusts to request volume without configuration.
\item \textbf{Zero-downtime deployments}: Traffic shifts gradually to new versions.
\item \textbf{Geographic distribution}: Multi-region deployment requires no application changes.
\end{itemize}
\subsection{The Go Programming Language}
Go, released by Google in 2009, provides a compelling foundation for cloud services:
\begin{itemize}
\item Fast compilation enables rapid iteration.
\item Static typing catches errors before deployment.
\item Goroutines and channels simplify concurrent programming.
\item A single static binary simplifies deployment.
\end{itemize}
App Engine added Go support in 2011, making it possible to combine cloud-native architecture with systems-language performance.