오늘은 학교에서 아마존 미국 본사 AWS 이종현 개발자님의 초청 세미나가 열렸다.
1시간 정도 진행되었던 세미나였는데, 재미있게 들을 수 있었고 이에 대해 정리해 보려고 한다.
AWS EC2?
EC2는 서버 임대 서비스로 전세계적으로 이용되고 있다.
주로 서버, 네트워크, 시큐리티에 신경을 쓰고 있다고 하셨다.
- 가상 서버 제공
- 필요에 따라 서버 용량을 늘리거나 줄일 수 있다
- 사용한만큼만 지불
- 보안기능 제공
- 다양한 인스턴스 유형
- 스토리지 옵션 - ebs, local storage
- 고성능 네트워크 기능
- 모니터링 기능
서버 타입
General (Intel, AMD, Gravition) <- 보통 사용되는 유형이다.
Accelerated, Network/Storage optimized, High performance, Mac instance
Bottleneck 현상
만약 2000대의 컴퓨터를 연결해 놓는다면 각 컴퓨터 안의 8개 각각의 GPU 통신은 빨라도 컴퓨터 간의 GPU 통신은 떨어질 수 있다. 이를 Bottleneck 현상이라고 하며 이를 해결하는 것이 가장 최신 이슈들이라고 하셨다.
Virtualization (가상화)
- 하나의 물리적 서버(host)를 여러 개로 가상화하여 instance 형태로 제공
사용이유
- 컴퓨터를 그대로 빌려주면 사용자가 해킹이나 멀웨어를 심어놓을 위험성이 존재한다.
- host의 전체 자원을 한 사용자에게만 할당하는 것은 비효율적이다. 따라서 가상화를 통해 필요한 만큼의 자원만 할당하고, 나머지 자원은 다른 사용자에게 재분배할 수 있다.
예를 들어, 서버에 코어(CPU 하나에 여러 코어 존재)가 192개가 있는데, 어떤 사용자가 8코어만 빌리고 싶다면 그만큼만 잘라서 제공할 수 있다. 남은 부분은 또 다시 잘라서 다른 고객에게 제공한다.
기존에는 서버의 CPU가 가상화 관련 작업까지 떠맡았다.
따라서 매니지먼트 소프트웨어(가상화 관리 작업)때문에 CPU의 성능이 깎여 나갔다.
AWS는 이를 해결하기 위해 Nitro System을 제공한다.
Nitro System
Nitro : 별도의 PCle카드에 기능을 offload
매니지먼트 소프트웨어를 별도의 PCle카드로 뺀다.
서버의 CPU는 오직 고객의 인스턴스 실행에만 집중할 수 있게 된다.
부가기능
Live migration
- 메모리가 가끔 불량이 날 경우, 고객이 모르게 이쪽 서버에서 다른 서버로 이전시켜준다.
- 중간에 interrupt이 없기 때문에 계속해서 24시간 이용이 가능하다. (고객에게 downtime이 있으면 안됨)
- AWS는 downtime을 최대 1초로 최소화하고 있다고 한다.
Outposts
- 보안을 중시하는 특정 고객의 경우 Outposts 서비스를 통해 AWS가 직접 고객의 데이터 센터에 물리적 서버를 설치하고 관리해준다.
GPU - parallel computing
Network topology
인터넷에서 들어오는 데이터나 요청은 여러 단계의 서브 서비스로 나눠진다.
이는 여러 서버들로 분배된다. (계층적 구조)
Isolated 시스템 - 하나의 서버가 고장 나더라도 계속 이용할 수 있는 서비스를 제공한다.
네트워크 성능이 중요한데, 서버가 다를 때 GPU가 내부에서는 각각 빨라도 서버 간 통신은 느릴 수 있다.
이는 알고리즘으로 만들어 관리해도 완벽하지 않다.
이에 GB200이 나왔다.
GB200

Rack 기반으로 모든 클러스터를 이곳에 넣어버린다.
시스템은 동일한 칩셋 내에서 연결되어있기 때문에, C2C(CPU to CPU) 및 GPU to GPU 의 통신 속도가 빨라져 네트워크 성능을 걱정할 필요가 없다.
- C2C를 이용한 단일 서버 내 CPU,GPU 통신속도 향상
- NVLink를 통한 인접 서버와 GPU간 통신속도 향상
- EFA(Elastic Fabric Adapter)를 통한 Rack간의 통신 속도 향상
마치면서 해주셨던 말씀이 있다.
주니어 개발자 시절 자신이 했던 실수인데, 아무리 단순한 문제여도 바로 코딩에 들어가지말고 잠깐 정리하는 시간을 가지라고 하셨다.
그러면서 장기적으로 쓸 수 있는 코드를 만드는 것이다.
예전에는 매니지먼트 소프트웨어를 서버에서 돌렸고 그걸 당연시했다.
하지만 이제 더 좋은 성능의 컴퓨터와 관리를 제공하는 것을 생각했을 때 떼어버리는 것이 낫겠다는 생각이 나온 것이다.
당연한 것들을 어떻게 더 효율적으로 관리할 수 있을까?
이 물음에서 Innovation이 생긴다는 것을 알아두자.