서버 간 네트워크 연결
- 네트워크란?컴퓨터 간에 물리적으로 케이블을 통해 연결한다.
- 컴퓨터와 컴퓨터를 연결하는 것을 의미한다.
- 데이터센터 내에 위치한 서버들은 모두 서로간에 연결되어있으며, 외부와 연결할 수 있는 통로가 존재한다.
데이터센터(Internet Data Center)와 역할

- IDC 회사
- 데이터센터 내 공간을 임대해주는 역할을 한다. 즉 서버 일부분을 임대해준다. 그리고 서버가 외부적인 요인에 의해 손상되지 않도록 네트워크를 관리하고 항온,항습 및 전력관리 물리적인 손상이 없도록 보안관리를 한다**.**
- IT 회사
- IDC회사로부터 데이터센터의 서버를 임차한다. 임차한 서버컴퓨터에 서버를 구매, 설치, 관리한다. 또한 서버의 OS 및 소프트웨어를 관리한다.
온프레미스(On-premise) - 기존 자체 설비
기업의 서버를 자체적으로 보유한 전산실 서버에 직접 설치하여 운영하는 방식
- AWS와 같은 클라우드 컴퓨팅 기술이 나오기 이전에 기업의 일반적인 인프라 구축 방식
- 장점 및 단점
- 장점 - 기업의 비지니스 정보를 보안성 높게 관리 가능
- 단점 - 시스템을 구축하는데 있어서 많은 시간과 비용이 소모 됨
- 온프레미스(On-premise) ↔ 오프프레미스(Off-premise): 클라우드 방식의 서비스
AWS(Amazon Web Server)
AWS의 역할

- AWS
- 물리 서버는 AWS가 구매 및 관리하고 가상화 기술을 통해서 웹상에서 고객에게 대여할 수 있는 서비스를 제공한다. 이와 관련된 물리적 환경과 가상화 계층은 모두 AWS가 관리한다.
- IT 회사
- AWS로부터 물리 서버에서 일정 리소스(CPU/Memory/Disk)를 가상화된 형태로 대여받으며, 대여한 가상화 서버에 설치된 OS에 대한 패치 및 설치 소프트웨어를 관리한다.
서버 가상화(Server Virtualization)

물리적 서버에 가상머신을 통해 사용자가 원하는 때에 원하는 만큼의 서버를 할당받을 수 있음
- 사용자가 사용할 서버를 할당받으려고 할 때, 엔지니어가 직접 서버를 할당하는 것이 아니다.
- 서버 가상화 기술을 통해 물리 서버에서 가상머신을 실행하여 사용자에게 제공한다.
- 따라서 사용자는 물리 서버를 사용하는 것과 차이를 알 수 없다.
※ 하이퍼바이저 : 가상머신(VM)을 생성하고 실행하는 프로세스
컴퓨팅 서비스(Compute Services)
- AWS 컴퓨팅 서비스란?
- 내가 만든 프로그램을 실행시킬 수 있는 환경을 제공하는 서비스
- 기존 자체설비 (On-Premise) 환경에서는 그것이 물리 서버를 의미
- AWS에서는 가상 머신을 이용해 가상 서버 환경을 제공, 물리 서버와 사용상 차이가 없다
- 가장 대표적인 것이 AWS EC2(Elastic Cloud Compute) 서비스이다
- 내가 만든 프로그램을 실행시킬 수 있는 환경을 제공하는 서비스
AWS EC2 (Elastic Cloud Compute)

- 기존 서버에서 실행하는 것과 동일한 유형의 애플리케이션을 호스팅할 수 있는 가상 머신
- 사용자가 할당 받은 가상 머신 한 대를 인스턴스(Instance)라고 함
- 인스턴스 별로 사용자가 원하는 애플리케이션을 실행
EC2
- 서버의 성능을 사용자가 선택하는 것이 가능하며, 성능이 높은 서버일수록 가격이 비싸다
- 성능의 기준은 vCPU, Memory, Storage, Network로 구분이가능
- 사용목적에 따라 미리 정해진 규격을 인스턴스 타입으로 제공
- 사용자는 EC2 인스턴스 생성 과정에서 인스턴스 타입을 선택
AWS EC2 Instance Type
- 규격(Specification)에 따른 성능 차이
- vCPU(EC2 인스턴스에 할당된 가상 CPU 코어 개수)
- 가상 CPU 코어 개수는 물리 CPU 코어의 쓰레드(Thread) 개수를 의미함
- e.g.) 물리 CPU 코어가 3이고, 코어 당 2개의 쓰레드를 제공하면, vCPU는 6
- 개수가 높을수록 동시 연산 처리 성능이 향상
- Memory
- RAM 용량을 나타내며, 클수록 연산 처리에 유리
- Storage
- EC2 인스턴스에서 사용할 수 있는 디스크 볼륨의 용량과 처리량(Throughput), IOPS(Input/Output Per Seconds)을 나타냄
- 처리량: 초당 데이터 전송량
- IOPS: 초당 I/O 연산 수행 횟수(I/O 연산이란 디스크에 대한 읽기/쓰기 작업을 나타냄)
- 처리량 = IOPS X 연산당 데이터 전송 크기
- ⇒ e.g.) 1,000 X 4 Kbytes = 4 Mbytes / Seconds
- 스토리지 유형(SSD, HDD 등)에 따라 성능과 비용에 차이가 있으며, 기본적으로 최대 IOPS와 처리량 제한
- 스토리지 중 EBS 범용 SSD 타입의 경우 기본적으로 3,000 IOPS 및 125Mbytes/s 성능을 보장
- Network
- 네트워크 대역폭(Bandwidth)을 결정
- 초당 얼마의 데이터를 전송할 수 있는가를 결정하게 됨
- Gbps(Giga bit per seconds) 단위로 나타냄
- 더 빠른 네트워크 성능을 가진 인스턴스일수록 비용이 높아짐
- 네트워크 대역폭(Bandwidth)을 결정
- vCPU(EC2 인스턴스에 할당된 가상 CPU 코어 개수)
EC2 스토리지 선택사항
EBS(Elastic Block Store)와 인스턴스 스토어(Instance Store)
- 인스턴스 스토어는 EC2 인스턴스가 동작하는 물리 서버에 직접 연결된 물리 디스크
- EBS는 초저지연 네트워크를 통해 연결된 네트워크 기반 가상 스토리지 서비스
EBS ( Elastic Block Store )
- 데이터 영구 보관
- EBS 볼륨에 문제 발생 시 복구 가능
- 스냅샷(Snapshot) 기능과 특정 시점 복구 기능(Point-in-time Recovery)
- EBS 볼륨 내 데이터 암호화 가능
- 탄력적 볼륨 지원(크기조정, 성능 조정 가능)
Instance Store
- 데이터 영구 보관 불가
- 중지(Stop) 후 시작 시 데이터 삭제
- 종료(Terminate) 시 모든 데이터 삭제
- 물리 디스크 문제 발생 시 복구 불가
- EBS에 비해 빠른 성능
ELB(Elastic Load Balancing)
로드밸런싱(Load Balancing)

- 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위해 사용되는 기술
- S/W나 H/W를 통해 로드밸런싱을 수행할 수 있음
- 서비스 사용자의 요청을 서버로 분산해서 전달
ELB(Elastic Load Balancing) 유형
- ALB(Application Load Balancer)
- OSI 7 Layer 중 Application Layer에 속하는 패킷을 처리할 수 있음
- HTTP/HTTPS 프로토콜
- NLB(Network Load Balancer)
- OSI 7 Layer 중 Transport Layer에 속하는 패킷을 처리할 수 있음
- TCP 프로토콜
- CLB(Classic Load Balancer)
- OSI 7 Layer 중 Network 및 Transport Layer에 속하는 패킷을 처리할 수 있음
- 과거에 사용되던 방식으로 호환성을 위해 유지되는 상태
ELB(Elastic Load Balancing) 옵션
- 인터넷 트래픽용(Internet-Facing)
- 인터넷을 통해 ELB에 접근하는 경우
- → 즉, Public IP를 가진 클라이언트에서 접근하는 경우
- 단, ELB가 Private IP:Public IP 쌍을 가지므로, Privarte IP 클라이언트에서도 사용 가능하다.
- 내부 내트워크 트래픽용
- 내부 네트워크에서 ELB에 접근하는 경우
- → 즉, Private IP를 가진 클라이언트에서 접근하는경우
- 이 경우는 주로 전용선을 통해 인터넷을 거치지 않고 VPC에 연결되는 경우나 혹은 VPN을 통해 Private IP를 이용해서 통신하는 경우에 활용된다.
ELB(Elastic Load Balancing) 동작 특징
- 상태 확인(Health Check) 서비스
- ELB에서 연결할 서버들의 상태를 상시 체크
- 비정상 상태의 서버로 트래픽을 전달하지 않음
- ELB에서 서버 측에 요청을 전달해서 응답을 받음으로써 처리되므로, 서버의 보안그룹에서 해당 요청을 받을 수 있도록 지정된 포트에 대해 접근을 허용해야 함
- 고가용성(High Availability) 지원 - HA 환경
- ELB를 서로 다른 가용 영역에 해당하는 서브넷에 생성
- 특정 가용 영역에 문제가 발생하더라도 다른 가용 영역의 ELB가 트래픽을 처리
클라우드 개념 3가지

iaas : Infrastructure-as-a-Service
클라우드
💡 IaaS 서비스 제공 업체(CSP)는 인터넷을 통해 인프라 자원을 제공
* 인프라 자원: 네트워크, 스토리지(저장 공간), 서버(+가상화)
*CSP 란 Cloud Service Provider - 클라우드 서비스 공급자 ( 예 : AWS )
사용자
💡 IaaS 사용자는 클라우드 콘솔 또는 API를 통해 인프라를 제어하고, 애플리케이션, 데이터, 운영체제(O/S), 미들웨어 및 런타임을 직접 처리
paas : Platform-as-a-Service
클라우드
💡 iaas 서비스와 마찬가지로 핵심 인프라를 호스팅하고, 운영체제( O/S )와 미들웨어까지 제공
*미들웨어 : 운영 체제와 애플리케이션 사이에서 운영 체제가 제공하지 않는 기능을 제공하는 소프트웨어
예) WAS ( 웹 어플리케이션 서버 )
사용자
💡 사용자는 애플리케이션 개발/배포, 서비스 관리를 담당
saas : Software-as-a-Service
클라우드
💡 CSP가 인프라(IaaS)와 미들웨어(PaaS) 뿐 아니라 애플리케이션 형태로 완전한 소프트웨어를 제공
- 애플리케이션: 응용 프로그램, 최종 사용자에게 제공되는 완전한 소프트웨어 솔루션
사용자
💡 사용자는 웹 브라우저 또는 앱을 통해 소프트웨어에 접속
로드벨런서 ( Elastic Load Balancer ) 언제 사용하는가?
웹 서비스에 과도한 부하로 정상적인 서비스가 어려울 수 있으므로,
이를 회피하기 위해 여 러 대의 서버에 동일한 서비스를 운영할 수 있도록 도와주는
ELB(Elastic Load Balancer) 를 이용해 부하를 분산해서 많은 사용자가 동시에 서비스를 사용할 수 있게 된다.
로드 밸런싱(Load Balancing)
1. 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위해 사용되는 기술
2. S/W나 H/W를 통해 로드밸런싱을 수행할 수 있음
3. 서비스 사용자의 요청을 서버로 분산해서 전달
웹트래픽 부하 발생 시 해결 방법
Scale Up ( 서버 자체의 성능을 확장 )
- CPU, RAM, Disk 성능, Network 대역폭 등 증가
- 비싸고 성능 좋은 서버로 변경
비유하자면 CPU가 i3인 컴퓨터를 i7으로 업그레이드하는 것과 같다.

Scale-out ( 로드 밸런싱과 함께 활용 ) → 자동 확장 ( Auto Scaling )
- 부하를 처리할 서버 대수를 늘림
- 저렴한 서버 여러 대를 이용해 더 많은 부하를 감당
CPU가 i3인 컴퓨터를 여러 대 추가 구입해 운영하는 것 에 비유할 수 있다.
=> 이 경우, 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요하다!!

aws에서 로드벨런싱 하는 방법 4가지
1. Round Robin
다음 순차적으로 서버를 선택하는 방법
2. Hash ( Sticky Session )
클라이언트가 서버와 한 번 연결되면, 그 이후에는 항상 같은 서버로 연결하는 방식
3. Least Connection
연결 수가 가장 적은 서버를 선택
4. 응답 시간
응답속도( ping , ms )가 가장 빠른 서버를 선택
RDS 서비스 ( Relational Database Service )
AWS에서 제공하는 완전 관리형 관계형 데이터베이스
- 클라우드 환경에서 관계형 데이터베이스를 직접 설치 할 필요 없이 몇가지 설정만으로
- 데이터베이스가 실행되는 서버를 생성할 수 있는 서비스
- DB가 설치된 RDS 전용 가상서버 ( EC2와 동일 ) 를 생성
RDS 이용 시 고가용성(High Availability) 확보 방법
Multi-AZ RDS 인스턴스를 추가로 생성하여 원래 RDS 인스턴스에 문제 발생 시 대체해서 사용
과정
- 사용 중인 RDS 인스턴스에 문제 발생
- 정상적인 RDS 인스턴스로 연결
- 비정상 RDS 인스턴스는 문제 처리 후 보조 인스턴스로 전환
( 주 인스턴스를 Primary, 보조 인스턴스를 Standby 라고함 )
- 서로 다른 가용영역(AZ)에 RDS 인스턴스를 배치하여,
- 특정 가용영역에 문제 발생 시에도 서비스 정상 운영 가능 → Multi-AZ의 의미
자동 확장 그룹(Auto Scaling Group)
- 확장/축소에 사용될 EC2 인스턴스의 논리적 집합
- 자동 확장에 의해 늘어나거나 줄어든 대상들의 집합을 의미

자동 확장 그룹(Auto Scaling Group)
– 인스턴스 개수 조정 옵션
- 항상 지정된 수의 인스턴스 유지
- 자동 확장 그룹에서 지정한 인스턴스 개수를 유지
• 2. 수동 조정
- 사용자가 직접 그룹의 인스턴스 개수를 조정
• 3. 일정 기반 조정
- 특정 시간대에 인스턴스를 확장하고, 그 시간대가 지나면 다시 인스턴스를 축소
• 4. 온디맨드 기반 조정
- EC2 지표(Metric)을 기반으로 조정
- 예시) 평균 CPU 사용률이 80% 이상일 때, EC2 인스턴스를 늘림
'CS지식' 카테고리의 다른 글
| [Java] 가비지 컬렉션 ( Garbage Collection ) 개념 및 동작 (1) | 2024.08.05 |
|---|---|
| [Java] 디자인패턴 (2) | 2024.08.04 |
| 운영체제와 WAS 정리 (1) | 2024.08.02 |
| 네트워크 CS지식 (2) | 2024.08.01 |
| 동시성 제어 - 뮤텍스와 세마포어 (3) | 2024.07.31 |