서버 아키텍처와 관련 지식 정리
1. 서버 아키텍처의 기본 구성 요소
1) 하드웨어
- CPU: 요청을 처리하는 서버의 두뇌 역할.
- 메모리(RAM): 데이터를 처리하고 애플리케이션이 실행되는 공간.
- 저장장치(Storage): 데이터베이스나 로그를 저장하는 SSD 또는 HDD.
- 네트워크 장비: 네트워크 인터페이스 카드(NIC), 라우터, 스위치 등.
2) 소프트웨어
- 운영체제(OS): 서버에서 실행되는 기본 소프트웨어(예: Linux, Windows Server).
- 웹 서버: 클라이언트 요청을 처리하는 소프트웨어(예: Apache, Nginx).
- 애플리케이션 서버: 동적인 콘텐츠를 제공(예: Tomcat, Node.js).
- 데이터베이스: 데이터를 저장하고 관리(예: MySQL, PostgreSQL, MongoDB).
2. 서버 아키텍처 유형
1) 단일 계층 아키텍처
모든 서버 작업을 하나의 서버에서 수행. 간단하지만 확장성이 낮음.
2) 클라이언트-서버 아키텍처
클라이언트가 요청을 보내고 서버가 응답. 웹 애플리케이션에 흔히 사용됨.
3) 멀티 티어 아키텍처 (3계층 이상)
- 프레젠테이션 계층: 사용자 인터페이스(예: 웹 브라우저).
- 애플리케이션 계층: 비즈니스 로직 처리.
- 데이터 계층: 데이터 저장 및 관리.
예: 웹 브라우저(클라이언트) - 웹 서버 - 데이터베이스 서버.
4) 분산 아키텍처
여러 서버가 서로 협력하여 작업을 처리. 예: 마이크로서비스, 클라우드 서버.
3. 중요 개념 및 기술
1) 로드 밸런싱 (Load Balancing)
여러 서버에 트래픽을 분산시켜 성능과 안정성을 향상. 소프트웨어(HAProxy) 또는 하드웨어(Load Balancer)로 구현.
2) 클러스터링 (Clustering)
여러 서버를 하나의 시스템처럼 동작하게 만듦. 고가용성과 확장성을 제공.
3) 가상화 및 컨테이너화
- 가상화(Virtualization): VMware, Hyper-V 등을 통해 하나의 물리적 서버에 여러 OS 실행.
- 컨테이너화(Containerization): Docker, Kubernetes를 사용해 애플리케이션 배포.
4) 데이터베이스 관리
- 관계형 데이터베이스: SQL 기반(예: MySQL, PostgreSQL).
- NoSQL 데이터베이스: 비정형 데이터 처리(예: MongoDB, Redis).
5) 클라우드 컴퓨팅
Amazon AWS, Microsoft Azure, Google Cloud Platform(GCP) 등을 활용해 확장성 있는 서버 구축.
6) 모니터링 및 로깅
- 모니터링 툴: 서버 상태 및 성능 모니터링(예: Prometheus, Grafana).
- 로깅: 서버 활동 기록(예: ELK Stack).
4. 보안 관련 지식
- 방화벽: 네트워크 트래픽 제어.
- SSL/TLS: 데이터 암호화 및 인증.
- 권한 관리: 서버 사용자와 애플리케이션의 권한 제한.
- 취약점 관리: 패치 및 보안 업데이트.
5. 서버의 배포 및 관리
- CI/CD: 코드의 지속적인 통합 및 배포.
- 인프라 자동화: Ansible, Terraform 등으로 서버 설정 자동화.
- 버전 관리: Git을 통한 소스 코드 관리.