infra
Platform

모듈 맵

[Infra Ops] Modern Web/WAS 아키텍처와 서버 운영 SRE 핵심 직무

0 / 52 완료

펼치기
0 / 52 완료0%

Infra-ops · 01 / 52

[Infra Ops] Modern Web/WAS 아키텍처와 서버 운영 SRE 핵심 직무

인프라 엔지니어의 역할과 업무 범위를 이해하고, 운영계/통시계/개발계 환경 구조와 서비스 변경관리 흐름을 파악합니다

초급351 / 52
🚨INCIDENT ALERT
HIGH

입사 첫 주, 선임 엔지니어가 이렇게 말합니다. "오늘 저녁 운영 배포 있어요. 같이 들어와요." 배포는 왜 새벽에 하는지, 왜 그렇게 많은 사람이 참여하는지, 왜 개발팀 서버랑 운영 서버가 따로인지 — 이 모든 것들이 '인프라 서비스 운영'의 기초입니다.

코드를 짜는 사람이 아니라 코드가 돌아가는 환경을 책임지는 사람. 그게 인프라 엔지니어입니다.

이번 챕터에서 배울 것
  • 1인프라 엔지니어의 역할과 담당 레이어를 설명할 수 있다
  • 2운영계/통시계/개발계의 차이와 분리 이유를 설명할 수 있다
  • 3서비스 구조도(Web→WAS→DB 흐름)를 읽고 구성 요소를 파악할 수 있다
  • 4개발자·DBA·인프라 엔지니어의 업무 분장을 구분할 수 있다
  • 5변경관리(Change Management) 흐름의 기본 단계를 말할 수 있다
실습 환경 준비
이 트랙의 실습 기준 OS 확인
cat /etc/os-release | grep -E 'NAME|VERSION'
현재 서버 역할 확인 (호스트명 확인)
hostname && hostname -f
기본 네트워크 상태 확인
ip addr show | grep 'inet '

인프라 엔지니어가 담당하는 레이어

서비스를 운영하는 데 필요한 기술 스택은 여러 레이어로 나뉩니다. 인프라 엔지니어는 하드웨어부터 미들웨어까지의 영역을 담당합니다.

💡개념

인프라 엔지니어의 책임 범위

서비스 장애가 났을 때 "코드는 멀쩡한데 서버가 문제"라는 말이 나오는 순간, 그것을 책임지는 사람이 인프라 엔지니어입니다. 개발자가 만든 코드가 실제 트래픽을 처리하려면 OS, 네트워크, 미들웨어가 빈틈없이 받쳐줘야 하고, 그 레이어를 소유하는 사람이 바로 인프라 엔지니어입니다. 어느 레이어가 누구 책임인지 명확히 알아야 장애 상황에서 빠르게 움직일 수 있습니다.

인프라 서비스 운영 — 환경 분리 구조와 업무 분장

서비스 스택을 계층으로 나누면 다음과 같습니다:

┌─────────────────────────────────┐
│  애플리케이션 (비즈니스 로직)     │ ← 개발자 담당
├─────────────────────────────────┤
│  WAS (Tomcat, JBoss, WebLogic)   │ ← 인프라 + 개발자 협업
├─────────────────────────────────┤
│  Web Server (Nginx, Apache)      │ ← 인프라 엔지니어 담당
├─────────────────────────────────┤
│  OS (Linux, Windows Server)      │ ← 인프라 엔지니어 담당
├─────────────────────────────────┤
│  서버 하드웨어 / 가상화            │ ← 인프라 엔지니어 / IDC
└─────────────────────────────────┘

인프라 엔지니어의 핵심 업무:

  • OS 설치 및 초기 설정 (사용자, 네트워크, 보안)
  • Web/WAS 미들웨어 설치·구성·운영
  • 서버 용량 계획 및 리소스 모니터링
  • 배포 스크립트 작성 및 배포 수행
  • 장애 대응 및 로그 분석
  • 방화벽 오픈 요청, DNS/SSL 인증서 관리

인접 역할과의 경계:

역할담당 영역
개발자비즈니스 로직, API, 소스 코드
DBADB 스키마 설계, 쿼리 최적화, 백업 정책
인프라 엔지니어OS, 네트워크, Web/WAS, 배포, 모니터링
보안팀보안 정책, 취약점 점검, 계정 관리 정책

실제 현장에서는 인프라 엔지니어가 이 네 영역을 모두 겸하는 경우도 많습니다.

인프라 엔지니어의 책임 범위

💡개념

운영계 / 통시계 / 개발계 구조

"개발계에서는 됐는데 운영에 올리니까 안 돼요"라는 제보를 받은 날, 원인을 찾아보니 개발계 DB와 운영계 DB의 데이터 상태가 완전히 달랐습니다. 환경이 분리돼 있다는 것은 알았지만 왜 분리해야 하는지 몰랐던 것입니다. 실제 고객 트래픽과 데이터가 흐르는 운영계에서 테스트 코드를 돌리거나 임의로 재시작을 걸면, 서비스가 멈추고 데이터가 오염됩니다. 환경 분리는 이 사고를 구조적으로 막는 방법이고, 인프라 엔지니어가 어느 환경에서 작업하는지 항상 확인해야 하는 이유입니다.

환경 구분:

환경별칭목적특징
Development개발계, DEV개발자 기능 구현 및 단위 테스트자유로운 변경, 실 데이터 없음
Staging통시계, STG운영 배포 전 최종 검증운영과 동일 구성, 운영 유사 데이터
Production운영계, PROD실제 서비스 운영실 트래픽, 실 데이터, 고가용성

운영계에서 절대 하면 안 되는 것:

  • 검증되지 않은 설정 변경 직접 적용
  • 테스트 목적의 임의 재시작
  • 운영 DB에서 직접 UPDATE/DELETE 수행 (긴급 상황 제외, 승인 필요)
  • root 비밀번호 변경 또는 계정 삭제
로컬 터미널
# 현재 접속된 서버가 어느 환경인지 확인하는 습관
hostname
# web01-prd → 운영계
# web01-stg → 통시계
# web01-dev → 개발계

# 환경변수로 환경을 구분하기도 함
echo $APP_ENV
# production / staging / development

실무 팁: 호스트명에 -prd, -stg, -dev 같은 접미사를 붙이는 것은 실수로 잘못된 환경에 작업하는 것을 방지하는 효과적인 방법입니다.

담당 서버 환경 파악 실습
🔍실행 후 확인할 것
  • 호스트명에 prd/prod가 있으면 운영계 — 모든 작업 전 재확인 필수
  • 실행 중인 서비스 목록으로 nginx/apache(Web), tomcat(WAS), mysql/postgresql(DB) 역할 파악

서비스 구조도 읽기

인프라 엔지니어가 처음 해야 할 일은 담당 서비스의 구조도를 파악하는 것입니다.

💡개념

일반적인 3-Tier 서비스 구조

처음 서버에 들어갔을 때 어떤 프로세스가 어떤 역할인지 모르면 장애 상황에서 어디를 봐야 할지 막막합니다.

3-Tier 서비스 구조 — 트래픽 흐름과 계층별 역할 고객 민원이 들어왔는데 Nginx가 문제인지 Tomcat이 문제인지 DB가 문제인지 구분 못 하면, 복구 시간이 수십 분에서 몇 시간으로 늘어납니다. 서비스 구조도를 머릿속에 그릴 수 있어야 "어디서부터 확인할지"를 바로 판단할 수 있습니다. 대부분의 웹 서비스는 Web → WAS → DB의 3계층 구조를 가집니다.

[클라이언트 브라우저]
        │ HTTPS :443
        ▼
[L4/L7 Load Balancer] ← VIP: 10.0.0.1
        │
   ┌────┴────┐
   ▼         ▼
[Web01]   [Web02]    ← Nginx (정적 파일, SSL 종단, Reverse Proxy)
   │         │         포트: 80, 443
   └────┬────┘
        │ HTTP :8080
   ┌────┴────┐
   ▼         ▼
[WAS01]   [WAS02]    ← Tomcat (JSP/서블릿, 비즈니스 로직)
   │         │         포트: 8080, 8443
   └────┬────┘
        │ JDBC :3306
        ▼
[DB Primary]         ← MySQL/MariaDB
[DB Standby]         ← 복제(Replication), 장애 시 승격

각 구성요소의 역할:

  • LB (로드밸런서): 트래픽을 여러 서버에 분산. VIP 하나로 여러 서버를 묶음
  • Web Server (Nginx): 정적 파일(.html, .js, .css, 이미지) 직접 처리. 동적 요청은 WAS로 전달
  • WAS (Tomcat): Java 애플리케이션 실행. DB 연결, 비즈니스 로직 처리
  • DB: 영구 데이터 저장. Primary-Standby 이중화로 가용성 확보

인프라 엔지니어가 관리하는 범위: LB부터 DB까지의 모든 서버와 구성

변경관리(Change Management) 흐름

운영 환경에서의 작업은 반드시 절차를 따릅니다. "빨리 해야 해서 대충 했다"가 가장 큰 장애 원인 중 하나입니다.

💡개념

운영 변경관리 표준 흐름

주말 오전에 긴급 패치를 적용했는데 서비스가 전면 다운됐습니다. 알고 보니 영향도 분석을 빠뜨리고 연계 서비스를 확인하지 않았던 것입니다. 운영 환경에서 "빨리 해야 한다"는 압박에 절차를 건너뛰면, 장애 복구에 걸리는 시간이 원래 작업 시간의 열 배를 넘기기도 합니다. 변경 전 백업과 롤백 계획이 없으면 단순한 설정 오타 하나가 몇 시간짜리 장애로 이어집니다.

1. 변경 요청 접수
   └─ 개발팀 또는 내부 요청 → 지라 티켓, 이메일 등

2. 영향도 분석
   └─ 어떤 서버? 어떤 서비스? 중단 필요 여부? 롤백 가능?

3. 작업 계획서 작성
   └─ 작업 내용, 작업 시간, 담당자, 롤백 절차 명시

4. 사전 승인 (팀장/운영 담당)
   └─ 긴급 장애 대응은 사후 보고로 대체하기도 함

5. 사전 백업
   └─ 설정 파일, 데이터, 현재 버전 → cp/tar/스냅샷

6. 작업 수행
   └─ 계획서대로 순서대로, 변경 로그 기록

7. 작업 후 검증
   └─ 서비스 정상 동작 확인, 로그 오류 없음 확인

8. 결과 보고
   └─ 완료 보고, 이상 시 롤백 수행 후 원인 분석

실제로 자주 일어나는 실수:

  • 사전 백업 없이 설정 파일 수정 → 원복 불가
  • 영향도 분석 누락 → 연계 서비스 장애
  • 개발계에서 검증하지 않고 운영에 직접 적용
  • 작업 후 검증 없이 "됐겠지" → 다음날 오전에 민원
로컬 터미널
# 설정 파일 변경 전 반드시 백업하는 습관
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.$(date +%Y%m%d%H%M)
# 결과: nginx.conf.bak.202501151430
서버 환경 파악 기본 점검
🔍점검 결과 해석
  • hostnamectl 출력에서 호스트명에 -prd/-stg/-dev가 있는지 확인
  • ss -tlnp에서 80/443(Web), 8080(WAS), 3306/5432(DB) 포트가 보이면 어떤 역할의 서버인지 추측 가능
  • df -h에서 / 또는 /var의 사용률이 80%를 넘으면 즉시 용량 점검 필요
💼
실무 맥락
현업 패턴

실제 업무에서 이 지식이 쓰이는 상황:

인프라 엔지니어의 하루는 크게 정기 운영대응 업무로 나뉩니다.

정기 운영에는 일일 서버 상태 점검(CPU/메모리/디스크/서비스 상태), 예정된 패치 및 업데이트, 배포 수행, 용량 계획 보고가 포함됩니다.

대응 업무는 모니터링 알림에 따른 장애 대응, 개발팀의 방화벽/계정/환경 설정 요청 처리, 보안 취약점 조치입니다.

"이 서버가 운영계인지 개발계인지"를 항상 확인하는 습관이 가장 중요합니다. 실제 현장에서 잘못된 환경에 작업해서 장애를 내는 경우가 상당히 많습니다.

다음 모듈에서는 새 서버를 받았을 때 처음 해야 할 초기 설정 — hostname, timezone, 계정, SSH 보안 설정 — 을 다룹니다.

지식 확인

퀴즈 — 4문제

Q1

운영계(Production)와 개발계(Development)를 분리하는 가장 중요한 이유는?

Q2

인프라 엔지니어가 서버에 변경 작업을 수행하기 전에 가장 먼저 해야 하는 것은?

Q3

다음 중 인프라 엔지니어(서버/운영팀)의 담당 업무로 가장 적절한 것은?

Q4

통시계(Staging)의 역할로 가장 정확한 설명은?

0 / 4 답변

🧪 실습으로 확인하기

Nginx 설치 및 기동

초급

Linux 서버에 Nginx를 설치하고 systemd 서비스로 등록하여 80포트에서 응답하는 상태까지 만든다.

30📋 3단계💻 직접 환경
실습 시작하기 →

이것도 배워보세요

infra-ops입문 · 60
[Infra Ops] Linux 핵심 파일시스템 구조와 권한(chmod) 체계 완벽 요약
인프라 서비스 운영 트랙 계속
linux입문 · 30
[Linux] 개발자가 왜 리눅스 서버와 커맨드라인을 반드시 배워야 하는가
Linux 트랙 시작점