Phase 1: Planning & Design

This phase is entirely conceptual and architectural. Before deploying any servers, a System Administrator must gather requirements, select the right environment, and design the architecture, security, and testing scenarios.

System Administrator: Phase 1 Guide

J.63SAM00.001.2

Gathering User Requirements

Detailed Explanation: Before any hardware is purchased or software is configured, a System Administrator must translate business needs into technical specifications. This involves answering critical questions through stakeholder meetings:

Outcome: The output of this phase is a formal System Requirements Specification (SRS) document that dictates all future technical decisions.
J.63SAM00.002.2

Identifying System Environment

Based on the requirements, the administrator decides where the infrastructure will live. The primary choice today is between On-Premises (Physical Data Center), Cloud (AWS, Azure, GCP), or a Hybrid approach.

Figure: Environment Selection Matrix

On-Premises High Capex Full Hardware Control Legacy Compliance HYBRID IT Public Cloud High Opex Infinite Scalability Rapid Deployment
J.63SAM00.003.2

Designing Server Architecture

Creating the technical blueprint of how servers, databases, and networks will connect. A highly available (HA) architecture eliminates single points of failure.

Figure: Highly Available 2-Tier Architecture

Virtual Private Network (VPC) Load Balancer Web/App Tier (Auto-Scaling) Server A Server B Database Tier (Active/Passive) Primary DB Replica DB Data Replication
J.63SAM00.004.2

Designing Security System

Security design relies on "Defense in Depth" (Firewalls, Identity Access, Encryption). Modern system administrators often design network security rules using Infrastructure as Code (IaC).

Code Snippet: Designing Firewall Rules (Terraform / AWS Security Group)

This snippet demonstrates designing a security layer where a Web Server only accepts HTTP/HTTPS traffic, and SSH is strictly limited to an Admin's specific IP address.

# Define Security Group for Web Server
resource "aws_security_group" "web_sg" {
  name        = "web_server_security_guard"
  description = "Allow standard web traffic and restricted SSH"

  # Allow HTTP (Port 80) from anywhere
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  # Allow HTTPS (Port 443) from anywhere
  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  # Allow SSH (Port 22) ONLY from Admin's Office IP
  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["203.0.113.50/32"] # Replace with actual Admin IP
  }

  # Outbound rule: Allow server to access the internet for updates
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1" # All protocols
    cidr_blocks = ["0.0.0.0/0"]
  }
}
J.63SAM00.005.1

Designing Testing Scenarios

Before putting a system into production, the administrator must design scenarios to test if it can handle the load gathered in Step 1. A common scenario is a Stress Test.

Code Snippet: Load Testing Scenario using Apache Benchmark (ab)

The following Bash script automates a scenario where we simulate 1000 users hitting the server, with 100 users accessing it concurrently at the exact same time.

#!/bin/bash
# Server Load Testing Scenario Script

TARGET_URL="http://192.168.1.100/"
TOTAL_REQUESTS=1000
CONCURRENT_USERS=100

echo "========================================="
echo " Initiating Server Load Test Scenario"
echo " Target: $TARGET_URL"
echo " Simulating $TOTAL_REQUESTS total requests"
echo " Concurrency level: $CONCURRENT_USERS"
echo "========================================="

# Run Apache Benchmark tool
# -n = Total number of requests to perform
# -c = Number of multiple requests to make at a time
ab -n $TOTAL_REQUESTS -c $CONCURRENT_USERS $TARGET_URL

echo "========================================="
echo " Test Complete. Review 'Requests per second' "
echo " and 'Failed requests' in the output above."
echo "========================================="