시스템 엔지니어(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 |