시스템 엔지니어(SE)로서 서버에 대해 이해해야 할 기본 지식을 정리해드릴게요.


---

1. 서버의 개념과 역할

서버(Server)는 네트워크를 통해 클라이언트(Client)에게 서비스를 제공하는 컴퓨터 또는 소프트웨어를 의미합니다.

웹 서버: 클라이언트(브라우저) 요청을 처리하고 웹페이지를 제공 (예: Apache, Nginx, Tomcat)

데이터베이스 서버: 데이터를 저장하고 관리하는 역할 (예: MySQL, PostgreSQL, DB2)

애플리케이션 서버: 비즈니스 로직을 수행하는 역할 (예: Spring Boot, Node.js)

파일 서버: 파일을 저장하고 공유하는 서버 (예: FTP, NAS)



---

2. 서버 환경 구성 요소

서버를 운영하기 위해 필요한 주요 환경을 알아야 합니다.

2.1. 운영체제(OS)

리눅스(Linux): 서버 환경에서 가장 많이 사용됨 (Ubuntu, CentOS, Rocky Linux)

윈도우 서버(Windows Server): 기업 환경에서 많이 사용됨


2.2. 웹 서버(Web Server)

Apache HTTP Server: 오픈소스 웹 서버, PHP 환경에서 많이 사용됨

Nginx: 빠르고 가벼운 웹 서버, 정적 파일 처리와 로드 밸런싱에 강점

Tomcat: Java 기반 웹 애플리케이션 실행 환경 (Servlet, JSP 지원)


2.3. 데이터베이스(DB)

관계형 데이터베이스(RDBMS): MySQL, PostgreSQL, DB2

NoSQL: MongoDB, Redis


2.4. 네트워크(Network)

IP 주소: 서버의 네트워크 주소 (공인 IP vs. 사설 IP)

포트(Port): 특정 서비스로의 연결을 구분 (예: 80(HTTP), 443(HTTPS), 3306(MySQL))

방화벽(Firewall): 보안 설정, 특정 포트 차단 또는 허용



---

3. 서버 관리 기본 개념

3.1. 서버 접근 방법

SSH (Secure Shell): 원격에서 서버에 접속하는 프로토콜 (ssh user@server-ip)

FTP/SFTP: 파일 전송 프로토콜 (FileZilla 사용 가능)


3.2. 서버 배포

JAR 파일 배포: java -jar app.jar 명령어로 실행

WAR 파일 배포: Tomcat의 webapps 폴더에 업로드 후 실행

Docker 배포: 컨테이너화된 환경에서 배포 (docker run -d -p 8080:8080 app)


3.3. 서버 모니터링

로그(Log) 관리:

Linux: /var/log/syslog, /var/log/nginx/access.log

Spring Boot: logs/app.log


프로세스 확인:

실행 중인 프로세스 확인: ps aux | grep java

포트 점유 확인: netstat -tulnp | grep 8080



3.4. 보안

방화벽 설정: ufw allow 8080 (Ubuntu), firewalld (CentOS)

SSL 인증서 적용: HTTPS 설정 (Let’s Encrypt 사용 가능)

권한 관리: chmod(파일 권한 변경), chown(소유권 변경)



---

4. 서버 운영 자동화 및 클라우드

CI/CD (Jenkins, GitHub Actions): 코드 변경 시 자동 배포

클라우드 (AWS, GCP, Azure): 서버를 직접 운영하지 않고 클라우드 서비스 이용

가상화 (Docker, Kubernetes): 컨테이너 기반 배포로 확장성 증가



---

이 정도 개념을 익히면 SE로서 서버를 이해하고 관리하는 데 도움이 될 거예요. 추가로 궁금한 부분이 있으면 알려주세요!


반응형

'서버' 카테고리의 다른 글

[서버]도메인  (0) 2025.05.23
[서버]웹 서비스 개념  (0) 2025.04.05
[서버]애플리케이션 서버  (0) 2025.04.02
[서버]REST API(Representational State Transfer API)  (0) 2025.03.30

+ Recent posts