Skip to content

Web Service Architecture — Complete Guide to Service Design

DodaTech Updated 2026-06-28 4 min read

In this tutorial, you will learn about Web Service Architecture. We cover key concepts, practical examples, and best practices to help you master this topic.

Web service architecture defines how services communicate over a network, covering SOAP, REST, and RPC styles, service layers, message patterns, and deployment topologies for building distributed systems.

What You'll Learn

  • The three main web service architectural styles
  • Service layers and their responsibilities
  • Message exchange patterns (request-response, one-way, notification)

Why It Matters

Choosing the wrong architecture leads to coupling, scalability issues, and maintenance nightmares. Understanding web service architecture helps you design systems that are flexible and maintainable.

Real-World Use

Durga Antivirus Pro threat intelligence platform uses a layered architecture: presentation layer (API gateway), business layer (threat analysis services), and data layer (threat database). Each layer communicates via well-defined service interfaces.

flowchart LR
    A["Presentation Layer"] --> B["Business Layer"]
    B --> C["Data Layer"]
    A --> G["API Gateway"]
    B --> S1["Threat Analysis"]
    B --> S2["User Service"]
    B --> S3["Notification"]
    C --> D["Threat DB"]
    C --> E["User DB"]
    style A fill:#dbeafe,stroke:#2563eb

Code Examples

# Three-layer web service architecture
from flask import Flask, request, jsonify

app = Flask(__name__)

# Presentation layer - handles HTTP concerns
@app.route('/api/threats', methods=['GET'])
def get_threats():
    severity = request.args.get('severity')
    threats = threat_service.list_threats(severity)
    return jsonify({"data": threats, "count": len(threats)})

# Business layer - business logic
class ThreatService:
    def list_threats(self, severity=None):
        threats = ThreatRepository().find_all()
        if severity:
            threats = [t for t in threats if t['severity'] == severity]
        return threats

# Data layer - database access
class ThreatRepository:
    def find_all(self):
        return [{"id": 1, "name": "Ransomware-X", "severity": "high"}]

Expected output: Clean separation of concerns across three layers.

// SOAP vs REST architectural decision
const express = require('express');
const app = express();

// RESTful service (resource-oriented)
app.get('/api/orders/:id', (req, res) => {
  res.json({ orderId: req.params.id, status: 'shipped' });
});

app.post('/api/orders', (req, res) => {
  // Create new order
  res.status(201).json({ orderId: 'ORD-456' });
});

// SOAP-style would use XML envelopes and single endpoint
const soapService = {
  getOrder: (orderId) => ({ orderId, status: 'shipped' }),
  createOrder: (data) => ({ orderId: 'ORD-456' }),
};

Expected output: REST uses resource-oriented URLs; SOAP uses a single endpoint with action routing.

# Request-response message pattern
import xmlrpc.client
import json

# Synchronous request-response (most common)
proxy = xmlrpc.client.ServerProxy('http://api.example.com/xmlrpc')
result = proxy.get_threat_report('2026-06-28')
print(json.dumps(result, indent=2))

# Asynchronous with callback
def async_callback(result):
    print(f"Async result received: {result}")

# One-way (fire-and-forget) pattern
proxy.log_event('INFO', 'System health check passed')

Expected output: Synchronous call returns data immediately; async pattern processes result when available.

Common Mistakes

1. Mixing Presentation and Business Logic

Controllers that contain business logic cannot be reused across different interfaces (web, CLI, API).

2. Tight Coupling Between Services

Services that call each other directly create a distributed monolith. Use asynchronous messaging or gateways.

3. Ignoring Network Latency

In-process method calls are instant; remote service calls take 1-100ms. Batch operations to reduce round trips.

4. No Service Contracts Without documentation

Unclear service contracts lead to integration failures. Always define request/response schemas.

5. Not Planning for Failure

Network calls fail. Implement retries, timeouts, circuit breakers, and graceful degradation.

Practice Questions

  1. What are three web service architectural styles?
  2. Why should presentation and business logic be separated?
  3. What is the difference between synchronous and asynchronous message patterns?
  4. Why is tight coupling problematic in web service architecture?
  5. What is a service contract and why is it important?

Answers:

  1. SOAP (contract-driven), REST (resource-oriented), and RPC (procedure-oriented).
  2. Separation allows each layer to evolve independently and be tested separately.
  3. Synchronous blocks until response; asynchronous continues processing and handles response later.
  4. Tight coupling means a change in one service requires changes in dependent services.
  5. A service contract defines the interface (endpoints, parameters, response format) ensuring predictable integration.

Challenge: Design a three-layer architecture for a document management system. Define the presentation, business, and data layers, their responsibilities, and the contracts between them.

FAQ

What is the difference between SOA and microservices?

: SOA (Service-Oriented Architecture) typically uses an ESB and shared data; microservices are decentralized with per-service databases.

What is an ESB in web service architecture?

: Enterprise Service Bus provides message routing, transformation, and Orchestration between services.

How do you handle distributed transactions in Web Services?

: Use the Saga Pattern (choreography or orchestration) instead of distributed ACID transactions.

What is the role of an API gateway in web service architecture?

: It provides a single entry point, handles cross-cutting concerns, and routes requests to appropriate services.

Should all services expose both SOAP and REST interfaces?

: No, choose one style per service. Offering both doubles maintenance without clear benefit.

Mini Project

Design and implement a three-layer architecture for a URL shortener service. The presentation layer handles HTTP, the business layer handles URL encoding and analytics, and the data layer stores mappings. Each layer has a clear interface contract.

What's Next

Explore Web service performance optimization for scaling architectures, or read about Web service security patterns for securing service communication.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro