What is microservice architecture?

Microservices architecture breaks applications into small, independent services, each focused on a specific business function and able to be developed, deployed, and scaled individually. Unlike monolithic architectures, where all functions are bundled together, microservices communicate over APIs, allowing each service to operate independently and improving resilience, scalability, and agility. This approach supports technology diversity and faster updates but introduces complexity in managing distributed data and inter-service communication. Microservices are ideal for cloud-native, agile environments where rapid innovation and scalability are priorities.

Microservices Architecture vs. Monolithic Architecture:

Feature Microservices Architecture Monolithic Architecture
Structure Application split into independent, smaller services Application built as a single, unified codebase
Scalability Scales individual services as needed Entire application must scale as a whole
Development Independent, parallel development by multiple teams Sequential development; single team coordination
Fault Isolation Failure in one service doesn’t affect others Failure in one component can impact the entire app
Technology Stack Flexible; each service can use different tech stacks Uniform tech stack across the application
Data Management Distributed databases per service Centralized database for the entire application
Communication Services communicate over APIs or messaging queues Internal function calls within the codebase
Maintenance Easier to update and replace individual services Changes require redeployment of the entire app
Complexity Higher operational complexity (managing multiple services) Lower operational complexity (single codebase)
Ideal For Large, scalable, and agile applications Smaller, simpler, or less frequently updated apps

Stan’s robot shop

GitHub Repository: https://github.com/sharqX/robot-shop.git

Stan’s Robot Shop is a microservices-based demo application designed for learning and testing cloud-native technologies and DevOps tools. It simulates an e-commerce website for selling robot parts, featuring services like catalog, cart, orders, payment, and shipping. Each service is containerized and interacts with others through REST APIs, making it ideal for practicing deployments on Kubernetes, Docker, and cloud platforms. It’s widely used to explore concepts like load balancing, service mesh, monitoring, and observability with tools like Prometheus.

Here’s a table outlining the typical services in Stan's Robot Shop application architecture and the tech stack commonly used for each:

Service Tech Stack
Frontend AngularJS (1.x)
Catalog Node.js, MongoDB
Cart Node.js, Redis
Shipping Java, MySQL
User Node.js, MongoDB
Payment Python
Ratings PHP (Apache)
Dispatch Golang
Message Broker RabbitMQ

Deploying locally with minikube

Prerequisites:

Step 1:

Cloning the repository:

git clone <https://github.com/instana/robot-shop.git>

Step 2:

Start minikube: