Big Data & Tools with NoSQL
  • Big Data & Tools
  • ReadMe
  • Big Data Overview
    • Overview
    • Job Opportunities
    • What is Data?
    • How does it help?
    • Types of Data
    • The Big 4 V's
      • Variety
      • Volume
      • Velocity
      • Veracity
      • Other V's
    • Trending Technologies
    • Big Data Concerns
    • Big Data Challenges
    • Data Integration
    • Scaling
      • CAP Theorem
      • Optimistic concurrency
      • Eventual consistency
      • Concurrent vs. Parallel Programming
    • Big Data Tools
    • No SQL Databases
    • What does Big Data learning means?
  • Linux & Tools
    • Overview
    • Linux Commands - 01
    • Linux Commands - 02
    • AWK
    • CSVKIT
    • CSVSQL
    • CSVGREP
  • Data Format
    • Storage Formats
    • CSV/TSV/Parquet
    • Parquet Example
    • JSON
    • HTTP & REST API
      • Terms to Know
        • Statefulness
        • Statelessness
        • Monolithic Architecture
        • Microservices
        • Idempotency
    • REST API
    • Python
      • Setup
      • Decorator
      • Unit Testing
      • Flask Demo
      • Flask Demo - 01
      • Flask Demo - 02
      • Flask Demo - 03
      • Flask Demo - 04
      • Flask Demo - 06
    • API Testing
    • Flask Demo Testing
    • API Performance
    • API in Big Data World
  • NoSQL
    • Types of NoSQL Databases
    • Redis
      • Overview
      • Terms to know
      • Redis - (RDBMS) MySql
      • Redis Cache Demo
      • Use Cases
      • Data Structures
        • Strings
        • List
        • Set
        • Hash
        • Geospatial Index
        • Pub/Sub
        • Redis - Python
      • Redis JSON
      • Redis Search
      • Persistence
      • Databases
      • Timeseries
    • Neo4J
      • Introduction
      • Neo4J Terms
      • Software
      • Neo4J Components
      • Hello World
      • Examples
        • MySQL: Neo4J
        • Sample Transactions
        • Sample
        • Create Nodes
        • Update Nodes
        • Relation
        • Putting it all together
        • Commonly used Functions
        • Data Profiling
        • Queries
        • Python Scripts
      • More reading
    • MongoDB
      • Sample JSON
      • Introduction
      • Software
      • MongoDB Best Practices
      • MongoDB Commands
      • Insert Document
      • Querying MongoDB
      • Update & Remove
      • Import
      • Logical Operators
      • Data Types
      • Operators
      • Aggregation Pipeline
      • Further Reading
      • Fun Task
        • Sample
    • InfluxDB
      • Data Format
      • Scripts
  • Python
    • Python Classes
    • Serialization-Deserialization
  • Tools
    • JQ
    • DUCK DB
    • CICD Intro
    • CICD Tools
      • CI YAML
      • CD Yaml
    • Containers
      • VMs or Containers
      • What container does
      • Podman
      • Podman Examples
  • Cloud Everywhere
    • Overview
    • Types of Cloud Services
    • Challenges of Cloud Computing
    • High Availability
    • Azure Cloud
      • Services
      • Storages
      • Demo
    • Terraform
  • Data Engineering
    • Batch vs Streaming
    • Kafka
      • Introduction
      • Kafka Use Cases
      • Kafka Software
      • Python Scripts
      • Different types of Streaming
    • Quality & Governance
    • Medallion Architecture
    • Data Engineering Model
    • Data Mesh
  • Industry Trends
    • Roadmap - Data Engineer
    • Good Reads
      • IP & SUBNET
Powered by GitBook
On this page
  • Critical Characteristics of Microservices:
  • Advantages:
  • Disadvantages:
  1. Data Format
  2. HTTP & REST API
  3. Terms to Know

Microservices

This approach structures an application as a collection of loosely coupled services. Microservices often favor stateless architectures for scalability and resilience.

PreviousMonolithic ArchitectureNextIdempotency

Last updated 1 year ago

Microservices architecture is a method of developing software applications as a suite of small, independently deployable services. Each service in a microservices architecture is focused on a specific business capability, runs in its process, and communicates with other services through well-defined APIs. This approach stands in contrast to the traditional monolithic architecture, where all components of an application are tightly coupled and run as a single service.

Critical Characteristics of Microservices:

  1. Modularity: The application is divided into smaller, manageable pieces (services), each responsible for a specific function or business capability.

  2. Independence: Each microservice is independently deployable, scalable, and updatable. This allows for faster development cycles and easier maintenance.

  3. Decentralized Control: Microservices promote decentralized data management and governance. Each service manages its data and logic.

  4. Technology Diversity: Teams can choose the best technology stack for their microservice, leading to a heterogeneous technology environment.

  5. Resilience: Failure in one microservice doesn't necessarily bring down the entire application, enhancing the system's overall resilience.

  6. Scalability: Microservices can be scaled independently, allowing for more efficient resource utilization based on demand for specific application functions.

  • Data Ingestion Microservices: Collect and process data from multiple sources.

  • Data Storage: Stores processed weather data and other relevant information.

  • User Authentication Microservice: Manages user authentication and communicates with the User Database for validation.

  • User Database: Stores user account information and preferences.

  • API Gateway: Central entry point for API requests, routes requests to appropriate microservices, and handles user authentication.

  • User Interface Microservice: Handles the logic for the user interface, serving web and mobile applications.

  • Data Retrieval Microservice: Fetches weather data from the Data Storage and provides it to the frontends.

  • Web Frontend: The web interface for end-users, making requests through the API Gateway.

  • Mobile App Backend: Backend services for the mobile application, also making requests through the API Gateway.

Advantages:

  • Agility and Speed: Smaller codebases and independent deployment cycles lead to quicker development and faster time-to-market.

  • Scalability: It is easier to scale specific application parts that require more resources.

  • Resilience: Isolated services reduce the risk of system-wide failures.

  • Flexibility in Technology Choices: Microservices can use different programming languages, databases, and software environments.

Disadvantages:

  • Complexity: Managing a system of many different services can be complex, especially regarding network communication, data consistency, and service discovery.

  • Overhead: Each microservice might need its own database and transaction management, leading to duplication and increased resource usage.

  • Testing Challenges: Testing inter-service interactions can be more complex compared to a monolithic architecture.

  • Deployment Challenges: Requires robust DevOps practices, including continuous integration and continuous deployment (CI/CD) pipelines.

Sample architecture diagram of GCWeather System